@@ -20,123 +20,138 @@ XRCORE_API CInifile const* pSettingsAuth = nullptr;
20
20
* @param readOnly
21
21
* @return
22
22
*/
23
- int _cdecl _i64toa_s (int64_t value, char *str, size_t size, int radix){
24
- uint64_t val;
25
- unsigned int digit;
26
- int is_negative;
27
- char buffer[65 ], *pos;
28
- size_t len;
29
-
30
- if (!(str != NULL ))
31
- return MSVCRT_EINVAL;
32
- if (!(size > 0 ))
33
- return MSVCRT_EINVAL;
34
- if (!(radix >= 2 && radix <= 36 )) {
35
- str[0 ] = ' \0 ' ;
36
- return MSVCRT_EINVAL;
37
- }
38
-
39
- if (value < 0 && radix == 10 ) {
40
- is_negative = 1 ;
41
- val = -value;
42
- } else {
43
- is_negative = 0 ;
44
- val = value;
45
- }
46
-
47
- pos = buffer + 64 ;
48
- *pos = ' \0 ' ;
49
-
50
- do {
51
- digit = val % radix;
52
- val /= radix;
53
-
54
- if (digit < 10 )
55
- *--pos = ' 0' + digit;
56
- else
57
- *--pos = ' a' + digit - 10 ;
58
- } while (val != 0 );
59
-
60
- if (is_negative)
61
- *--pos = ' -' ;
62
-
63
- len = buffer + 65 - pos;
64
- if (len > size) {
65
- size_t i;
66
- char *p = str;
67
-
68
- /* Copy the temporary buffer backwards up to the available number of
69
- * characters. Don't copy the negative sign if present. */
70
-
71
- if (is_negative) {
72
- p++;
73
- size--;
74
- }
75
-
76
- for (pos = buffer + 63 , i = 0 ; i < size; i++)
77
- *p++ = *pos--;
78
-
79
- str[0 ] = ' \0 ' ;
80
- return MSVCRT_ERANGE;
81
- }
82
-
83
- memcpy (str, pos, len);
84
- return 0 ;
85
- }
86
-
87
- int _cdecl _ui64toa_s (uint64_t value, char *str, size_t size, int radix) {
88
- char buffer[65 ], *pos;
89
- int digit;
90
-
91
- if (!(str != NULL ))
92
- return MSVCRT_EINVAL;
93
- if (!(size > 0 ))
94
- return MSVCRT_EINVAL;
95
- if (!(radix >= 2 && radix <= 36 )) {
96
- str[0 ] = ' \0 ' ;
97
- return MSVCRT_EINVAL;
98
- }
99
-
100
- pos = buffer + 64 ;
101
- *pos = ' \0 ' ;
102
-
103
- do {
104
- digit = value % radix;
105
- value /= radix;
106
-
107
- if (digit < 10 )
108
- *--pos = ' 0' + digit;
109
- else
110
- *--pos = ' a' + digit - 10 ;
111
- } while (value != 0 );
112
-
113
- if (buffer - pos + 65 > size) {
114
- return MSVCRT_EINVAL;
115
- }
116
-
117
- memcpy (str, pos, buffer - pos + 65 );
118
- return 0 ;
119
- }
120
-
121
- LARGE_INTEGER _cdecl _atoi64 ( const char *str )
122
- {
123
- ULARGE_INTEGER RunningTotal = 0 ;
23
+ int _cdecl _i64toa_s (int64_t value, char *str, size_t size, int radix)
24
+ {
25
+ uint64_t val;
26
+ unsigned int digit;
27
+ int is_negative;
28
+ char buffer[65 ], *pos;
29
+ size_t len;
30
+
31
+ if (!(str != NULL ))
32
+ return MSVCRT_EINVAL;
33
+ if (!(size > 0 ))
34
+ return MSVCRT_EINVAL;
35
+ if (!(radix >= 2 && radix <= 36 ))
36
+ {
37
+ str[0 ] = ' \0 ' ;
38
+ return MSVCRT_EINVAL;
39
+ }
40
+
41
+ if (value < 0 && radix == 10 )
42
+ {
43
+ is_negative = 1 ;
44
+ val = -value;
45
+ }
46
+ else
47
+ {
48
+ is_negative = 0 ;
49
+ val = value;
50
+ }
51
+
52
+ pos = buffer + 64 ;
53
+ *pos = ' \0 ' ;
54
+
55
+ do
56
+ {
57
+ digit = val % radix;
58
+ val /= radix;
59
+
60
+ if (digit < 10 )
61
+ *--pos = ' 0' + digit;
62
+ else
63
+ *--pos = ' a' + digit - 10 ;
64
+ } while (val != 0 );
65
+
66
+ if (is_negative)
67
+ *--pos = ' -' ;
68
+
69
+ len = buffer + 65 - pos;
70
+ if (len > size)
71
+ {
72
+ size_t i;
73
+ char *p = str;
74
+
75
+ /* Copy the temporary buffer backwards up to the available number of
76
+ * characters. Don't copy the negative sign if present. */
77
+
78
+ if (is_negative)
79
+ {
80
+ p++;
81
+ size--;
82
+ }
83
+
84
+ for (pos = buffer + 63 , i = 0 ; i < size; i++)
85
+ *p++ = *pos--;
86
+
87
+ str[0 ] = ' \0 ' ;
88
+ return MSVCRT_ERANGE;
89
+ }
90
+
91
+ memcpy (str, pos, len);
92
+ return 0 ;
93
+ }
94
+
95
+ int _cdecl _ui64toa_s (uint64_t value, char *str, size_t size, int radix)
96
+ {
97
+ char buffer[65 ], *pos;
98
+ int digit;
99
+
100
+ if (!(str != NULL ))
101
+ return MSVCRT_EINVAL;
102
+ if (!(size > 0 ))
103
+ return MSVCRT_EINVAL;
104
+ if (!(radix >= 2 && radix <= 36 ))
105
+ {
106
+ str[0 ] = ' \0 ' ;
107
+ return MSVCRT_EINVAL;
108
+ }
109
+
110
+ pos = buffer + 64 ;
111
+ *pos = ' \0 ' ;
112
+
113
+ do
114
+ {
115
+ digit = value % radix;
116
+ value /= radix;
117
+
118
+ if (digit < 10 )
119
+ *--pos = ' 0' + digit;
120
+ else
121
+ *--pos = ' a' + digit - 10 ;
122
+ } while (value != 0 );
123
+
124
+ if (buffer - pos + 65 > size)
125
+ {
126
+ return MSVCRT_EINVAL;
127
+ }
128
+
129
+ memcpy (str, pos, buffer - pos + 65 );
130
+ return 0 ;
131
+ }
132
+
133
+ LARGE_INTEGER _cdecl _atoi64 (const char *str)
134
+ {
135
+ ULARGE_INTEGER RunningTotal = 0 ;
124
136
char bMinus = 0 ;
125
137
126
- while (*str == ' ' || (*str >= ' \011 ' && *str <= ' \015 ' )) {
127
- str++;
138
+ while (*str == ' ' || (*str >= ' \011 ' && *str <= ' \015 ' ))
139
+ {
140
+ str++;
128
141
} /* while */
129
142
130
- if (*str == ' +' ) {
131
- str++;
132
- } else if (*str == ' -' ) {
133
- bMinus = 1 ;
134
- str++;
143
+ if (*str == ' +' )
144
+ str++;
145
+ else if (*str == ' -' )
146
+ {
147
+ bMinus = 1 ;
148
+ str++;
135
149
} /* if */
136
150
137
- while (*str >= ' 0' && *str <= ' 9' ) {
138
- RunningTotal = RunningTotal * 10 + *str - ' 0' ;
139
- str++;
151
+ while (*str >= ' 0' && *str <= ' 9' )
152
+ {
153
+ RunningTotal = RunningTotal * 10 + *str - ' 0' ;
154
+ str++;
140
155
} /* while */
141
156
142
157
return bMinus ? -RunningTotal : RunningTotal;
@@ -147,55 +162,66 @@ uint64_t _cdecl _strtoui64_l(const char *nptr, char **endptr, int base, locale_t
147
162
BOOL negative = FALSE ;
148
163
uint64_t ret = 0 ;
149
164
165
+ if (!(nptr != NULL ))
166
+ return 0 ;
167
+ if (!(base == 0 || base >= 2 ))
168
+ return 0 ;
169
+ if (!(base <= 36 ))
170
+ return 0 ;
150
171
151
- if (!(nptr != NULL )) return 0 ;
152
- if (!(base == 0 || base >= 2 )) return 0 ;
153
- if (!(base <= 36 )) return 0 ;
154
-
155
- while (isspace (*nptr)) nptr++;
172
+ while (isspace (*nptr))
173
+ nptr++;
156
174
157
- if (*nptr == ' -' ) {
175
+ if (*nptr == ' -' )
176
+ {
158
177
negative = TRUE ;
159
178
nptr++;
160
- } else if (*nptr == ' +' )
179
+ }
180
+ else if (*nptr == ' +' )
161
181
nptr++;
162
182
163
- if ((base==0 || base==16 ) && *nptr==' 0' && tolower (*(nptr+1 ))==' x' ) {
183
+ if ((base == 0 || base == 16 ) && *nptr == ' 0' && tolower (*(nptr + 1 )) == ' x' )
184
+ {
164
185
base = 16 ;
165
186
nptr += 2 ;
166
187
}
167
188
168
- if (base == 0 ) {
169
- if (*nptr==' 0' )
189
+ if (base == 0 )
190
+ {
191
+ if (*nptr == ' 0' )
170
192
base = 8 ;
171
193
else
172
194
base = 10 ;
173
195
}
174
196
175
- while (*nptr) {
197
+ while (*nptr)
198
+ {
176
199
char cur = tolower (*nptr);
177
200
int v;
178
201
179
- if (isdigit (cur)) {
180
- if (cur >= ' 0' +base)
202
+ if (isdigit (cur))
203
+ {
204
+ if (cur >= ' 0' + base)
181
205
break ;
182
- v = *nptr-' 0' ;
183
- } else {
184
- if (cur<' a' || cur>=' a' +base-10 )
206
+ v = *nptr - ' 0' ;
207
+ }
208
+ else
209
+ {
210
+ if (cur < ' a' || cur >= ' a' + base - 10 )
185
211
break ;
186
- v = cur- ' a' + 10 ;
212
+ v = cur - ' a' + 10 ;
187
213
}
188
214
189
215
nptr++;
190
216
191
- if (ret> MSVCRT_UI64_MAX/ base || ret* base> MSVCRT_UI64_MAX-v) {
217
+ if (ret > MSVCRT_UI64_MAX / base || ret * base > MSVCRT_UI64_MAX - v)
192
218
ret = MSVCRT_UI64_MAX;
193
- } else
194
- ret = ret* base + v;
219
+ else
220
+ ret = ret * base + v;
195
221
}
196
222
197
- if (endptr)
198
- *endptr = (char *)nptr;
223
+ if (endptr)
224
+ *endptr = (char *) nptr;
199
225
200
226
return negative ? -ret : ret;
201
227
}
0 commit comments