From b70576b04869ae85b2f79e072efd40f792a16baf Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 13 Nov 2017 11:10:05 -0800 Subject: [PATCH] Remove more trivial char/wchar_t printf differences. Bug: http://b/67371539 Test: ran tests Change-Id: I899458af92517dc21f874519716fa3f3a0f0e3d6 --- libc/stdio/vfprintf.cpp | 9 +++------ libc/stdio/vfwprintf.cpp | 17 ++++++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libc/stdio/vfprintf.cpp b/libc/stdio/vfprintf.cpp index e1aecbc4d..91828801d 100644 --- a/libc/stdio/vfprintf.cpp +++ b/libc/stdio/vfprintf.cpp @@ -43,10 +43,8 @@ #include "printf_common.h" int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { - int ch; /* character from fmt */ - int n, n2; /* handy integers (short term usage) */ + int n, n2; CHAR_TYPE* cp; /* handy char pointer (short term usage) */ - struct __siov* iovp; /* for PRINT macro */ CHAR_TYPE sign; /* sign prefix (' ', '+', '-', or \0) */ int flags; /* flags as above */ int ret; /* return value accumulator */ @@ -90,6 +88,7 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { #define NIOV 8 struct __suio uio; /* output information: summary */ struct __siov iov[NIOV]; /* ... and individual io vectors */ + struct __siov* iovp; /* for PRINT macro */ CHAR_TYPE buf[BUF]; /* buffer with space for digits of uintmax_t */ CHAR_TYPE ox[2]; /* space for 0x; ox[1] is either x, X, or \0 */ union arg* argtable; /* args, built due to positional arg */ @@ -115,9 +114,6 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { static const char xdigs_lower[] = "0123456789abcdef"; static const char xdigs_upper[] = "0123456789ABCDEF"; - /* - * BEWARE, these `goto error' on error, and PAD uses `n'. - */ #define PRINT(ptr, len) \ do { \ iovp->iov_base = (ptr); \ @@ -163,6 +159,7 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { * Scan the format for conversions (`%' character). */ for (;;) { + int ch; for (cp = fmt; (ch = *fmt) != '\0' && ch != '%'; fmt++) continue; if (fmt != cp) { ptrdiff_t m = fmt - cp; diff --git a/libc/stdio/vfwprintf.cpp b/libc/stdio/vfwprintf.cpp index e4bbbbae0..7a002025e 100644 --- a/libc/stdio/vfwprintf.cpp +++ b/libc/stdio/vfwprintf.cpp @@ -43,8 +43,7 @@ #include "printf_common.h" int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { - wchar_t ch; /* character from fmt */ - int n, n2, n3; /* handy integers (short term usage) */ + int n, n2; CHAR_TYPE* cp; /* handy char pointer (short term usage) */ CHAR_TYPE sign; /* sign prefix (' ', '+', '-', or \0) */ int flags; /* flags as above */ @@ -86,6 +85,10 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { int realsz; /* field size expanded by dprec */ int size; /* size of converted field or string */ const char* xdigs; /* digits for %[xX] conversion */ +#define NIOV 8 + struct __suio uio; /* output information: summary */ + struct __siov iov[NIOV]; /* ... and individual io vectors */ + struct __siov* iovp; /* for PRINT macro */ CHAR_TYPE buf[BUF]; /* buffer with space for digits of uintmax_t */ CHAR_TYPE ox[2]; /* space for 0x; ox[1] is either x, X, or \0 */ union arg* argtable; /* args, built due to positional arg */ @@ -111,13 +114,9 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { static const char xdigs_lower[] = "0123456789abcdef"; static const char xdigs_upper[] = "0123456789ABCDEF"; - /* - * BEWARE, these `goto error' on error, PRINT uses 'n3', - * PAD uses `n' and 'n3', and PRINTANDPAD uses 'n', 'n2', and 'n3'. - */ #define PRINT(ptr, len) \ do { \ - for (n3 = 0; n3 < (len); n3++) { \ + for (int n3 = 0; n3 < (len); n3++) { \ if ((helpers::xfputwc((ptr)[n3], fp)) == WEOF) goto error; \ } \ } while (0) @@ -139,6 +138,9 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { argtable = NULL; nextarg = 1; va_copy(orgap, ap); + uio.uio_iov = iovp = iov; + uio.uio_resid = 0; + uio.uio_iovcnt = 0; ret = 0; convbuf = NULL; @@ -146,6 +148,7 @@ int FUNCTION_NAME(FILE* fp, const CHAR_TYPE* fmt0, va_list ap) { * Scan the format for conversions (`%' character). */ for (;;) { + int ch; for (cp = fmt; (ch = *fmt) != '\0' && ch != '%'; fmt++) continue; if (fmt != cp) { ptrdiff_t m = fmt - cp;