fixed a bug in the new . filename code
authorAndrew Tridgell <tridge@samba.org>
Mon, 11 May 1998 12:29:19 +0000 (12:29 +0000)
committerAndrew Tridgell <tridge@samba.org>
Mon, 11 May 1998 12:29:19 +0000 (12:29 +0000)
rsync.c

diff --git a/rsync.c b/rsync.c
index 9d11b72..98af1cd 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -833,6 +833,8 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
              }
              sprintf(fnametmp,"%s/.%s.XXXXXX",tmpdir,f);
       } else {
+             char *f = strrchr(fname,'/');
+
              if (strlen(fname)+9 > MAXPATHLEN) {
                      rprintf(FERROR,"filename too long\n");
                      if (buf) unmap_file(buf);
@@ -840,7 +842,13 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
                      continue;
              }
 
-             sprintf(fnametmp,".%s.XXXXXX",fname);
+             if (f) {
+                     *f = 0;
+                     sprintf(fnametmp,"%s/.%s.XXXXXX",fname,f+1);
+                     *f = '/';
+             } else {
+                     sprintf(fnametmp,".%s.XXXXXX",fname);
+             }
       }
       if (NULL == do_mktemp(fnametmp)) {
        rprintf(FERROR,"mktemp %s failed\n",fnametmp);