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 = strdupcat (dirname[panel], SEPARATOR, current->name);
+ char *dest = dirname[(panel + 1 ) % MAXPANELS];
+ if (processcopy (dest, src) != 0) {
+ char *buf = strdupcat ("Can't copy '", src, "' to '", dest, "'", NULL);
+ msgwindow (buf, winscreen, 0);
+ getch ();
+ free (buf);
+ }
+ free (src);
+ }
+ }
break;
case ALT_D: /* delete */
+ for (i = 0; i < list[panel]->nb; i++) {
+ current = list[panel]->tab + i;
+ if (current->selected) {
+ char *src = strdupcat (dirname[panel], SEPARATOR, current->name);
+ if (processdelete (src) != 0) {
+ char *buf = strdupcat ("Can't delete '", src, "'", NULL);
+ msgwindow (buf, winscreen, 0);
+ getch ();
+ free (buf);
+ }
+ free (src);
+ }
+ }
break;
case ALT_F: /* filter */
string = getwindow ("Set filter", winscreen, MAXFILTER / 2, MAXFILTER, NULL);
}
break;
case ALT_M: /* move */
+ for (i = 0; i < list[panel]->nb; i++) {
+ current = list[panel]->tab + i;
+ if (current->selected) {
+ char *src = strdupcat (dirname[panel], SEPARATOR, current->name);
+ char *dest = dirname[(panel + 1 ) % MAXPANELS];
+ if (processmove (dest, src) != 0) {
+ char *buf = strdupcat ("Can't copy '", src, "' to '", dest, "'", NULL);
+ msgwindow (buf, winscreen, 0);
+ getch ();
+ free (buf);
+ }
+ free (src);
+ }
+ }
break;
case ALT_N: /* new dir */
string = getwindow ("New directory", winscreen, MAXFNAME / 2, MAXFNAME, NULL);
break;
case ALT_S: /* select */
current = list[panel]->tab + windir[panel]->index;
- current->selected = (current->selected) ? 0 : 1;
+ if (strcmp (current->name, "..") != 0) {
+ current->selected = (current->selected) ? 0 : 1;
+ }
break;
case ALT_V: /* view */
break;
} \
} while (0)
+#define SEPARATOR "/"
+
#define max(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
#define min(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; })
int filterlist (list_t *list, char *regex);
+int processcopy (char *dest, char *src);
+
+int processdelete (char *src);
+
+int processmove (char *dest, char *src);
+
#endif /* __FUNCTION_H__ */
/* vim: set ts=4 sw=4 et: */