From 32c96ddd14acadc82e7fccf110367ec3c8320c85 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 16 Dec 2014 10:55:17 +0000 Subject: * libc/include/stdlib.h (__itoa): Declare prototype. (__utoa): Ditto. (itoa): Ditto, non-strict-ANSI only. (utoa): Ditto. * libc/stdlib/Makefile.am: Add itoa.c and utoa.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/itoa.c: New file. * libc/stdlib/utoa.c: New file. --- newlib/libc/stdlib/itoa.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 newlib/libc/stdlib/itoa.c (limited to 'newlib/libc/stdlib/itoa.c') diff --git a/newlib/libc/stdlib/itoa.c b/newlib/libc/stdlib/itoa.c new file mode 100644 index 000000000..c7c9b8871 --- /dev/null +++ b/newlib/libc/stdlib/itoa.c @@ -0,0 +1,69 @@ +/* +FUNCTION +<>---integer to string + +INDEX + itoa + +ANSI_SYNOPSIS + #include + char *itoa(int <[value]>, char *<[str]>, int <[base]>); + char *__itoa(int <[value]>, char *<[str]>, int <[base]>); + +DESCRIPTION +<> converts the integer [] to a null-terminated string +using the specified base, which must be between 2 and 36, inclusive. +If <[base]> is 10, <[value]> is treated as signed and the string will be +prefixed with '-' if negative. For all other bases, <[value]> is treated as +unsigned. <[str]> should be an array long enough to contain the converted +value, which in the worst case is sizeof(int)*8+1 bytes. + +RETURNS +A pointer to the string, <[str]>, or NULL if <[base]> is invalid. + +PORTABILITY +<> is non-ANSI. + +No supporting OS subroutine calls are required. +*/ + +#include + +char * +_DEFUN (__itoa, (value, str, base), + int value _AND + char *str _AND + int base) +{ + unsigned uvalue; + int i = 0; + + /* Check base is supported. */ + if ((base < 2) || (base > 36)) + { + str[0] = '\0'; + return NULL; + } + + /* Negative numbers are only supported for decimal. + * Cast to unsigned to avoid overflow for maximum negative value. */ + if ((base == 10) && (value < 0)) + { + str[i++] = '-'; + uvalue = (unsigned)-value; + } + else + uvalue = (unsigned)value; + + __utoa (uvalue, &str[i], base); + return str; +} + +char * +_DEFUN (itoa, (value, str, base), + int value _AND + char *str _AND + int base) +{ + return __itoa (value, str, base); +} -- cgit v1.2.3