diff options
Diffstat (limited to 'libc/misc/internals/ltostr.c')
-rw-r--r-- | libc/misc/internals/ltostr.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libc/misc/internals/ltostr.c b/libc/misc/internals/ltostr.c new file mode 100644 index 000000000..da6fad232 --- /dev/null +++ b/libc/misc/internals/ltostr.c @@ -0,0 +1,52 @@ +/* Copyright (C) 1995,1996 Robert de Bath <rdebath@cix.compulink.co.uk> + * This file is part of the Linux-8086 C library and is distributed + * under the GNU Library General Public License. + */ + +static char buf[34]; + +extern char *ultostr(); + +char *ltostr(val, radix, uppercase) +long val; +int radix; +int uppercase; +{ + char *p; + int flg = 0; + + if (val < 0) { + flg++; + val = -val; + } + p = ultostr(val, radix, uppercase); + if (p && flg) + *--p = '-'; + return p; +} + +char *ultostr(val, radix, uppercase) +unsigned long val; +int radix; +int uppercase; +{ + register char *p; + register int c; + + if (radix > 36 || radix < 2) + return 0; + + p = buf + sizeof(buf); + *--p = '\0'; + + do { + c = val % radix; + val /= radix; + if (c > 9) + *--p = (uppercase ? 'A' : 'a') - 10 + c; + else + *--p = '0' + c; + } + while (val); + return p; +} |