char *version = "0.1";
char *dirname[MAXPANES] = {0};
+int height = 0;
int pane = 0;
int xoffset = 1;
int yoffset = 2;
+int width = 0;
char *help =
"ret Enter directory\n"
fprintf (fd, "usage: %s [-d dir] [-h] [-w]\n", progname);
fprintf (fd, " -d: dir name (%s)\n", (dirname[0]) ? dirname[0] : ".");
fprintf (fd, " -h: help message\n");
+ fprintf (fd, " -x: screen height (%d)\n", (height) ? height : LINES);
+ fprintf (fd, " -x: screen width (%d)\n", (width) ? width : COLS);
fprintf (fd, "%s version %s\n", progname, version);
return ret;
}
verbose = atoi (arg);
break;
+ case 'x':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: no width specified\n", progname));
+ return usage (1);
+ }
+ width = atoi (arg);
+ break;
+ case 'y':
+ arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
+ if (arg == NULL) {
+ VERBOSE (ERROR, fprintf (stderr, "%s: no height specified\n", progname));
+ return usage (1);
+ }
+ height = atoi (arg);
+ break;
case 'h':
default:
return usage (c != 'h');
curs_set (0);
start_color ();
+ /* check screen size */
+ if ((height == 0) || (height > LINES)) {
+ height = LINES;
+ }
+ if ((width == 0) || (width > COLS)) {
+ width = COLS;
+ }
+
/* init pane windows */
window_t *windir[MAXPANES] = {0};
for (i = 0; i < MAXPANES; i++) {
windir[i] = allocwindow ();
windir[i]->active = (pane == i);
- windir[i]->xoffset = xoffset + COLS / 2 * i;
- windir[i]->xsize = COLS / 2 - 2 * xoffset;
+ windir[i]->xoffset = xoffset + width / 2 * i;
+ windir[i]->xsize = width / 2 - 2 * xoffset;
windir[i]->yoffset = yoffset;
- windir[i]->ysize = LINES - 2 * yoffset;
+ windir[i]->ysize = height - 2 * yoffset;
}
/* init status windows */
window_t *winelem[MAXPANES] = {0};
for (i = 0; i < MAXPANES; i++) {
winelem[i] = allocwindow ();
- winelem[i]->xoffset = xoffset + COLS / 2 * i;
- winelem[i]->xsize = COLS / 2 - 2 * xoffset;
+ winelem[i]->xoffset = xoffset + width / 2 * i;
+ winelem[i]->xsize = width / 2 - 2 * xoffset;
winelem[i]->yoffset = windir[i]->yoffset + windir[i]->ysize + 1;
winelem[i]->ysize = 1;
}
}
break;
case 'h':
- helpwindow (help, (COLS - strmaxlen (help, '\n')) / 2, 3 * yoffset);
+ helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
while (getch () == ERR) {
usleep (200 * 1000);
}
/* test: fm.exe -d not_directory 2>&1 | grep "can't read directory" */
/* test: fm.exe -h | grep usage */
/* test: fm.exe -v 2>&1 | grep missing */
+/* test: fm.exe -x 2>&1 | grep width */
+/* test: fm.exe -y 2>&1 | grep height */
/* test: fm.exe _ 2>&1 | grep invalid */
/* test: { sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe -d . -d /dev -d .. -v 1 */
/* test: { sleep 1; echo h; sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe -d . -d /dev -d .. */
/* test: { sleep 1; echo ; sleep 1; echo; sleep 1; echo -en '\tjikkkkklljllll'; sleep 1; echo -n ilk; sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe */
/* test: { sleep 1; echo -n KKKKK; sleep 1; echo -n IIIII; sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
/* test: { sleep 1; echo -n kkkkkkkkkkkkkkkkkkkkkkkk; sleep 1; echo -n iiiiiiiiiiiiiiiiiiiii; sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
+/* test: { sleep 1; echo -n kkkkkkkkk; sleep 1; echo -n ooo; sleep 1; echo -n uu; sleep 1; echo -n q; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 */
/* vim: set ts=4 sw=4 et: */