If there is no lchown(), don't try to set the user & group of a symlink.
[rsync/rsync.git] / backup.c
index 1fcb82a..0dd4c56 100644 (file)
--- a/backup.c
+++ b/backup.c
@@ -38,16 +38,14 @@ extern int safe_symlinks;
 /* make a complete pathname for backup file */
 char *get_backup_name(char *fname)
 {
-       static char fnamebak[MAXPATHLEN];
-
        if (backup_dir) {
                if (stringjoin(backup_dir_buf + backup_dir_len, backup_dir_remainder,
                               fname, backup_suffix, NULL) < backup_dir_remainder)
                        return backup_dir_buf;
        } else {
-               if (stringjoin(fnamebak, sizeof fnamebak,
-                              fname, backup_suffix, NULL) < sizeof fnamebak)
-                       return fnamebak;
+               if (stringjoin(backup_dir_buf, MAXPATHLEN,
+                              fname, backup_suffix, NULL) < MAXPATHLEN)
+                       return backup_dir_buf;
        }
 
        rprintf(FERROR, "backup filename too long\n");
@@ -178,7 +176,6 @@ static int keep_backup(char *fname)
        if (!(buf = get_backup_name(fname)))
                return 0;
 
-#ifdef HAVE_MKNOD
        /* Check to see if this is a device file, or link */
        if (IS_DEVICE(file->mode)) {
                if (am_root && preserve_devices) {
@@ -196,7 +193,6 @@ static int keep_backup(char *fname)
                kept = 1;
                do_unlink(fname);
        }
-#endif
 
        if (!kept && S_ISDIR(file->mode)) {
                /* make an empty directory */
@@ -256,7 +252,7 @@ static int keep_backup(char *fname)
        free(file);
 
        if (verbose > 1)
-               rprintf(FINFO, "keep_backup %s -> %s\n", fname, buf);
+               rprintf(FINFO, "backed up %s to %s\n", fname, buf);
        return 1;
 }