1 #include "stdio_impl.h"
8 static unsigned long long strtox(const char *s
, char **p
, int base
, unsigned long long lim
)
13 unsigned long long y
= __intscan(&f
, base
, 1, lim
);
15 size_t cnt
= shcnt(&f
);
21 unsigned long long strtoull(const char *restrict s
, char **restrict p
, int base
)
23 return strtox(s
, p
, base
, ULLONG_MAX
);
26 long long strtoll(const char *restrict s
, char **restrict p
, int base
)
28 return strtox(s
, p
, base
, LLONG_MIN
);
31 unsigned long strtoul(const char *restrict s
, char **restrict p
, int base
)
33 return strtox(s
, p
, base
, ULONG_MAX
);
36 long strtol(const char *restrict s
, char **restrict p
, int base
)
38 return strtox(s
, p
, base
, 0UL+LONG_MIN
);
41 intmax_t strtoimax(const char *restrict s
, char **restrict p
, int base
)
43 return strtoll(s
, p
, base
);
46 uintmax_t strtoumax(const char *restrict s
, char **restrict p
, int base
)
48 return strtoull(s
, p
, base
);
51 weak_alias(strtol
, __strtol_internal
);
52 weak_alias(strtoul
, __strtoul_internal
);
53 weak_alias(strtoll
, __strtoll_internal
);
54 weak_alias(strtoull
, __strtoull_internal
);
55 weak_alias(strtoimax
, __strtoimax_internal
);
56 weak_alias(strtoumax
, __strtoumax_internal
);