printmsg("selection on");
DPRINTF_S("selection on");
goto nochange;
+ }
+
+ if (!ncp) { /* Handle range selection */
+#ifndef DIR_LIMITED_COPY
+ if (g_crc != crc8fast((uchar *)dents,
+ ndents * sizeof(struct entry))) {
+ cfg.copymode = 0;
+ printmsg("dir/content changed");
+ goto nochange;
+ }
+#endif
+ if (cur < copystartid) {
+ copyendid = copystartid;
+ copystartid = cur;
+ } else
+ copyendid = cur;
} // fallthrough
case SEL_COPYALL:
if (sel == SEL_COPYALL) {
cfg.copymode = 0;
copybufpos = 0;
- ncp = 0;
+ ncp = 0; /* Override single/multi path selection */
copystartid = 0;
copyendid = ndents - 1;
}
- if (!ncp) { /* Handle range selection */
-#ifndef DIR_LIMITED_COPY
- if ((sel != SEL_COPYALL) && g_crc != crc8fast((uchar *)dents,
- ndents * sizeof(struct entry))) {
- cfg.copymode = 0;
- printmsg("dir/content changed");
- DPRINTF_S("dir/content changed");
- goto nochange;
- }
-#endif
- if (sel != SEL_COPYALL) {
- if (cur < copystartid) {
- copyendid = copystartid;
- copystartid = cur;
- } else
- copyendid = cur;
- }
- if (copystartid < copyendid || sel == SEL_COPYALL) {
- for (r = copystartid; r <= copyendid; ++r)
- if (!appendfpath(newpath, mkpath(path,
- dents[r].name, newpath)))
- goto nochange;
+ if ((!ncp && copystartid < copyendid) || sel == SEL_COPYALL) {
+ for (r = copystartid; r <= copyendid; ++r)
+ if (!appendfpath(newpath, mkpath(path,
+ dents[r].name, newpath)))
+ goto nochange;
- mvprintw(LINES - 1, 0, "%d files selected\n",
- copyendid - copystartid + 1);
- }
+ mvprintw(LINES - 1, 0, "%d files selected\n",
+ copyendid - copystartid + 1);
}
if (copybufpos) { /* File path(s) written to the buffer */