diff options
Diffstat (limited to 'stdio-common/_itoa.h')
-rw-r--r-- | stdio-common/_itoa.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/stdio-common/_itoa.h b/stdio-common/_itoa.h index ab3d1d1d3a..75f5f85892 100644 --- a/stdio-common/_itoa.h +++ b/stdio-common/_itoa.h @@ -1,5 +1,5 @@ /* Internal function for converting integers to ASCII. -Copyright (C) 1994, 1995 Free Software Foundation, Inc. +Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -29,4 +29,31 @@ Cambridge, MA 02139, USA. */ extern char *_itoa __P ((unsigned long long int value, char *buflim, unsigned int base, int upper_case)); +static inline char *_itoa_word (unsigned long value, char *buflim, + unsigned int base, int upper_case) +{ + extern const char _itoa_upper_digits[], _itoa_lower_digits[]; + const char *digits = upper_case ? _itoa_upper_digits : _itoa_lower_digits; + char *bp = buflim; + + switch (base) + { +#define SPECIAL(Base) \ + case Base: \ + do \ + *--bp = digits[value % Base]; \ + while ((value /= Base) != 0); \ + break + + SPECIAL (10); + SPECIAL (16); + SPECIAL (8); + default: + do + *--bp = digits[value % base]; + while ((value /= base) != 0); + } + return bp; +} + #endif /* itoa.h */ |