diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2003-11-27 20:15:47 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2003-11-27 20:15:47 +0000 |
commit | 83bf7d2f89d008a8d6c958f2020f78e26c525a4d (patch) | |
tree | 86438a54fdc28d391f79392261823bfbcfe6e0d0 /newlib/libc | |
parent | 6bbb700c348150b7f16b185ec63eb0c1fcc92584 (diff) | |
download | cygnal-83bf7d2f89d008a8d6c958f2020f78e26c525a4d.tar.gz cygnal-83bf7d2f89d008a8d6c958f2020f78e26c525a4d.tar.bz2 cygnal-83bf7d2f89d008a8d6c958f2020f78e26c525a4d.zip |
2003-11-27 Jeff Johnston <jjohnstn@redhat.com>
* libc/include/stdlib.h (_atoll_r, _atol_r): New prototypes.
* libc/stdlib/atol.c (_atol_r): New reentrant function.
* libc/stdlib/atoll.c (_atoll_r): Ditto.
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/include/stdlib.h | 2 | ||||
-rw-r--r-- | newlib/libc/stdlib/atol.c | 9 | ||||
-rw-r--r-- | newlib/libc/stdlib/atoll.c | 27 |
3 files changed, 35 insertions, 3 deletions
diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h index 53dec3ec4..2b8a1765f 100644 --- a/newlib/libc/include/stdlib.h +++ b/newlib/libc/include/stdlib.h @@ -63,6 +63,7 @@ float _EXFUN(atoff,(const char *__nptr)); #endif int _EXFUN(atoi,(const char *__nptr)); long _EXFUN(atol,(const char *__nptr)); +long _EXFUN(_atol_r,(struct _reent *, const char *__nptr)); _PTR _EXFUN(bsearch,(const _PTR __key, const _PTR __base, size_t __nmemb, @@ -164,6 +165,7 @@ unsigned short * _VOID _EXFUN(srand48,(long)); _VOID _EXFUN(_srand48_r,(struct _reent *, long)); long long _EXFUN(atoll,(const char *__nptr)); +long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr)); long long _EXFUN(llabs,(long long)); lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom)); long long _EXFUN(strtoll,(const char *__n, char **__end_PTR, int __base)); diff --git a/newlib/libc/stdlib/atol.c b/newlib/libc/stdlib/atol.c index 6b059a8d2..8d0e5cd0b 100644 --- a/newlib/libc/stdlib/atol.c +++ b/newlib/libc/stdlib/atol.c @@ -5,8 +5,17 @@ #include <stdlib.h> #include <_ansi.h> +#ifndef _REENT_ONLY long _DEFUN (atol, (s), _CONST char *s) { return strtol (s, NULL, 10); } +#endif /* !_REENT_ONLY */ + +long +_DEFUN (_atol_r, (ptr, s), struct _reent *ptr _AND _CONST char *s) +{ + return _strtol_r (ptr, s, NULL, 10); +} + diff --git a/newlib/libc/stdlib/atoll.c b/newlib/libc/stdlib/atoll.c index 1dd4ec39e..a6abd9595 100644 --- a/newlib/libc/stdlib/atoll.c +++ b/newlib/libc/stdlib/atoll.c @@ -4,21 +4,32 @@ FUNCTION INDEX atoll +INDEX + _atoll_r ANSI_SYNOPSIS #include <stdlib.h> long long atoll(const char *<[str]>); + long long _atoll_r(struct _reent *<[ptr]>, const char *<[str]>); TRAD_SYNOPSIS #include <stdlib.h> long long atoll(<[str]>) const char *<[str]>; + long long _atoll_r(<[ptr]>, <[str]>) + struct _reent *<[ptr]>; + const char *<[str]>; + DESCRIPTION The function <<atoll>> converts the initial portion of the string -pointed to by <<*<[str]>>> to a type <<long long>>. The call to -atoll(str) should be equivalent to strtoll(str, (char **)NULL, 10) -except that <<atoll>> doesn't detect errors. +pointed to by <<*<[str]>>> to a type <<long long>>. A call to +atoll(str) in this implementation is equivalent to +strtoll(str, (char **)NULL, 10) including behavior on error. + +The alternate function <<_atoll_r>> is a reentrant version. The +extra argument <[reent]> is a pointer to a reentrancy structure. + RETURNS The converted value. @@ -65,9 +76,19 @@ No supporting OS subroutines are required. #include <stdlib.h> #include <stddef.h> +#ifndef _REENT_ONLY long long _DEFUN(atoll, (str), _CONST char *str) { return strtoll(str, (char **)NULL, 10); } +#endif /* !_REENT_ONLY */ + +long long +_DEFUN(_atoll_r, (ptr, str), + struct _reent *ptr _AND + _CONST char *str) +{ + return _strtoll_r(ptr, str, (char **)NULL, 10); +} |