/* ---------------------------------------------------------------------------- * 栞 Method / load */ SHIORI_API BOOL __cdecl load(HGLOBAL hGlobal_loaddir, long loaddir_len) { AutoGrobalFree autoFree(hGlobal_loaddir); ATLTRACE2(_T("[SHIORI::load]\n")); unloadImpl(); CAtlString sLoaddir((LPSTR)hGlobal_loaddir, (int)loaddir_len); CPath loaddir(sLoaddir); ATLTRACE2(_T("[SHIORI::load] loaddir = %s\n"), (LPCTSTR)loaddir); api = new CShioriAPI(hinst, loaddir); return true; }
void readmbox(Message *mbox, char *dir, char *subdir) { char *name; Dir *d, *dirp; int i, n; name = estrstrdup(dir, subdir); dirp = loaddir(name, &n); mbox->recursed = 1; if(dirp) for(i=0; i<n; i++){ d = &dirp[i]; if(isnumeric(d->name)) mesgadd(mbox, name, d, nil); } free(dirp); free(name); }
int main(void) { int r, i, pole, topline, col; setlocale(LC_ALL, ""); gulib_init(); initmouse(); askmouse(); /* setmouserep(2); */ graph(&maxx, &maxy, &col); evakuate(0, 0, maxx, maxy); pole=topline=0; scrollcol=bluef+white; loaddir(); for (;;) { r=scrlmenuf(bluef+very+sky, whitef+black, 1, 0, maxx-4, maxy-2, "head", &pole, &topline, poley, putline); switch (r) { case ' ': case spacec: if (lem[pole].size == 0) continue; lem[pole].tag^=1; if (pole < poley) { pole++; if (pole-topline >= maxx-1) topline++; } continue; case escc: break; case enterc: if (lem[pole].size == 0) { char *newpos, *p; lem[pole].filename[strlen(lem[pole].filename)-1] = '\0'; newpos = NULL; if (strcmp(lem[pole].filename, "..")==0) { newpos = malloc(1024); getcwd(newpos, 1024-2); p=strrchr(newpos, '/'); if (p) strcpy(newpos, p+1); strcat(newpos, "/"); } chdir(lem[pole].filename); loaddir(); pole = topline = 0; if (newpos) { for (; pole < poley; pole++) if (strcmp(lem[pole].filename, newpos)==0) break; free(newpos); if (pole >= poley) pole = 0; else if (pole>maxx-5) topline=pole-(maxx-5); } scrlmenu_redraw=REDRAW_FULL; } else { message(10, 10, " %s ", lem[pole].filename); } continue; default: switch (r & 0xff) { case 'c': for (i=0; i<poley; i++) lem[i].tag = 0; scrlmenu_redraw |= REDRAW_TEXT; continue; case 'a': case '*': for (i=0; i<poley; i++) { if (lem[i].size == 0) continue; lem[i].tag ^= 1; } continue; } continue; } break; } gulib_deinit(); return 0; }