Remove %D conversion from kprintf(9) and the GCCs.
authorSascha Wildner <saw@online.de>
Fri, 21 Dec 2012 20:20:04 +0000 (21:20 +0100)
committerAntonio Huete Jimenez <tuxillo@quantumachine.net>
Tue, 15 Jan 2013 22:51:38 +0000 (23:51 +0100)
It has been removed also from libstand's printf.

While useful, these non-standard conversions have the downside that
each compiler needs adjusting to support proper printf format warnings
for them.

We have now a kether_ntoa() function to serve the purpose of %D

contrib/gcc-4.4/gcc/c-format.c
contrib/gcc-4.7/gcc/c-family/c-format.c
lib/libstand/libstand.3
lib/libstand/printf.c
share/man/man9/kprintf.9
sys/kern/subr_prf.c

index 1a8df0b..b4e3f05 100644 (file)
@@ -533,11 +533,7 @@ static const format_char_info print_char_table[] =
      The format %b is supported to decode error registers.
      Its usage is:     printf("reg=%b\n", regval, "<base><arg>*");
      which produces:   reg=3<BITTWO,BITONE>
-     The format %D provides a hexdump given a pointer and separator string:
-     ("%6D", ptr, ":")         -> XX:XX:XX:XX:XX:XX
-     ("%*D", len, ptr, " ")    -> XX XX XX XX ...
    */
