Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Include popt.h using <popt.h> instead of "popt.h".
[rsync/rsync.git]
/
backup.c
diff --git
a/backup.c
b/backup.c
index
7d28885
..
11011cf
100644
(file)
--- a/
backup.c
+++ b/
backup.c
@@
-30,6
+30,7
@@
extern char *backup_dir;
extern int am_root;
extern int preserve_devices;
extern int am_root;
extern int preserve_devices;
+extern int preserve_specials;
extern int preserve_links;
extern int preserve_hard_links;
extern int orig_umask;
extern int preserve_links;
extern int preserve_hard_links;
extern int orig_umask;
@@
-65,8
+66,7
@@
static int make_simple_backup(char *fname)
if (do_rename(fname, fnamebak) == 0) {
if (verbose > 1) {
rprintf(FINFO, "backed up %s to %s\n",
if (do_rename(fname, fnamebak) == 0) {
if (verbose > 1) {
rprintf(FINFO, "backed up %s to %s\n",
- safe_fname(fname),
- safe_fname(fnamebak));
+ fname, fnamebak);
}
break;
}
}
break;
}
@@
-81,7
+81,7
@@
static int make_simple_backup(char *fname)
continue;
rsyserr(FERROR, rename_errno, "rename %s to backup %s",
continue;
rsyserr(FERROR, rename_errno, "rename %s to backup %s",
-
safe_fname(fname), safe_fname(fnamebak)
);
+
fname, fnamebak
);
errno = rename_errno;
return 0;
}
errno = rename_errno;
return 0;
}
@@
-149,7
+149,7
@@
static int make_bak_dir(char *fullpath)
}
return 0;
}
return 0;
-failure:
+
failure:
while (p != end) {
*p = '/';
p += strlen(p);
while (p != end) {
*p = '/';
p += strlen(p);
@@
-181,14
+181,15
@@
static int keep_backup(char *fname)
if (do_lstat(fname, &st) < 0)
return 1;
if (do_lstat(fname, &st) < 0)
return 1;
- if (!(file = make_file(fname, NULL, NO_FILTERS)))
+ if (!(file = make_file(fname, NULL, N
ULL, 0, N
O_FILTERS)))
return 1; /* the file could have disappeared */
if (!(buf = get_backup_name(fname)))
return 0;
/* Check to see if this is a device file, or link */
return 1; /* the file could have disappeared */
if (!(buf = get_backup_name(fname)))
return 0;
/* Check to see if this is a device file, or link */
- if (IS_DEVICE(file->mode) && am_root && preserve_devices) {
+ if ((am_root && preserve_devices && IS_DEVICE(file->mode))
+ || (preserve_specials && IS_SPECIAL(file->mode))) {
do_unlink(buf);
if (do_mknod(buf, file->mode, file->u.rdev) < 0
&& (errno != ENOENT || make_bak_dir(buf) < 0
do_unlink(buf);
if (do_mknod(buf, file->mode, file->u.rdev) < 0
&& (errno != ENOENT || make_bak_dir(buf) < 0
@@
-197,7
+198,7
@@
static int keep_backup(char *fname)
full_fname(buf));
} else if (verbose > 2) {
rprintf(FINFO, "make_backup: DEVICE %s successful.\n",
full_fname(buf));
} else if (verbose > 2) {
rprintf(FINFO, "make_backup: DEVICE %s successful.\n",
-
safe_fname(fname)
);
+
fname
);
}
kept = 1;
do_unlink(fname);
}
kept = 1;
do_unlink(fname);
@@
-235,7
+236,7
@@
static int keep_backup(char *fname)
|| do_symlink(file->u.link, buf) < 0)) {
rsyserr(FERROR, errno, "link %s -> \"%s\"",
full_fname(buf),
|| do_symlink(file->u.link, buf) < 0)) {
rsyserr(FERROR, errno, "link %s -> \"%s\"",
full_fname(buf),
-
safe_fname(file->u.link)
);
+
file->u.link
);
}
do_unlink(fname);
kept = 1;
}
do_unlink(fname);
kept = 1;
@@
-245,7
+246,7
@@
static int keep_backup(char *fname)
if (!kept && !S_ISREG(file->mode)) {
rprintf(FINFO, "make_bak: skipping non-regular file %s\n",
if (!kept && !S_ISREG(file->mode)) {
rprintf(FINFO, "make_bak: skipping non-regular file %s\n",
-
safe_fname(fname)
);
+
fname
);
return 1;
}
return 1;
}
@@
-253,7
+254,7
@@
static int keep_backup(char *fname)
if (!kept) {
if (robust_move(fname, buf) != 0) {
rsyserr(FERROR, errno, "keep_backup failed: %s -> \"%s\"",
if (!kept) {
if (robust_move(fname, buf) != 0) {
rsyserr(FERROR, errno, "keep_backup failed: %s -> \"%s\"",
- full_fname(fname),
safe_fname(buf)
);
+ full_fname(fname),
buf
);
} else if (st.st_nlink > 1) {
/* If someone has hard-linked the file into the backup
* dir, rename() might return success but do nothing! */
} else if (st.st_nlink > 1) {
/* If someone has hard-linked the file into the backup
* dir, rename() might return success but do nothing! */
@@
-265,7
+266,7
@@
static int keep_backup(char *fname)
if (verbose > 1) {
rprintf(FINFO, "backed up %s to %s\n",
if (verbose > 1) {
rprintf(FINFO, "backed up %s to %s\n",
-
safe_fname(fname), safe_fname(buf)
);
+
fname, buf
);
}
return 1;
}
}
return 1;
}