Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow safe_fname() to tweak up to two name at a time.
[rsync/rsync.git]
/
util.c
diff --git
a/util.c
b/util.c
index
e7be7d7
..
13987b9
100644
(file)
--- 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
/**
* 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)
{
**/
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;
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 = '?';
nl = fbuf + (nl - (char *)fname);
do {
*nl = '?';