-  { "D",   1, STD_EXT, { T89_V,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "cR", &dfly_ext_char_info },
   { "b",   0, STD_EXT, { T89_I,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "",   &dfly_ext_char_info },
   { "ry",  0, STD_EXT, { T89_I,  BADLEN,   BADLEN,   T89_L,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp0 +#",   "i",  NULL },
   { NULL,  0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
@@ -1798,14 +1794,6 @@ check_format_info_main (format_check_results *res,
          while (fli->name != 0 
                 && strncmp (fli->name, format_chars, strlen (fli->name)))
              fli++;
-         /*
-          * DragonFly's D conversion needs to have precedence
-          * over the DD length modifier
-          */
-         if (fli->index == FMT_LEN_D
-             && fki->conversion_specs == print_char_table)
-           while (fli->name != 0)
-             fli++;
          if (fli->name != 0)
            {
              format_chars += strlen (fli->name);
index e184043..30706ad 100644 (file)
@@ -648,11 +648,7 @@ static const format_char_info print_char_table[] =
      The format %b is supported to decode error registers.
      Its usage is:     printf("reg=%b\n", regval, "<base><arg>*");
      which produces:   reg=3<BITTWO,BITONE>
-     The format %D provides a hexdump given a pointer and separator string:
-     ("%6D", ptr, ":")         -> XX:XX:XX:XX:XX:XX
-     ("%*D", len, ptr, " ")    -> XX XX XX XX ...
    */
-  { "D",   1, STD_EXT, { T89_V,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "cR", &dfly_ext_char_info },
   { "b",   0, STD_EXT, { T89_I,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "",   &dfly_ext_char_info },
   { "ry",  0, STD_EXT, { T89_I,  BADLEN,   BADLEN,   T89_L,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp0 +#",   "i",  NULL },
   { NULL,  0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
@@ -1958,14 +1954,6 @@ check_format_info_main (format_check_results *res,
          while (fli->name != 0
                 && strncmp (fli->name, format_chars, strlen (fli->name)))
              fli++;
-         /*
-          * DragonFly's D conversion needs to have precedence
-          * over the DD length modifier
-          */
-         if (fli->index == FMT_LEN_D
-             && fki->conversion_specs == print_char_table)
-           while (fli->name != 0)
-             fli++;
          if (fli->name != 0)
            {
              format_chars += strlen (fli->name);
index e52930f..e87225d 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/lib/libstand/libstand.3,v 1.5.2.11 2002/06/26 19:14:43 schweikh Exp $
 .\"
-.Dd December 29, 2012
+.Dd January 2, 2013
 .Dt LIBSTAND 3
 .Os
 .Sh NAME
@@ -319,27 +319,6 @@ would give the output
 .Bd -ragged -offset indent
 reg=3<BITTWO,BITONE>
 .Ed
-.Pp
-The
-.Cm D
-conversion provides a hexdump facility, eg.
-.Bd -ragged -offset indent
-printf(
-.Qq %6D ,
-ptr,
-.Qq \&:
-);  gives
-.Qq XX:XX:XX:XX:XX:XX
-.Ed
-.Bd -ragged -offset indent
-printf(
-.Qq %*D ,
-len,
-ptr,
-.Qq "\ "
-);  gives
-.Qq XX XX XX ...
-.Ed
 .El
 .Sh CHARACTER TESTS AND CONVERSIONS
 .Bl -hang -width 10n
index ecc6d60..878f696 100644 (file)
@@ -196,9 +196,6 @@ ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
  *
  *     reg=3<BITTWO,BITONE>
  *
- * XXX:  %D  -- Hexdump, takes pointer and separator string:
- *             ("%6D", ptr, ":")   -> XX:XX:XX:XX:XX:XX
- *             ("%*D", len, ptr, " " -> XX XX XX XX ...
  */
 static int
 kvprintf(char const *fmt, void (*func)(int, void *), void *arg, int radix,
@@ -208,7 +205,6 @@ kvprintf(char const *fmt, void (*func)(int, void *), void *arg, int radix,
        char nbuf[MAXNBUF];
        char *d;
        const char *p, *percent, *q;
-       u_char *up;
        int ch, n;
        uintmax_t num;
        int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
@@ -312,20 +308,6 @@ reswitch:  switch (ch = (u_char)*fmt++) {
                case 'c':
                        PCHAR(va_arg(ap, int));
                        break;
-               case 'D':
-                       up = va_arg(ap, u_char *);
-                       p = va_arg(ap, char *);
-                       if (!width)
-                               width = 16;
-                       while(width--) {
-                               PCHAR(hex2ascii(*up >> 4));
-                               PCHAR(hex2ascii(*up & 0x0f));
-                               up++;
-                               if (width)
-                                       for (q=p;*q;q++)
-                                               PCHAR(*q);
-                       }
-                       break;
                case 'd':
                case 'i':
                        base = 10;
index 8766cd1..1b74462 100644 (file)
@@ -25,9 +25,8 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/share/man/man9/printf.9,v 1.8 2006/09/08 14:05:03 ru Exp $
-.\" $DragonFly: src/share/man/man9/kprintf.9,v 1.5 2008/07/18 00:28:04 swildner Exp $
 .\"
-.Dd July 17, 2008
+.Dd December 21, 2012
 .Dt KPRINTF 9
 .Os
 .Sh NAME
@@ -107,7 +106,7 @@ parameters in the same manner as
 .Xr printf 3 .
 However, the
 .Nm
-functions add two other conversion specifiers to
+functions add another conversion specifier to
 .Fa format :
 .Pp
 The
@@ -132,20 +131,6 @@ bit identifier or
 for the last bit identifier.
 .Pp
 The
-.Cm \&%D
-identifier is meant to assist in hexdumps.
-It requires two arguments: a
-.Vt "u_char *"
-pointer and a
-.Vt "char *"
-string.
-The memory pointed to be the pointer is output in hexadecimal one byte at
-a time.
-The string is used as a delimiter between individual bytes.
-If present, a width directive will specify the number of bytes to display.
-By default, 16 bytes of data are output.
-.Pp
-The
 .Fn log
 function uses
 .Xr syslog 3
@@ -210,14 +195,12 @@ kprintf_test(void)
 {
 
        kprintf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en");
-       kprintf("out: %4D\en", "AAAA", ":");
 }
 .Ed
 .Pp
 will produce the following output:
 .Bd -literal -offset indent
 reg=3<BITTWO,BITONE>
-out: 41:41:41:41
 .Ed
 .Pp
 The call
index 9c5f040..9715ab8 100644 (file)
@@ -568,7 +568,6 @@ kvcprintf(char const *fmt, void (*func)(int, void*), void *arg,
        char nbuf[MAXNBUF];
        char *d;
        const char *p, *percent, *q;
-       u_char *up;
        int ch, n;
        uintmax_t num;
        int base, tmp, width, ladjust, sharpflag, neg, sign, dot;
@@ -696,20 +695,6 @@ reswitch:
                case 'c':
                        PCHAR(__va_arg(ap, int));
                        break;
-               case 'D':
-                       up = __va_arg(ap, u_char *);
-                       p = __va_arg(ap, char *);
-                       if (!width)
-                               width = 16;
-                       while(width--) {
-                               PCHAR(hex2ascii(*up >> 4));
-                               PCHAR(hex2ascii(*up & 0x0f));
-                               up++;
-                               if (width)
-                                       for (q=p;*q;q++)
-                                               PCHAR(*q);
-                       }
-                       break;
                case 'd':
                case 'i':
                        base = 10;