case ALT_X: /* chmod */
string = getwindow ("Change to mode", winscreen, 4, 4, "0644");
if (string) {
- int mode = strtol (string, NULL, 8);
- if ((mode <= 0) || (mode > 0777)) {
- char *octal = itoo (mode);
- char *buf = strdupcat ("Can't change file(s) to mode 0", (octal && *octal) ? octal : "000" , NULL);
+ char *endptr = NULL;
+ int mode = strtol (string, &endptr, 8);
+ if ((*endptr != '\0') || (mode <= 0) || (mode > 0777)) {
+ char *buf = strdupcat ("Can't change file(s) to mode '", string, "'" , NULL);
msgwindow (buf, winscreen, 0);
getch ();
- free (octal);
free (buf);
} else {
for (i = 0; i < list[panel]->nb; i++) {
/* 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 */
+/* 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: mkdir .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo -n 0750; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rmdir .a */
+/* test: touch .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo -n 0649; sleep 1; echo; sleep 1; echo; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a */
+/* test: touch .a && { sleep 1; echo -en 'k\es'; sleep 1; echo -en '\ex'; sleep 1; echo -en '\e'; sleep 1; echo -en '\eq'; sleep 1; echo -n y; } | fm.exe && rm .a */
+
/* vim: set ts=4 sw=4 et: */