From: Wayne Davison Date: Mon, 26 Jul 2004 16:34:36 +0000 (+0000) Subject: Allow safe_fname() to tweak up to two name at a time. X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/b4afd23c308ed2ef7df894cfb8be532fee521ad5?hp=af1a3f9b6ec7e1a783c00529a109307d9102e589 Allow safe_fname() to tweak up to two name at a time. --- 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 = '?';