From: Laurent Mazet Date: Sat, 18 Jan 2025 20:45:01 +0000 (+0100) Subject: add confirmation messages X-Git-Tag: v1.0~26 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=74bfe6914fba380f392325ee8e7490a70156fd42;p=fm.git add confirmation messages --- diff --git a/fm.c b/fm.c index e80b665..730ef0e 100644 --- a/fm.c +++ b/fm.c @@ -309,39 +309,43 @@ int main (int argc, char *argv[]) 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); @@ -354,24 +358,26 @@ int main (int argc, char *argv[]) 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); @@ -443,7 +449,7 @@ int main (int argc, char *argv[]) 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); @@ -529,19 +535,19 @@ int main (int argc, char *argv[]) /* 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 */ @@ -551,7 +557,7 @@ int main (int argc, char *argv[]) /* 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 */