PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
strtoul.c
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
11
#define SYSCLIB_DISABLE_BUILTINS
12
#include <
sysclib.h
>
13
#include "sysclib_determine_base.h"
14
15
unsigned
long
strtoul(
const
char
*s,
char
**endptr,
int
base)
16
{
17
char
*v3;
18
unsigned
int
v6;
19
int
v7;
20
int
v8;
21
char
v9;
22
int
v10;
23
char
*v11;
24
25
v3 = (
char
*)s;
26
v6 = 0;
27
if
(!s)
28
{
29
return
v6;
30
}
31
while
(isspace(*v3) != 0)
32
{
33
v3 += 1;
34
}
35
if
((
unsigned
int
)(base - 2) >= 0x23)
36
{
37
base = 0;
38
}
39
if
(!base)
40
{
41
base = 10;
42
}
43
v7 = *v3;
44
if
(v7 != 48)
45
{
46
if
(toupper(v7) == 79)
47
{
48
v3 += 1;
49
base = 8;
50
}
51
goto
LABEL_19;
52
}
53
v8 = *++v3;
54
if
(v8 == 88)
55
{
56
goto
LABEL_15;
57
}
58
if
(v8 < 89)
59
{
60
if
(v8 != 66)
61
{
62
goto
LABEL_19;
63
}
64
goto
LABEL_16;
65
}
66
if
(v8 == 98)
67
{
68
LABEL_16:
69
v3 += 1;
70
base = 2;
71
goto
LABEL_19;
72
}
73
if
(v8 == 120)
74
{
75
LABEL_15:
76
v3 += 1;
77
base = 16;
78
}
79
LABEL_19:
80
while
(1)
81
{
82
v9 = *v3++;
83
v10 = sysclib_determine_base(v9);
84
if
(v10 >= base)
85
{
86
break
;
87
}
88
v6 = v6 * base + v10;
89
}
90
v11 = v3 - 1;
91
if
(endptr)
92
{
93
*endptr = v11;
94
}
95
return
v6;
96
}
sysclib.h
iop
system
sysclib
src
size_optimized
strtoul.c
Generated on Thu Nov 14 2024 05:25:29 for PS2SDK by
1.9.8