free (dirname[panel]);
}
dirname[panel] = strdup (arg);
- CHECKALLOC (dirname[panel]);
+ CHECKALLOC (dirname[panel]);
panel = (panel + 1) % MAXPANELS;
break;
case 'v':
list[i] = exploredir (dirname[i]);
if (list[i] == NULL) {
endwin ();
+ VERBOSE (ERROR, fprintf (stderr, "can't read directory '%s'\n", (dirname[i]) ? dirname[i] : "."));
int _i;
for (_i = 0; _i < MAXPANELS; _i++) {
free (dirname[_i]);
freelist (list[_i]);
freewindow (windir[_i]);
+ freewindow (winelem[_i]);
}
- VERBOSE (ERROR, fprintf (stderr, "can't read directory '%s'\n", (dirname[i]) ? dirname[i] : "."));
+ freewindow (winmenu);
+ freewindow (winscreen);
return 1;
}
}
free (dirname[i]);
freelist (list[i]);
freewindow (windir[i]);
+ freewindow (winelem[i]);
}
+ freewindow (winmenu);
+ freewindow (winscreen);
return 0;
}
/* test: fm.exe _ 2>&1 | grep invalid */
/* Basic 2 panels view and quit */
-/* test: { sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d . -d /dev -d .. -v 1 */
+/* test: mkfifo .a && { sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d . -d /dev -d .. -v 1 && rm .a */
/* test: { sleep 1; echo -en '\eq'; sleep 1; echo -en '\e'; sleep 1; echo -en '\eq'; sleep 1; echo; } | fm.exe */
/* Help */
/* Navigation */
/* test: { sleep 1; echo ; sleep 1; echo; sleep 1; echo -en '\tjikkkkklljllll'; sleep 1; echo -n ilk; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
/* test: { sleep 1; echo -n KKKKK; sleep 1; echo -n IIIII; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
-/* test: { sleep 1; echo -n kkkkkkkkkkkkkkkkkkkkkkkk; sleep 1; echo -n iiiiiiiiiiiiiiiiiiiii; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -d /dev -d . */
+/* test: { sleep 1; for i in $(seq 1 50); do echo -n k; done; sleep 1; for i in $(seq 1 60); do echo -n i; done; sleep 1; echo -en '\eq'; 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 -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 */
/* Filter and selection */
char *itoo (int x)
{
int n = _log8 (x);
- char *octal = (char *) calloc (n, 1);
+ char *octal = (char *) calloc (n + 1, 1);
CHECKALLOC (octal);
int l = 0;
int i;
size_t size = 0;
- if ((type == type_unkn_e) || (type == type_reg_e)) {
+ if (type == type_reg_e) {
char *name = newfilename (dirname, filename);
-
struct stat sb;
if (STAT (name, &sb) == -1) {
VERBOSE (ERROR, fprintf (stderr, "can't stat file '%s'\n", name));
exit (1);
}
-
- switch (sb.st_mode & S_IFMT) {
- case S_IFBLK:
- type = type_block_e;
- break;
- case S_IFCHR:
- type = type_char_e;
- break;
- case S_IFDIR:
- type = type_dir_e;
- break;
- case S_IFIFO:
- type = type_pipe_e;
- break;
-#ifndef WIN32
- case S_IFLNK:
- type = type_symb_e;
- break;
-#endif
- case S_IFREG:
- type = type_reg_e;
- break;
-#ifndef WIN32
- case S_IFSOCK:
- type = type_socket_e;
- break;
-#endif
- }
-
- if (type == type_reg_e) {
- size = sb.st_size;
- }
-
+ size = sb.st_size;
free (name);
}
VERBOSE (ERROR, fprintf (stderr, "can't stat file '%s%s%s'\n", dirname, SEPARATOR, elem->name));
exit (1);
}
+ free (name);
elem->mode = 0777 & sb.st_mode;
rc = 1;
}
}
+ regfree (&reegex);
return rc;
}