stat_x sx;
struct file_struct *file;
char *buf;
+ int save_preserve_xattrs = preserve_xattrs;
int kept = 0;
int ret_code;
/* Check to see if this is a device file, or link */
if ((am_root && preserve_devices && IS_DEVICE(file->mode))
|| (preserve_specials && IS_SPECIAL(file->mode))) {
- uint32 *devp = F_RDEV_P(file);
- dev_t rdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
+ int save_errno;
do_unlink(buf);
- if (do_mknod(buf, file->mode, rdev) < 0) {
- int save_errno = errno ? errno : EINVAL; /* 0 paranoia */
+ if (do_mknod(buf, file->mode, sx.st.st_rdev) < 0) {
+ save_errno = errno ? errno : EINVAL; /* 0 paranoia */
if (errno == ENOENT && make_bak_dir(buf) == 0) {
- if (do_mknod(buf, file->mode, rdev) < 0)
+ if (do_mknod(buf, file->mode, sx.st.st_rdev) < 0)
save_errno = errno ? errno : save_errno;
else
save_errno = 0;
rsyserr(FERROR, save_errno, "mknod %s failed",
full_fname(buf));
}
- } else if (verbose > 2) {
+ } else
+ save_errno = 0;
+ if (verbose > 2 && save_errno == 0) {
rprintf(FINFO, "make_backup: DEVICE %s successful.\n",
fname);
}
robust_unlink(fname); /* Just in case... */
}
}
+ preserve_xattrs = 0;
set_file_attrs(buf, file, NULL, fname, 0);
+ preserve_xattrs = save_preserve_xattrs;
unmake_file(file);
if (verbose > 1) {