mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Add _ITOA_NEEDED and _ITOA_WORD_TYPE
Add _ITOA_NEEDED and _ITOA_WORD_TYPE to override _itoa and _itowa.
This commit is contained in:
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
|||||||
|
2012-03-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* stdio-common/_itoa.c: Check _ITOA_NEEDED instead of
|
||||||
|
LLONG_MAX != LONG_MAX.
|
||||||
|
(_itoa_word): Use _ITOA_WORD_TYPE on value.
|
||||||
|
(_fitoa_word): Likewise.
|
||||||
|
* stdio-common/_itowa.c: Check _ITOA_NEEDED instead of
|
||||||
|
LLONG_MAX != LONG_MAX.
|
||||||
|
* stdio-common/_itowa.h: Include <_itoa.h>.
|
||||||
|
(_itowa_word): Use _ITOA_WORD_TYPE on value.
|
||||||
|
(_itowa): New macro. Defined only if _ITOA_NEEDED is false.
|
||||||
|
* sysdeps/generic/_itoa.h (_ITOA_NEEDED): New macro. Defined
|
||||||
|
only if not defined.
|
||||||
|
(_ITOA_WORD_TYPE): Likewise.
|
||||||
|
(_itoa_word): Use _ITOA_WORD_TYPE on value.
|
||||||
|
Check !_ITOA_NEEDED instead of LONG_MAX == LLONG_MAX.
|
||||||
|
|
||||||
2012-03-21 David S. Miller <davem@davemloft.net>
|
2012-03-21 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* sysdeps/sparc/fpu/libm-test-ulps: Update.
|
* sysdeps/sparc/fpu/libm-test-ulps: Update.
|
||||||
|
@ -85,7 +85,7 @@ extern const wchar_t _itowa_lower_digits[] attribute_hidden;
|
|||||||
extern const wchar_t _itowa_upper_digits[] attribute_hidden;
|
extern const wchar_t _itowa_upper_digits[] attribute_hidden;
|
||||||
|
|
||||||
|
|
||||||
#if LLONG_MAX != LONG_MAX
|
#if _ITOA_NEEDED
|
||||||
wchar_t *
|
wchar_t *
|
||||||
_itowa (value, buflim, base, upper_case)
|
_itowa (value, buflim, base, upper_case)
|
||||||
unsigned long long int value;
|
unsigned long long int value;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#define _ITOWA_H 1
|
#define _ITOWA_H 1
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
#include <_itoa.h>
|
||||||
|
|
||||||
/* Convert VALUE into ASCII in base BASE (2..36).
|
/* Convert VALUE into ASCII in base BASE (2..36).
|
||||||
Write backwards starting the character just before BUFLIM.
|
Write backwards starting the character just before BUFLIM.
|
||||||
@ -31,7 +32,7 @@ extern wchar_t *_itowa (unsigned long long int value, wchar_t *buflim,
|
|||||||
|
|
||||||
static inline wchar_t *
|
static inline wchar_t *
|
||||||
__attribute__ ((unused, always_inline))
|
__attribute__ ((unused, always_inline))
|
||||||
_itowa_word (unsigned long value, wchar_t *buflim,
|
_itowa_word (_ITOA_WORD_TYPE value, wchar_t *buflim,
|
||||||
unsigned int base, int upper_case)
|
unsigned int base, int upper_case)
|
||||||
{
|
{
|
||||||
extern const wchar_t _itowa_upper_digits[] attribute_hidden;
|
extern const wchar_t _itowa_upper_digits[] attribute_hidden;
|
||||||
@ -61,4 +62,10 @@ _itowa_word (unsigned long value, wchar_t *buflim,
|
|||||||
}
|
}
|
||||||
#undef SPECIAL
|
#undef SPECIAL
|
||||||
|
|
||||||
|
#if !_ITOA_NEEDED
|
||||||
|
/* No need for special long long versions. */
|
||||||
|
# define _itowa(value, buf, base, upper_case) \
|
||||||
|
_itowa_word (value, buf, base, upper_case)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* itowa.h */
|
#endif /* itowa.h */
|
||||||
|
@ -21,6 +21,21 @@
|
|||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
|
/* When long long is different from long, by default, _itoa_word is
|
||||||
|
provided to convert long to ASCII and _itoa is provided to convert
|
||||||
|
long long. A sysdeps _itoa.h can define _ITOA_NEEDED to 0 and define
|
||||||
|
_ITOA_WORD_TYPE to unsigned long long int to override it so that
|
||||||
|
_itoa_word is changed to convert long long to ASCII and _itoa is
|
||||||
|
mapped to _itoa_word. */
|
||||||
|
|
||||||
|
#ifndef _ITOA_NEEDED
|
||||||
|
# define _ITOA_NEEDED (LONG_MAX != LLONG_MAX)
|
||||||
|
#endif
|
||||||
|
#ifndef _ITOA_WORD_TYPE
|
||||||
|
# define _ITOA_WORD_TYPE unsigned long int
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Convert VALUE into ASCII in base BASE (2..36).
|
/* Convert VALUE into ASCII in base BASE (2..36).
|
||||||
Write backwards starting the character just before BUFLIM.
|
Write backwards starting the character just before BUFLIM.
|
||||||
Return the address of the first (left-to-right) character in the number.
|
Return the address of the first (left-to-right) character in the number.
|
||||||
@ -35,11 +50,11 @@ extern const char _itoa_lower_digits[];
|
|||||||
extern const char _itoa_lower_digits_internal[] attribute_hidden;
|
extern const char _itoa_lower_digits_internal[] attribute_hidden;
|
||||||
|
|
||||||
#ifndef NOT_IN_libc
|
#ifndef NOT_IN_libc
|
||||||
extern char *_itoa_word (unsigned long value, char *buflim,
|
extern char *_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
|
||||||
unsigned int base, int upper_case);
|
unsigned int base, int upper_case);
|
||||||
#else
|
#else
|
||||||
static inline char * __attribute__ ((unused, always_inline))
|
static inline char * __attribute__ ((unused, always_inline))
|
||||||
_itoa_word (unsigned long value, char *buflim,
|
_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
|
||||||
unsigned int base, int upper_case)
|
unsigned int base, int upper_case)
|
||||||
{
|
{
|
||||||
const char *digits = (upper_case
|
const char *digits = (upper_case
|
||||||
@ -76,12 +91,13 @@ _itoa_word (unsigned long value, char *buflim,
|
|||||||
|
|
||||||
/* Similar to the _itoa functions, but output starts at buf and pointer
|
/* Similar to the _itoa functions, but output starts at buf and pointer
|
||||||
after the last written character is returned. */
|
after the last written character is returned. */
|
||||||
extern char *_fitoa_word (unsigned long value, char *buf, unsigned int base,
|
extern char *_fitoa_word (_ITOA_WORD_TYPE value, char *buf,
|
||||||
|
unsigned int base,
|
||||||
int upper_case) attribute_hidden;
|
int upper_case) attribute_hidden;
|
||||||
extern char *_fitoa (unsigned long long value, char *buf, unsigned int base,
|
extern char *_fitoa (unsigned long long value, char *buf, unsigned int base,
|
||||||
int upper_case) attribute_hidden;
|
int upper_case) attribute_hidden;
|
||||||
|
|
||||||
#if LONG_MAX == LLONG_MAX
|
#if !_ITOA_NEEDED
|
||||||
/* No need for special long long versions. */
|
/* No need for special long long versions. */
|
||||||
# define _itoa(value, buf, base, upper_case) \
|
# define _itoa(value, buf, base, upper_case) \
|
||||||
_itoa_word (value, buf, base, upper_case)
|
_itoa_word (value, buf, base, upper_case)
|
||||||
|
Reference in New Issue
Block a user