180{
182#ifndef __DCL_DEBUG
183 if (!_s) {
184 if (_endptr) {
185 *_endptr = _s;
186 }
187 return false;
188 }
189#endif
190
191#define __START 0
192#define __yyyy 1
193#define __MM 2
194#define __dd 3
195#define __HH 4
196#define __mm 5
197#define __ss 6
198#define __SSS 7
199#define __ZH 8
200#define __Zm 9
201#define __Zs 10
202#define __BC 11
203#define __DONE 12
204
206 memset(&_r, 0, sizeof(_r));
208
210 char* endptr = (char*)_s;
211 for (; ; ) {
212 errno = 0;
213 const char* nptr = endptr;
214 long n = strtol(nptr, &endptr, 10);
215 if (errno == ERANGE) {
216
218 break;
219 }
221 if (*endptr == '-') {
223 }
224 else if (*endptr == ':') {
226 }
227 else {
228
230 break;
231 }
232 }
233 else if (*endptr == 'B') {
235 }
236 else {
237
238 state++;
239 }
240
242 state, n, endptr, *endptr ? *endptr : '$');
243 switch (state) {
245 _r.
year = (int16_t)n;
246 break;
248 _r.
month = (uint8_t)n;
249 break;
252 break;
254 _r.
hour = (uint8_t)n;
255 break;
258 break;
261 break;
263 _r.
frac = __fraction_normalize(n);
264 break;
266 _r.
tzoff = (int16_t)(n * 60);
267 break;
269 _r.
tzoff += (int16_t)n;
270 break;
272
273 break;
278 break;
279 }
280 default: {
282 }
283 }
284
285 if (*endptr ==
'\0' || state ==
__DONE) {
286 break;
287 }
288 else {
291 && (*endptr == '+' || *endptr == '-')
292 ) {
294
295 }
296 else {
297 endptr++;
298 }
299 }
300 }
301
302 if (_endptr) {
303 *_endptr = endptr;
304 }
306}
#define __DCL_TRACE1_N(fmt, arg)