mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 04:20:17 +03:00
[libc] Allow strtoul() to interpret negative numbers
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user