- int save_errno;
- do_unlink(buf);
- 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, sx.st.st_rdev) < 0)
- save_errno = errno ? errno : save_errno;
- else
- save_errno = 0;
- }
- if (save_errno) {
- rsyserr(FERROR, save_errno, "mknod %s failed",
- full_fname(buf));
- }
- } else
- save_errno = 0;
- if (verbose > 2 && save_errno == 0) {
- rprintf(FINFO, "make_backup: DEVICE %s successful.\n",
- fname);
- }
- kept = 1;
- do_unlink(fname);
- }
-
- if (!kept && S_ISDIR(file->mode)) {
- /* make an empty directory */
- if (do_mkdir(buf, file->mode) < 0) {
- int save_errno = errno ? errno : EINVAL; /* 0 paranoia */
- if (errno == ENOENT && make_bak_dir(buf) == 0) {
- if (do_mkdir(buf, file->mode) < 0)
- save_errno = errno ? errno : save_errno;
- else
- save_errno = 0;
- }
- if (save_errno) {
- rsyserr(FINFO, save_errno, "mkdir %s failed",
- full_fname(buf));
- }
- }
-
- ret_code = do_rmdir(fname);
- if (verbose > 2) {
- rprintf(FINFO, "make_backup: RMDIR %s returns %i\n",
- full_fname(fname), ret_code);
- }
- kept = 1;
+ if (do_mknod(buf, file->mode, sx.st.st_rdev) < 0)
+ rsyserr(FERROR, errno, "mknod %s failed", full_fname(buf));
+ else if (DEBUG_GTE(BACKUP, 1))
+ rprintf(FINFO, "make_backup: DEVICE %s successful.\n", fname);
+ ret = 2;