Ejemplo n.º 1
0
/* ----------------------------------------------------------------------------
 * 栞 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;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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;
}