From eb697c999b6881504d47cbcaf3e1a94cbbe1c4a8 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 11 May 1998 12:29:19 +0000 Subject: [PATCH] fixed a bug in the new . filename code --- rsync.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rsync.c b/rsync.c index 9d11b722..98af1cda 100644 --- 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); -- 2.34.1