switch (getch ()) {
#endif /* PDCURSES */
case ALT_C: /* copy */
- for (i = 0; i < list[panel]->nb; i++) {
- current = list[panel]->tab + i;
- if (current->selected) {
- char *src = newfilename (dirname[panel], current->name);
- char *dest = dirname[(panel + 1 ) % MAXPANELS];
- char *msg = processcopy (dest, src);
- if (msg) {
- errorwindow (msg, winscreen);
- free (msg);
+ if (askwindow (" Copy selected file(s) (Y/N) ", winscreen, "Yy", "Nn") == 1) {
+ for (i = 0; i < list[panel]->nb; i++) {
+ current = list[panel]->tab + i;
+ if (current->selected) {
+ char *src = newfilename (dirname[panel], current->name);
+ char *dest = dirname[(panel + 1 ) % MAXPANELS];
+ char *msg = processcopy (dest, src);
+ if (msg) {
+ errorwindow (msg, winscreen);
+ free (msg);
+ }
+ free (src);
}
- free (src);
}
+ freelist (list[panel]);
+ list[panel] = NULL;
+ freelist (list[(panel + 1) % MAXPANELS]);
+ list[(panel + 1) % MAXPANELS] = NULL;
}
- freelist (list[panel]);
- list[panel] = NULL;
- freelist (list[(panel + 1) % MAXPANELS]);
- list[(panel + 1) % MAXPANELS] = NULL;
break;
case ALT_D: /* delete */
- for (i = 0; i < list[panel]->nb; i++) {
- current = list[panel]->tab + i;
- if (current->selected) {
- char *src = newfilename (dirname[panel], current->name);
- char *msg = processdelete (src);
- if (msg) {
- errorwindow (msg, winscreen);
- free (msg);
+ if (askwindow (" Delete selected file(s) (Y/N) ", winscreen, "Yy", "Nn") == 1) {
+ for (i = 0; i < list[panel]->nb; i++) {
+ current = list[panel]->tab + i;
+ if (current->selected) {
+ char *src = newfilename (dirname[panel], current->name);
+ char *msg = processdelete (src);
+ if (msg) {
+ errorwindow (msg, winscreen);
+ free (msg);
+ }
+ free (src);
}
- free (src);
}
+ freelist (list[panel]);
+ list[panel] = NULL;
}
- freelist (list[panel]);
- list[panel] = NULL;
break;
case ALT_F: /* filter */
string = getwindow ("Set filter", winscreen, MAXFILTER / 2, MAXFILTER, NULL);
helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
break;
case ALT_M: /* move */
- for (i = 0; i < list[panel]->nb; i++) {
- current = list[panel]->tab + i;
- if (current->selected) {
- char *src = newfilename (dirname[panel], current->name);
- char *dest = newfilename (dirname[(panel + 1 ) % MAXPANELS], current->name);
- char *msg = processmove (dest, src);
- if (msg) {
- errorwindow (msg, winscreen);
- free (msg);
+ if (askwindow (" Move selected file(s) (Y/N) ", winscreen, "Yy", "Nn") == 1) {
+ for (i = 0; i < list[panel]->nb; i++) {
+ current = list[panel]->tab + i;
+ if (current->selected) {
+ char *src = newfilename (dirname[panel], current->name);
+ char *dest = newfilename (dirname[(panel + 1 ) % MAXPANELS], current->name);
+ char *msg = processmove (dest, src);
+ if (msg) {
+ errorwindow (msg, winscreen);
+ free (msg);
+ }
+ free (src);
+ free (dest);
}
- free (src);
- free (dest);
}
+ freelist (list[panel]);
+ list[panel] = NULL;
+ freelist (list[(panel + 1) % MAXPANELS]);
+ list[(panel + 1) % MAXPANELS] = NULL;
}
- freelist (list[panel]);
- list[panel] = NULL;
- freelist (list[(panel + 1) % MAXPANELS]);
- list[(panel + 1) % MAXPANELS] = NULL;
break;
case ALT_N: /* new dir */
string = getwindow ("New directory", winscreen, MAXFNAME / 2, MAXFNAME, NULL);
menuwindow (winmenu, menu, &index_menu);
break;
case ALT_X: /* chmod */
- string = getwindow ("Change to mode", winscreen, 4, 4, "0644");
+ string = getwindow ("Change selected file(s) to mode", winscreen, 4, 4, "0644");
if (string) {
char *endptr = NULL;
int mode = strtol (string, &endptr, 8);
/* test: touch .a .b && { sleep 1; echo -en 'k\er'; sleep 1; echo .b; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a .b */
/* Move */
-/* test: touch .a0 && mkdir .a1 && { sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm ../.a0 && rmdir ../.a1 */
-/* test: touch .a && touch ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a ../.a */
-/* test: touch .a && mkdir ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a && rmdir ../.a */
-/* test: mkdir .a && touch ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a && rm ../.a */
-/* test: mkdir .a && mkdir ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a && rmdir ../.a */
+/* test: touch .a0 && mkdir .a1 && { sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm ../.a0 && rmdir ../.a1 */
+/* test: touch .a && touch ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -n y; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a ../.a */
+/* test: touch .a && mkdir ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -n y; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a && rmdir ../.a */
+/* test: mkdir .a && touch ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -n y; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a && rm ../.a */
+/* test: mkdir .a && mkdir ../.a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\t\n\t'; sleep 1; echo -en '\em'; sleep 1; echo -n y; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a && rmdir ../.a */
/* Delete */
-/* test: touch .a0 && mkdir .a1 && touch .a1/a2 && { sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\ed'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
+/* test: touch .a0 && mkdir .a1 && touch .a1/a2 && { sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\ed'; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe */
/* Copy */
-/* test: mkdir .b .b/c .b/c/d && echo "test" > .a && touch .b/a .b/b && dd if=/dev/random bs=1k count=12 of=.b/c/d/e 2>/dev/null && md5=$(md5sum .b/c/d/e) && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\ec'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && test "$(cat .a)" = test && test "$md5" = "$(cd ..; md5sum .b/c/d/e)" && rm .a ../.a .b/a ../.b/a .b/b ../.b/b .b/c/d/e ../.b/c/d/e && rmdir .b/c/d .b/c .b ../.b/c/d ../.b/c ../.b */
-/* test: echo "test" > .a && touch ../.a && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ec'; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && test "$(ls -s ../.a)" = "0 ../.a" && rm .a ../.a */
-/* test: mkdir .a ../.a && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ec'; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a ../.a */
+/* test: mkdir .b .b/c .b/c/d && echo "test" > .a && touch .b/a .b/b && dd if=/dev/random bs=1k count=12 of=.b/c/d/e 2>/dev/null && md5=$(md5sum .b/c/d/e) && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\esk\es'; sleep 1; echo -en '\ec'; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && test "$(cat .a)" = test && test "$md5" = "$(cd ..; md5sum .b/c/d/e)" && rm .a ../.a .b/a ../.b/a .b/b ../.b/b .b/c/d/e ../.b/c/d/e && rmdir .b/c/d .b/c .b ../.b/c/d ../.b/c ../.b */
+/* test: echo "test" > .a && touch ../.a && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ec'; sleep 1; echo -n y; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && test "$(ls -s ../.a)" = "0 ../.a" && rm .a ../.a */
+/* test: mkdir .a ../.a && { sleep 1; echo -en '\t\n\t'; sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ec'; sleep 1; echo -n y; sleep 1; echo -n y; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a ../.a */
/* Chmod */
/* test: touch .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo -n 0640; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a */
/* test: ln -s .b .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo; sleep 1; echo ; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a */
/* View */
-/* test: cp fm.c .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; for i in $(seq 1 100); do echo -n k; done; sleep 1; for i in $(seq 1 110); do echo -n i; done; sleep 1; echo -n h; sleep 1; echo; sleep 1; echo -n q; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */
+/* test: cp fm.c .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; for i in $(seq 1 1000); do echo -n k; done; sleep 1; for i in $(seq 1 1000); do echo -n i; done; sleep 1; echo -n h; sleep 1; echo; sleep 1; echo -n q; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */
/* test: mkdir .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rmdir .a */
/* test: ln -s .b .a && { sleep 1; echo -n 'k'; sleep 1; echo -en '\ev'; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe -x 60 -y 20 && rm .a */