X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/af1a3f9b6ec7e1a783c00529a109307d9102e589..b4afd23c308ed2ef7df894cfb8be532fee521ad5:/util.c diff --git a/util.c b/util.c index e7be7d7c..13987b9b 100644 --- a/util.c +++ b/util.c @@ -902,17 +902,20 @@ int pop_dir(char *dir) /** * Return the filename, turning any newlines into '?'s. This ensures that - * outputting it on a line of its own cannot generate an empty line. + * outputting it on a line of its own cannot generate an empty line. This + * function can handle only 2 names at a time! **/ const char *safe_fname(const char *fname) { - static char fbuf[MAXPATHLEN]; + static char fbuf1[MAXPATHLEN], fbuf2[MAXPATHLEN]; + static char *fbuf = fbuf2; char *nl = strchr(fname, '\n'); if (!nl) return fname; - strlcpy(fbuf, fname, sizeof fbuf); + fbuf = fbuf == fbuf1 ? fbuf2 : fbuf1; + strlcpy(fbuf, fname, MAXPATHLEN); nl = fbuf + (nl - (char *)fname); do { *nl = '?';