X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/addf0c4a1c69cde165f59fec28b37221c0cb9717..d17e1dd2dae6bfd9e2e147a0dd3039848dd43abc:/backup.c diff --git a/backup.c b/backup.c index a8244743..dd1b3dd0 100644 --- a/backup.c +++ b/backup.c @@ -219,7 +219,7 @@ static int keep_backup(char *fname) if (IS_DEVICE(file->mode)) { if (am_root && preserve_devices) { make_bak_dir(fname, backup_dir); - if (do_mknod(keep_name, file->mode, file->rdev) != 0) { + if (do_mknod(keep_name, file->mode, file->u.rdev) != 0) { rprintf(FERROR, "mknod %s failed: %s\n", full_fname(keep_name), strerror(errno)); } else if (verbose > 2) { @@ -249,23 +249,24 @@ static int keep_backup(char *fname) #if SUPPORT_LINKS if (!kept && preserve_links && S_ISLNK(file->mode)) { extern int safe_symlinks; - if (safe_symlinks && unsafe_symlink(file->link, keep_name)) { + if (safe_symlinks && unsafe_symlink(file->u.link, keep_name)) { if (verbose) { rprintf(FINFO, "ignoring unsafe symlink %s -> %s\n", - full_fname(keep_name), file->link); + full_fname(keep_name), file->u.link); } kept = 1; } make_bak_dir(fname, backup_dir); - if (do_symlink(file->link, keep_name) != 0) { + if (do_symlink(file->u.link, keep_name) != 0) { rprintf(FERROR, "link %s -> %s : %s\n", - full_fname(keep_name), file->link, strerror(errno)); + full_fname(keep_name), file->u.link, strerror(errno)); } do_unlink(fname); kept = 1; } #endif - if (!kept && preserve_hard_links && check_hard_link(file)) { + if (!kept && preserve_hard_links && file->link_u.links + && file->F_HEAD != file) { if (verbose > 1) rprintf(FINFO, "%s is a hard link\n", f_name(file)); }