mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-03-24 09:12:08 -04:00
Allow safe_fname() to tweak up to two name at a time.
This commit is contained in:
9
util.c
9
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 = '?';
|
||||
|
||||
Reference in New Issue
Block a user