-
-
-#ifdef HAVE_MKNOD
- /* Check to see if this is a device file, or link */
- 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) {
- rprintf(FERROR,"mknod %s : %s\n",keep_name,strerror(errno));
- } else {
- if(verbose>2)
- rprintf(FINFO,"make_backup : DEVICE %s successful.\n",fname);
- };
- };
- kept=1;
- do_unlink(fname);
- };
-#endif
-
- if(!kept && S_ISDIR(file->mode)) {
- /* make an empty directory */
- make_bak_dir(fname,backup_dir);
- do_mkdir(keep_name,file->mode);
- ret_code=do_rmdir(fname);
- if(verbose>2)
- rprintf(FINFO,"make_backup : RMDIR %s returns %i\n",fname,ret_code);
- kept=1;
- };
-
-#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 (verbose) {
- rprintf(FINFO,"ignoring unsafe symlink %s -> %s\n",
- keep_name,file->link);
- }
- kept=1;
- }
- make_bak_dir(fname,backup_dir);
- if(do_symlink(file->link,keep_name) != 0) {
- rprintf(FERROR,"link %s -> %s : %s\n",keep_name,file->link,strerror(errno));
- };
- do_unlink(fname);
- kept=1;
- };