From 1b2d733af23599b2cc173c8a275b895760f66258 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 5 Apr 1998 06:26:24 +0000 Subject: [PATCH] a couple more system calls wrapped in syscall.c --- main.c | 2 +- rsync.c | 10 +++++----- syscall.c | 18 ++++++++++++++++++ util.c | 2 +- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/main.c b/main.c index 41d8a6b0..baae9d44 100644 --- a/main.c +++ b/main.c @@ -296,7 +296,7 @@ static char *get_local_name(struct file_list *flist,char *name) if (!name) return NULL; - if (mkdir(name,0777 & ~orig_umask) != 0) { + if (do_mkdir(name,0777 & ~orig_umask) != 0) { fprintf(FERROR,"mkdir %s : %s (1)\n",name,strerror(errno)); exit_cleanup(1); } else { diff --git a/rsync.c b/rsync.c index 7776ed0e..cf57296a 100644 --- a/rsync.c +++ b/rsync.c @@ -384,10 +384,10 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) } statret = -1; } - if (statret != 0 && mkdir(fname,file->mode) != 0 && errno != EEXIST) { + if (statret != 0 && do_mkdir(fname,file->mode) != 0 && errno != EEXIST) { if (!(relative_paths && errno==ENOENT && create_directory_path(fname)==0 && - mkdir(fname,file->mode)==0)) { + do_mkdir(fname,file->mode)==0)) { fprintf(FERROR,"mkdir %s : %s (2)\n", fname,strerror(errno)); } @@ -834,7 +834,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) } else { sprintf(fnametmp,"%s.XXXXXX",fname); } - if (NULL == mktemp(fnametmp)) { + if (NULL == do_mktemp(fnametmp)) { fprintf(FERROR,"mktemp %s failed\n",fnametmp); receive_data(f_in,buf,-1,NULL); if (buf) unmap_file(buf); @@ -878,14 +878,14 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) continue; } sprintf(fnamebak,"%s%s",fname,backup_suffix); - if (rename(fname,fnamebak) != 0 && errno != ENOENT) { + if (do_rename(fname,fnamebak) != 0 && errno != ENOENT) { fprintf(FERROR,"rename %s %s : %s\n",fname,fnamebak,strerror(errno)); continue; } } /* move tmp file over real file */ - if (rename(fnametmp,fname) != 0) { + if (do_rename(fnametmp,fname) != 0) { if (errno == EXDEV) { /* rename failed on cross-filesystem link. Copy the file instead. */ diff --git a/syscall.c b/syscall.c index 1893be61..31528590 100644 --- a/syscall.c +++ b/syscall.c @@ -77,3 +77,21 @@ int do_chmod(const char *path, mode_t mode) return chmod(path, mode); } #endif + +int do_rename(char *fname1, char *fname2) +{ + if (dry_run) return 0; + return rename(fname1, fname2); +} + +int do_mkdir(char *fname, mode_t mode) +{ + if (dry_run) return 0; + return mkdir(fname, mode); +} + +char *do_mktemp(char *template) +{ + if (dry_run) return NULL; + return mktemp(template); +} diff --git a/util.c b/util.c index 1a041a3f..f61e91da 100644 --- a/util.c +++ b/util.c @@ -298,7 +298,7 @@ int create_directory_path(char *fname) p = fname; while ((p=strchr(p,'/'))) { *p = 0; - mkdir(fname,0777 & ~orig_umask); + do_mkdir(fname,0777 & ~orig_umask); *p = '/'; p++; } -- 2.34.1