fxlibc/src/stdlib/strtoull.c

22 lines
496 B
C
Raw Normal View History

2024-01-14 13:44:27 +01:00
#include "stdlib_p.h"
2021-05-19 21:39:33 +02:00
#include <errno.h>
unsigned long long int strtoull(char const * restrict ptr,
char ** restrict endptr, int base)
{
unsigned long long n = 0;
if(endptr)
*endptr = (char *)ptr;
struct __scanf_input in = { .str = ptr, .fp = NULL };
__scanf_start(&in);
int err = __strto_int(&in, base, NULL, (long long *)&n, true, INT_MAX);
__scanf_end(&in);
if(err != 0)
errno = (err == EOF) ? EINVAL : err;
if(err != EINVAL && endptr)
*endptr = (char *)in.str;
return n;
2021-05-19 21:39:33 +02:00
}