@@ -20,123 +20,138 @@ XRCORE_API CInifile const* pSettingsAuth = nullptr;
2020 * @param readOnly
2121 * @return
2222 */
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 ;
124136 char bMinus = 0 ;
125137
126- while (*str == ' ' || (*str >= ' \011 ' && *str <= ' \015 ' )) {
127- str++;
138+ while (*str == ' ' || (*str >= ' \011 ' && *str <= ' \015 ' ))
139+ {
140+ str++;
128141 } /* while */
129142
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++;
135149 } /* if */
136150
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++;
140155 } /* while */
141156
142157 return bMinus ? -RunningTotal : RunningTotal;
@@ -147,55 +162,66 @@ uint64_t _cdecl _strtoui64_l(const char *nptr, char **endptr, int base, locale_t
147162 BOOL negative = FALSE ;
148163 uint64_t ret = 0 ;
149164
165+ if (!(nptr != NULL ))
166+ return 0 ;
167+ if (!(base == 0 || base >= 2 ))
168+ return 0 ;
169+ if (!(base <= 36 ))
170+ return 0 ;
150171
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++;
156174
157- if (*nptr == ' -' ) {
175+ if (*nptr == ' -' )
176+ {
158177 negative = TRUE ;
159178 nptr++;
160- } else if (*nptr == ' +' )
179+ }
180+ else if (*nptr == ' +' )
161181 nptr++;
162182
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+ {
164185 base = 16 ;
165186 nptr += 2 ;
166187 }
167188
168- if (base == 0 ) {
169- if (*nptr==' 0' )
189+ if (base == 0 )
190+ {
191+ if (*nptr == ' 0' )
170192 base = 8 ;
171193 else
172194 base = 10 ;
173195 }
174196
175- while (*nptr) {
197+ while (*nptr)
198+ {
176199 char cur = tolower (*nptr);
177200 int v;
178201
179- if (isdigit (cur)) {
180- if (cur >= ' 0' +base)
202+ if (isdigit (cur))
203+ {
204+ if (cur >= ' 0' + base)
181205 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 )
185211 break ;
186- v = cur- ' a' + 10 ;
212+ v = cur - ' a' + 10 ;
187213 }
188214
189215 nptr++;
190216
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)
192218 ret = MSVCRT_UI64_MAX;
193- } else
194- ret = ret* base + v;
219+ else
220+ ret = ret * base + v;
195221 }
196222
197- if (endptr)
198- *endptr = (char *)nptr;
223+ if (endptr)
224+ *endptr = (char *) nptr;
199225
200226 return negative ? -ret : ret;
201227}
0 commit comments