Mercurial > flash_v2
changeset 548:fb853432c81a
* src/output/vfnprintf.cxx: Add support for C99 'z' flag (size_t).
| author | jlarmour |
|---|---|
| date | Wed, 29 Jan 2003 17:27:33 +0000 |
| parents | 181928a65a25 |
| children | 7002f6e48db9 |
| files | packages/language/c/libc/stdio/current/ChangeLog packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx |
| diffstat | 2 files changed, 18 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/language/c/libc/stdio/current/ChangeLog +++ b/packages/language/c/libc/stdio/current/ChangeLog @@ -1,3 +1,7 @@ +2003-01-29 Jonathan Larmour <jifl@eCosCentric.com> + + * src/output/vfnprintf.cxx: Add support for C99 'z' flag (size_t). + 2002-09-02 Andrew Lunn <andrew.lunn@ascom.ch> * include/stream.inl (set_position): Fixed typo in none buffered
--- a/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx +++ b/packages/language/c/libc/stdio/current/src/output/vfnprintf.cxx @@ -150,6 +150,7 @@ externC mbtowc_fn_type __get_current_loc #define SHORTINT 0x040 /* short integer */ #define ZEROPAD 0x080 /* zero (as opposed to blank) pad */ #define FPT 0x100 /* Floating point number */ +#define SIZET 0x200 /* size_t */ externC int vfnprintf ( FILE *stream, size_t n, const char *format, va_list arg) @@ -237,14 +238,16 @@ CYG_MACRO_END #define SARG() \ (flags&QUADINT ? va_arg(arg, cyg_int64) : \ - flags&LONGINT ? va_arg(arg, cyg_int32) : \ - flags&SHORTINT ? (long)va_arg(arg, cyg_int32) : \ - (long)va_arg(arg, cyg_int32)) + flags&LONGINT ? va_arg(arg, long) : \ + flags&SHORTINT ? (long)(short)va_arg(arg, int) : \ + flags&SIZET ? va_arg(arg, size_t) : \ + (long)va_arg(arg, int)) #define UARG() \ (flags&QUADINT ? va_arg(arg, cyg_uint64) : \ - flags&LONGINT ? va_arg(arg, cyg_uint32) : \ - flags&SHORTINT ? (unsigned long)va_arg(arg, cyg_uint32) : \ - (unsigned long)va_arg(arg, cyg_uint32)) + flags&LONGINT ? va_arg(arg, unsigned long) : \ + flags&SHORTINT ? (unsigned long)(unsigned short)va_arg(arg, int) : \ + flags&SIZET ? va_arg(arg, size_t) : \ + (unsigned long)va_arg(arg, unsigned int)) xdigs = NULL; // stop compiler whinging @@ -450,6 +453,8 @@ reswitch: switch (ch) { *va_arg(arg, long *) = ret; else if (flags & SHORTINT) *va_arg(arg, short *) = ret; + else if (flags & SIZET) + *va_arg(arg, size_t *) = ret; else *va_arg(arg, int *) = ret; continue; /* no output */ @@ -572,6 +577,9 @@ number: if ((dprec = pre size = buf + BUF - cp; skipsize: break; + case 'z': + flags |= SIZET; + goto rflag; default: /* "%?" prints ?, unless ? is NUL */ if (ch == '\0') goto done;
