libc: Remove printf-like functions
authorAntonio Nino Diaz <[email protected]>
Wed, 15 Aug 2018 15:54:55 +0000 (16:54 +0100)
committerAntonio Nino Diaz <[email protected]>
Wed, 22 Aug 2018 09:26:04 +0000 (10:26 +0100)
They are too big for the Trusted Firmware, and it can be confusing to
have two versions of the same functions with different names. tf_printf
and tf_snprintf will replace them in the next patch.

Change-Id: I978414ac169cc3156e249549ef101a70eb31a295
Signed-off-by: Antonio Nino Diaz <[email protected]>
lib/libc/printf.c [deleted file]
lib/libc/subr_prf.c [deleted file]

diff --git a/lib/libc/printf.c b/lib/libc/printf.c
deleted file mode 100644 (file)
index f615641..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stdio.h>
-#include <stdarg.h>
-
-/* Choose max of 128 chars for now. */
-#define PRINT_BUFFER_SIZE 128
-int printf(const char *fmt, ...)
-{
-       va_list args;
-       char buf[PRINT_BUFFER_SIZE];
-       int count;
-
-       va_start(args, fmt);
-       vsnprintf(buf, sizeof(buf) - 1, fmt, args);
-       va_end(args);
-
-       /* Use putchar directly as 'puts()' adds a newline. */
-       buf[PRINT_BUFFER_SIZE - 1] = '\0';
-       count = 0;
-       while (buf[count])
-       {
-               if (putchar(buf[count]) != EOF) {
-                       count++;
-               } else {
-                       count = EOF;
-                       break;
-               }
-       }
-
-       return count;
-}
diff --git a/lib/libc/subr_prf.c b/lib/libc/subr_prf.c
deleted file mode 100644 (file)
index c103562..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-/*-
- * Copyright (c) 1986, 1988, 1991, 1993
- *     The Regents of the University of California.  All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)subr_prf.c  8.3 (Berkeley) 1/21/94
- */
-
-/*
- * Portions copyright (c) 2009-2014, ARM Limited and Contributors.
- * All rights reserved.
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <string.h>
-#include <ctype.h>
-
-typedef unsigned char u_char;
-typedef unsigned int u_int;
-typedef int64_t quad_t;
-typedef uint64_t u_quad_t;
-typedef unsigned long u_long;
-typedef unsigned short u_short;
-
-static inline int imax(int a, int b) { return (a > b ? a : b); }
-
-/*
- * Note that stdarg.h and the ANSI style va_start macro is used for both
- * ANSI and traditional C compilers.
- */
-
-#define TOCONS 0x01
-#define TOTTY  0x02
-#define TOLOG  0x04
-
-/* Max number conversion buffer length: a u_quad_t in base 2, plus NUL byte. */
-#define MAXNBUF        (sizeof(intmax_t) * 8 + 1)
-
-struct putchar_arg {
-       int     flags;
-       int     pri;
-       struct  tty *tty;
-       char    *p_bufr;
-       size_t  n_bufr;
-       char    *p_next;
-       size_t  remain;
-};
-
-struct snprintf_arg {
-       char    *str;
-       size_t  remain;
-};
-
-extern int log_open;
-
-static char *ksprintn(char *nbuf, uintmax_t num, int base, int *len, int upper);
-static void  snprintf_func(int ch, void *arg);
-static int kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap);
-
-int vsnprintf(char *str, size_t size, const char *format, va_list ap);
-
-static char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
-#define hex2ascii(hex) (hex2ascii_data[hex])
-
-/*
- * Scaled down version of sprintf(3).
- */
-int
-sprintf(char *buf, const char *cfmt, ...)
-{
-       int retval;
-       va_list ap;
-
-       va_start(ap, cfmt);
-       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
-       buf[retval] = '\0';
-       va_end(ap);
-       return (retval);
-}
-
-/*
- * Scaled down version of vsprintf(3).
- */
-int
-vsprintf(char *buf, const char *cfmt, va_list ap)
-{
-       int retval;
-
-       retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap);
-       buf[retval] = '\0';
-       return (retval);
-}
-
-/*
- * Scaled down version of snprintf(3).
- */
-int
-snprintf(char *str, size_t size, const char *format, ...)
-{
-       int retval;
-       va_list ap;
-
-       va_start(ap, format);
-       retval = vsnprintf(str, size, format, ap);
-       va_end(ap);
-       return(retval);
-}
-
-/*
- * Scaled down version of vsnprintf(3).
- */
-int
-vsnprintf(char *str, size_t size, const char *format, va_list ap)
-{
-       struct snprintf_arg info;
-       int retval;
-
-       info.str = str;
-       info.remain = size;
-       retval = kvprintf(format, snprintf_func, &info, 10, ap);
-       if (info.remain >= 1)
-               *info.str++ = '\0';
-       return (retval);
-}
-
-static void
-snprintf_func(int ch, void *arg)
-{
-       struct snprintf_arg *const info = arg;
-
-       if (info->remain >= 2) {
-               *info->str++ = ch;
-               info->remain--;
-       }
-}
-
-
-/*
- * Kernel version which takes radix argument vsnprintf(3).
- */
-int
-vsnrprintf(char *str, size_t size, int radix, const char *format, va_list ap)
-{
-       struct snprintf_arg info;
-       int retval;
-
-       info.str = str;
-       info.remain = size;
-       retval = kvprintf(format, snprintf_func, &info, radix, ap);
-       if (info.remain >= 1)
-               *info.str++ = '\0';
-       return (retval);
-}
-
-
-/*
- * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
- * order; return an optional length and a pointer to the last character
- * written in the buffer (i.e., the first character of the string).
- * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
- */
-static char *
-ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
-{
-       char *p, c;
-
-       p = nbuf;
-       *p = '\0';
-       do {
-               c = hex2ascii(num % base);
-               *++p = upper ? toupper(c) : c;
-       } while (num /= base);
-       if (lenp)
-               *lenp = p - nbuf;
-       return (p);
-}
-
-/*
- * Scaled down version of printf(3).
- *
- * Two additional formats:
- *
- * The format %b is supported to decode error registers.
- * Its usage is:
- *
- *     printf("reg=%b\n", regval, "<base><arg>*");
- *
- * where <base> is the output base expressed as a control character, e.g.
- * \10 gives octal; \20 gives hex.  Each arg is a sequence of characters,
- * the first of which gives the bit number to be inspected (origin 1), and
- * the next characters (up to a control character, i.e. a character <= 32),
- * give the name of the register.  Thus:
- *
- *     kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
- *
- * would produce output:
- *
- *     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 ...
- */
-int
-kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap)
-{
-#define PCHAR(c) {int cc=(c); if (func) (*func)(cc,arg); else *d++ = cc; retval++; }
-       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;
-       int cflag, hflag, jflag, tflag, zflag;
-       int dwidth, upper;
-       char padc;
-       int stop = 0, retval = 0;
-
-       num = 0;
-       if (!func)
-               d = (char *) arg;
-       else
-               d = NULL;
-
-       if (fmt == NULL)
-               fmt = "(fmt null)\n";
-
-       if (radix < 2 || radix > 36)
-               radix = 10;
-
-       for (;;) {
-               padc = ' ';
-               width = 0;
-               while ((ch = (u_char)*fmt++) != '%' || stop) {
-                       if (ch == '\0')
-                               return (retval);
-                       PCHAR(ch);
-               }
-               percent = fmt - 1;
-               qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
-               sign = 0; dot = 0; dwidth = 0; upper = 0;
-               cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
-reswitch:      switch (ch = (u_char)*fmt++) {
-               case '.':
-                       dot = 1;
-                       goto reswitch;
-               case '#':
-                       sharpflag = 1;
-                       goto reswitch;
-               case '+':
-                       sign = 1;
-                       goto reswitch;
-               case '-':
-                       ladjust = 1;
-                       goto reswitch;
-               case '%':
-                       PCHAR(ch);
-                       break;
-               case '*':
-                       if (!dot) {
-                               width = va_arg(ap, int);
-                               if (width < 0) {
-                                       ladjust = !ladjust;
-                                       width = -width;
-                               }
-                       } else {
-                               dwidth = va_arg(ap, int);
-                       }
-                       goto reswitch;
-               case '0':
-                       if (!dot) {
-                               padc = '0';
-                               goto reswitch;
-                       }
-               case '1': case '2': case '3': case '4':
-               case '5': case '6': case '7': case '8': case '9':
-                               for (n = 0;; ++fmt) {
-                                       n = n * 10 + ch - '0';
-                                       ch = *fmt;
-                                       if (ch < '0' || ch > '9')
-                                               break;
-                               }
-                       if (dot)
-                               dwidth = n;
-                       else
-                               width = n;
-                       goto reswitch;
-               case 'b':
-                       num = (u_int)va_arg(ap, int);
-                       p = va_arg(ap, char *);
-                       for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
-                               PCHAR(*q--);
-
-                       if (num == 0)
-                               break;
-
-                       for (tmp = 0; *p;) {
-                               n = *p++;
-                               if (num & (1 << (n - 1))) {
-                                       PCHAR(tmp ? ',' : '<');
-                                       for (; (n = *p) > ' '; ++p)
-                                               PCHAR(n);
-                                       tmp = 1;
-                               } else
-                                       for (; *p > ' '; ++p)
-                                               continue;
-                       }
-                       if (tmp)
-                               PCHAR('>');
-                       break;
-               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;
-                       sign = 1;
-                       goto handle_sign;
-               case 'h':
-                       if (hflag) {
-                               hflag = 0;
-                               cflag = 1;
-                       } else
-                               hflag = 1;
-                       goto reswitch;
-               case 'j':
-                       jflag = 1;
-                       goto reswitch;
-               case 'l':
-                       if (lflag) {
-                               lflag = 0;
-                               qflag = 1;
-                       } else
-                               lflag = 1;
-                       goto reswitch;
-               case 'n':
-                       if (jflag)
-                               *(va_arg(ap, intmax_t *)) = retval;
-                       else if (qflag)
-                               *(va_arg(ap, quad_t *)) = retval;
-                       else if (lflag)
-                               *(va_arg(ap, long *)) = retval;
-                       else if (zflag)
-                               *(va_arg(ap, size_t *)) = retval;
-                       else if (hflag)
-                               *(va_arg(ap, short *)) = retval;
-                       else if (cflag)
-                               *(va_arg(ap, char *)) = retval;
-                       else
-                               *(va_arg(ap, int *)) = retval;
-                       break;
-               case 'o':
-                       base = 8;
-                       goto handle_nosign;
-               case 'p':
-                       base = 16;
-                       sharpflag = (width == 0);
-                       sign = 0;
-                       num = (uintptr_t)va_arg(ap, void *);
-                       goto number;
-               case 'q':
-                       qflag = 1;
-                       goto reswitch;
-               case 'r':
-                       base = radix;
-                       if (sign)
-                               goto handle_sign;
-                       goto handle_nosign;
-               case 's':
-                       p = va_arg(ap, char *);
-                       if (p == NULL)
-                               p = "(null)";
-                       if (!dot)
-                               n = strlen (p);
-                       else
-                               for (n = 0; n < dwidth && p[n]; n++)
-                                       continue;
-
-                       width -= n;
-
-                       if (!ladjust && width > 0)
-                               while (width--)
-                                       PCHAR(padc);
-                       while (n--)
-                               PCHAR(*p++);
-                       if (ladjust && width > 0)
-                               while (width--)
-                                       PCHAR(padc);
-                       break;
-               case 't':
-                       tflag = 1;
-                       goto reswitch;
-               case 'u':
-                       base = 10;
-                       goto handle_nosign;
-               case 'X':
-                       upper = 1;
-               case 'x':
-                       base = 16;
-                       goto handle_nosign;
-               case 'y':
-                       base = 16;
-                       sign = 1;
-                       goto handle_sign;
-               case 'z':
-                       zflag = 1;
-                       goto reswitch;
-handle_nosign:
-                       sign = 0;
-                       if (jflag)
-                               num = va_arg(ap, uintmax_t);
-                       else if (qflag)
-                               num = va_arg(ap, u_quad_t);
-                       else if (tflag)
-                               num = va_arg(ap, ptrdiff_t);
-                       else if (lflag)
-                               num = va_arg(ap, u_long);
-                       else if (zflag)
-                               num = va_arg(ap, size_t);
-                       else if (hflag)
-                               num = (u_short)va_arg(ap, int);
-                       else if (cflag)
-                               num = (u_char)va_arg(ap, int);
-                       else
-                               num = va_arg(ap, u_int);
-                       goto number;
-handle_sign:
-                       if (jflag)
-                               num = va_arg(ap, intmax_t);
-                       else if (qflag)
-                               num = va_arg(ap, quad_t);
-                       else if (tflag)
-                               num = va_arg(ap, ptrdiff_t);
-                       else if (lflag)
-                               num = va_arg(ap, long);
-                       else if (zflag)
-                               num = va_arg(ap, ssize_t);
-                       else if (hflag)
-                               num = (short)va_arg(ap, int);
-                       else if (cflag)
-                               num = (char)va_arg(ap, int);
-                       else
-                               num = va_arg(ap, int);
-number:
-                       if (sign && (intmax_t)num < 0) {
-                               neg = 1;
-                               num = -(intmax_t)num;
-                       }
-                       p = ksprintn(nbuf, num, base, &n, upper);
-                       tmp = 0;
-                       if (sharpflag && num != 0) {
-                               if (base == 8)
-                                       tmp++;
-                               else if (base == 16)
-                                       tmp += 2;
-                       }
-                       if (neg)
-                               tmp++;
-
-                       if (!ladjust && padc == '0')
-                               dwidth = width - tmp;
-                       width -= tmp + imax(dwidth, n);
-                       dwidth -= n;
-                       if (!ladjust)
-                               while (width-- > 0)
-                                       PCHAR(' ');
-                       if (neg)
-                               PCHAR('-');
-                       if (sharpflag && num != 0) {
-                               if (base == 8) {
-                                       PCHAR('0');
-                               } else if (base == 16) {
-                                       PCHAR('0');
-                                       PCHAR('x');
-                               }
-                       }
-                       while (dwidth-- > 0)
-                               PCHAR('0');
-
-                       while (*p)
-                               PCHAR(*p--);
-
-                       if (ladjust)
-                               while (width-- > 0)
-                                       PCHAR(' ');
-
-                       break;
-               default:
-                       while (percent < fmt)
-                               PCHAR(*percent++);
-                       /*
-                        * Since we ignore an formatting argument it is no 
-                        * longer safe to obey the remaining formatting
-                        * arguments as the arguments will no longer match
-                        * the format specs.
-                        */
-                       stop = 1;
-                       break;
-               }
-       }
-#undef PCHAR
-}