X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/74a7f81d5749c9ce8d9b7c284f9378857d0d5d60..b7c33e3bdea743c1d9fe1fb66f2f3929ab59fd31:/generator.c diff --git a/generator.c b/generator.c index f0d23ea6..8aa9c06f 100644 --- a/generator.c +++ b/generator.c @@ -35,6 +35,7 @@ extern int size_only; extern int io_timeout; extern int remote_version; extern int always_checksum; +extern char *compare_dest; /* choose whether to skip a particular file */ @@ -49,6 +50,15 @@ static int skip_file(char *fname, of the file time to determine whether to sync */ if (always_checksum && S_ISREG(st->st_mode)) { char sum[MD4_SUM_LENGTH]; + char fnamecmpdest[MAXPATHLEN]; + + if (compare_dest != NULL) { + if (access(fname, 0) != 0) { + slprintf(fnamecmpdest,MAXPATHLEN,"%s/%s", + compare_dest,fname); + fname = fnamecmpdest; + } + } file_checksum(fname,sum,st->st_size); if (remote_version < 21) { return (memcmp(sum,file->sum,2) == 0); @@ -246,8 +256,8 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) return; } } + delete_file(fname); } - delete_file(fname); if (do_symlink(file->link,fname) != 0) { rprintf(FERROR,"symlink %s -> %s : %s\n", fname,file->link,strerror(errno));