X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=payloads%2Flibpayload%2Flibc%2Fstring.c;h=cfa0b4ada445879e7e7d6f20f2e8971e4bdaf4df;hb=c643fdd157bbd54d15276b212d1f3d0bf64cd3f9;hp=ce5767e4b08600e97b8629639b96750cf7c05203;hpb=e914b501d25fe5af769a3753a56f7b01fb08ab2c;p=coreboot.git diff --git a/payloads/libpayload/libc/string.c b/payloads/libpayload/libc/string.c index ce5767e4b..cfa0b4ada 100644 --- a/payloads/libpayload/libc/string.c +++ b/payloads/libpayload/libc/string.c @@ -32,6 +32,7 @@ #include #include #include +#include #include /** @@ -246,7 +247,7 @@ char *strncat(char *d, const char *s, size_t n) * * @param d The destination string. * @param s The source string. - * @param n Not more than n characters from s will be appended to d. + * @param n d will have at most n-1 characters (plus NUL) after invocation. * @return A pointer to the destination string. */ size_t strlcat(char *d, const char *s, size_t n) @@ -407,7 +408,7 @@ static int _offset(char ch, int base) if (ch >= '0' && ch <= '9') return ch - '0'; else - return tolower(ch) - 'a'; + return 10 + tolower(ch) - 'a'; } /** @@ -473,6 +474,11 @@ long int strtol(const char *ptr, char **endptr, int base) return ret * negative; } +long atol(const char *nptr) +{ + return strtol(nptr, NULL, 10); +} + /** * Convert the initial portion of a string into an unsigned int * @param ptr A pointer to the string to convert @@ -481,9 +487,9 @@ long int strtol(const char *ptr, char **endptr, int base) * @return An unsigned integer representation of the string */ -unsigned long int strtoul(const char *ptr, char **endptr, int base) +unsigned long long int strtoull(const char *ptr, char **endptr, int base) { - int ret = 0; + unsigned long long int ret = 0; if (endptr != NULL) *endptr = (char *) ptr; @@ -530,6 +536,14 @@ unsigned long int strtoul(const char *ptr, char **endptr, int base) return ret; } +unsigned long int strtoul(const char *ptr, char **endptr, int base) +{ + unsigned long long val = strtoull(ptr, endptr, base); + if (val > UINT32_MAX) return UINT32_MAX; + return val; +} + + /** * Determine the number of leading characters in s that match characters in a * @param s A pointer to the string to analyse