On Sun, 27 Jan 2008, Yar Tikhiy wrote:
The format strings in question might just have a bug in them. My guess is
that the author of the format strings feared that fts_path might not be
NUL-terminated, so he explicitly specified variable precision of
fts_pathlen; but he forgot to left-justify the field as well.
In fact, fts_path in a fresh FTSENT just returned by fts_read() is always
NUL-terminated. (See fts(3).) Tricks with fts_pathlen are necessary only
if referring to old, saved FTSENTs, but this is dangerous and unportable
anyway. setfmac seems to refer to fresh FTSENTs only, so the format can be
changed safely from "%.*s" to just "%s". It will eliminate the fts_pathlen
arguments to the printf-like functions completely.
It was Robert Watson who committed the lines to setfmac.c, according to cvs
annotate, so I added him to Cc:.
Robert, do you think it's OK to simplify the format strings by changing
"%.*s" to "%s" along with removing the fts_pathlen arguments? E.g.:
I think Brian Feldman may have originally submitted this part of the code
code, and likely it was a concern about nul-termination. I'm fine with the
change, especially if the concern about nul-termination was unfounded :-).
Robert N M Watson
Computer Laboratory
University of Cambridge
case FTS_NS:
- err(1, "traversing %.*s", ftsent->fts_pathlen,
- ftsent->fts_path);
+ err(1, "traversing %s", ftsent->fts_path);
default:
Thanks!
Yar
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"