#include <libpayload.h>
#include <string.h>
#include <ctype.h>
+#include <inttypes.h>
#include <errno.h>
/**
*
* @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)
if (ch >= '0' && ch <= '9')
return ch - '0';
else
- return tolower(ch) - 'a';
+ return 10 + tolower(ch) - 'a';
}
/**
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
* @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;
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