Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/dev/pci
Date: Wed, 26 Oct 2016 06:10:39 +0800 (PHT)
From: Paul Goyette <paul%whooppee.com@localhost>
There's only 9 snprintf() calls. I could simply provide a macro:
#define ADD_TEXT(dest, end, format, ...) \
{ \
int len, max = (end) - (dest); \
len = snprintf((dest), max, (format), __VA_ARGS__); \
if (len > max) \
return; \
(dest) += len; \
}
Then all of the snprintf() calls become simply
ADD_TEXT(cp, ep, <format>, ...);
(Of course, after last use I'd add a #undef ADD_TEXT to clean up...)
Maybe we should have a standard function to do this:
if ((error = snprintf_inplace(&p, &n, fmt, x, y, z)) != 0)
goto out;
would be equivalent to
nfmt = snprintf(p, n, fmt, x, y, z);
if (nfmt > n) {
n = nfmt;
error = ETRUNC;
goto out;
}
p += nfmt;
n -= nfmt;
or something like that, with the appropriate choice of update so that
it is easy either to report an error or to realloc a buffer and retry.
(Of course, then we need to decide whether p is const-qualified or
not, signed or unsigned or unqualified char, &c. Bleh.)
Home |
Main Index |
Thread Index |
Old Index