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




To: Paul Goyette <paul%whooppee.com@localhost>

Subject: Re: CVS commit: src/sys/dev/pci

From: Taylor R Campbell <campbell+netbsd-source-changes-d%mumble.net@localhost>

Date: Wed, 26 Oct 2016 02:24:22 +0000


   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.)


References:

re: CVS commit: src/sys/dev/pci
From: Paul Goyette




Prev by Date: Re: CVS commit: src/sys/dev/pci

Next by Date: Re: CVS commit: src/sys/dev/pci

Previous by Thread: Re: CVS commit: src/sys/dev/pci

Indexes:

reverse Date

reverse Thread

Old Index



Home | Main Index | Thread Index | Old Index