* smallprint.c (rn): Allow long long values.

(__small_vsprintf): Add 'D', 'U' and 'X' formats for long long
	parameters.
This commit is contained in:
Corinna Vinschen 2002-02-22 18:22:24 +00:00
parent 76135eab62
commit a6790c5f11
2 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2001-02-22 Corinna Vinschen <corinna@vinschen.de>
* smallprint.c (rn): Allow long long values.
(__small_vsprintf): Add 'D', 'U' and 'X' formats for long long
parameters.
2002-02-19 Christopher Faylor <cgf@redhat.com> 2002-02-19 Christopher Faylor <cgf@redhat.com>
* fhandler.cc (fhandler_base::puts_readahead): Remove default parameter * fhandler.cc (fhandler_base::puts_readahead): Remove default parameter

View File

@ -19,11 +19,11 @@ int __small_sprintf (char *dst, const char *fmt,...);
int __small_vsprintf (char *dst, const char *fmt, va_list ap); int __small_vsprintf (char *dst, const char *fmt, va_list ap);
static char * static char *
rn (char *dst, int base, int dosign, int val, int len, int pad) rn (char *dst, int base, int dosign, long long val, int len, int pad)
{ {
/* longest number is 4294967295, 10 digits */ /* longest number is ULLONG_MAX, 18446744073709551615, 20 digits */
unsigned uval; unsigned uval;
char res[10]; char res[20];
static const char str[16] = "0123456789ABCDEF"; static const char str[16] = "0123456789ABCDEF";
int l = 0; int l = 0;
@ -126,9 +126,15 @@ __small_vsprintf (char *dst, const char *fmt, va_list ap)
case 'd': case 'd':
dst = rn (dst, 10, addsign, va_arg (ap, int), len, pad); dst = rn (dst, 10, addsign, va_arg (ap, int), len, pad);
break; break;
case 'D':
dst = rn (dst, 10, addsign, va_arg (ap, long long), len, pad);
break;
case 'u': case 'u':
dst = rn (dst, 10, 0, va_arg (ap, int), len, pad); dst = rn (dst, 10, 0, va_arg (ap, int), len, pad);
break; break;
case 'U':
dst = rn (dst, 10, 0, va_arg (ap, long long), len, pad);
break;
case 'p': case 'p':
*dst++ = '0'; *dst++ = '0';
*dst++ = 'x'; *dst++ = 'x';
@ -136,6 +142,9 @@ __small_vsprintf (char *dst, const char *fmt, va_list ap)
case 'x': case 'x':
dst = rn (dst, 16, 0, va_arg (ap, int), len, pad); dst = rn (dst, 16, 0, va_arg (ap, int), len, pad);
break; break;
case 'X':
dst = rn (dst, 16, 0, va_arg (ap, long long), len, pad);
break;
case 'P': case 'P':
if (!GetModuleFileName (NULL, tmp, MAX_PATH)) if (!GetModuleFileName (NULL, tmp, MAX_PATH))
s = "cygwin program"; s = "cygwin program";