xref: /reactos/sdk/lib/crt/string/strtoul.c (revision 8a978a17)
1 #include <precomp.h>
2 
3 /* Based on Wine Staging 1.9.9 - dlls/msvcrt/string.c */
4 /******************************************************************
5  *		_strtoul_l (MSVCRT.@)
6  */
7 unsigned long CDECL _strtoul_l(const char* nptr, char** end, int base, _locale_t locale)
8 {
9     __int64 ret = _strtoi64_l(nptr, end, base, locale);
10 
11     if(ret > ULONG_MAX) {
12         ret = ULONG_MAX;
13 #ifndef _LIBCNT_
14         *_errno() = ERANGE;
15 #endif
16     }else if(ret < -(__int64)ULONG_MAX) {
17         ret = 1;
18 #ifndef _LIBCNT_
19         *_errno() = ERANGE;
20 #endif
21     }
22 
23     return ret;
24 }
25 
26 /******************************************************************
27  *		strtoul (MSVCRT.@)
28  */
29 unsigned long CDECL strtoul(const char* nptr, char** end, int base)
30 {
31     return _strtoul_l(nptr, end, base, NULL);
32 }
33