[libc] Allow strtoul() to interpret negative numbers

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2012-04-17 10:15:29 +01:00
parent d11b82f0e4
commit 1d33649516
4 changed files with 25 additions and 4 deletions

View File

@@ -35,8 +35,17 @@ int inet_aton ( const char *cp, struct in_addr *inp ) {
unsigned long strtoul ( const char *p, char **endp, int base ) {
unsigned long ret = 0;
int negative = 0;
unsigned int charval;
while ( isspace ( *p ) )
p++;
if ( *p == '-' ) {
negative = 1;
p++;
}
base = strtoul_base ( &p, base );
while ( 1 ) {
@@ -47,6 +56,9 @@ unsigned long strtoul ( const char *p, char **endp, int base ) {
p++;
}
if ( negative )
ret = -ret;
if ( endp )
*endp = ( char * ) p;

View File

@@ -29,8 +29,17 @@ FILE_LICENCE ( GPL2_OR_LATER );
*/
unsigned long long strtoull ( const char *p, char **endp, int base ) {
unsigned long long ret = 0;
int negative = 0;
unsigned int charval;
while ( isspace ( *p ) )
p++;
if ( *p == '-' ) {
negative = 1;
p++;
}
base = strtoul_base ( &p, base );
while ( 1 ) {
@@ -41,6 +50,9 @@ unsigned long long strtoull ( const char *p, char **endp, int base ) {
p++;
}
if ( negative )
ret = -ret;
if ( endp )
*endp = ( char * ) p;