char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL);
char *dest = strdupcat (dirname[(panel + 1 ) % MAXPANELS], SEPARATOR, current->name, NULL);
struct stat sb;
- if ((stat (dest, &sb) == 0) || (rename (src, dest) != 0)) {
+ if ((STAT (dest, &sb) == 0) || (rename (src, dest) != 0)) {
char *buf = strdupcat ("Can't move '", current->name, "' to '", dirname[(panel + 1 ) % MAXPANELS], "'", NULL);
msgwindow (buf, winscreen, 0);
getch ();
/* 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 */
/* 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 ../.b .b/c ../.b/c .b/c/d ../.b/c/d */
+/* 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 */
/* vim: set ts=4 sw=4 et: */
do {
char buffer[BUFMAX];
size_t nread = fread (buffer, 1, BUFMAX, fdsrc);
- VERBOSE (DEBUG, fprintf (stderr, "read %d bytes\n", nread));
+ VERBOSE (DEBUG, fprintf (stderr, "read %d bytes\n", (int)nread));
if (nread <= 0) {
break;
}
size_t nwritten = fwrite (buffer, 1, nread, fddest);
- VERBOSE (DEBUG, fprintf (stderr, "wrote %d bytes\n", nwritten));
+ VERBOSE (DEBUG, fprintf (stderr, "wrote %d bytes\n", (int)nwritten));
if (nwritten != nread) {
msg = strdupcat ("Can't write file '", dest, "'", NULL);
}
basename = (basename) ? basename + 1 : src;
VERBOSE (DEBUG, fprintf (stderr, "basename '%s'\n", basename));
char *newdest = strdupcat (dest, SEPARATOR, basename, NULL);
- VERBOSE (DEBUG, fprintf (stderr, "copy '%s' to '%s'\n", src, newdest));
- msg = _copyfile (newdest, src);
+ struct stat sb;
+ if (STAT (newdest, &sb) == 0) {
+ msg = strdupcat ("File '", newdest, "' already exists", NULL);
+ } else {
+ VERBOSE (DEBUG, fprintf (stderr, "copy '%s' to '%s'\n", src, newdest));
+ msg = _copyfile (newdest, src);
+ }
free (newdest);
}
} else {