104 |
} a; |
} a; |
105 |
char c; /* holds a char from the format string */ |
char c; /* holds a char from the format string */ |
106 |
uint8_t base; |
uint8_t base; |
107 |
int nconvs, i, j, olen; |
int nconvs, rv, i, j, olen; |
108 |
#if SCANF_LEVEL > SCANF_MIN |
#if SCANF_LEVEL > SCANF_MIN |
109 |
int8_t width; |
int8_t width; |
110 |
#endif |
#endif |
118 |
flags = 0; |
flags = 0; |
119 |
nconvs = 0; |
nconvs = 0; |
120 |
i = 0; |
i = 0; |
121 |
|
rv = EOF; |
122 |
olen = stream->len = 0; |
olen = stream->len = 0; |
123 |
|
|
124 |
if ((stream->flags & __SRD) == 0) |
if ((stream->flags & __SRD) == 0) |
537 |
#if SCANF_LEVEL >= SCANF_FLT |
#if SCANF_LEVEL >= SCANF_FLT |
538 |
nextconv: |
nextconv: |
539 |
#endif |
#endif |
540 |
flags = 0; |
if (stream->len > olen) { |
541 |
if (stream->len > olen) |
#if SCANF_LEVEL >= SCANF_STD |
542 |
nconvs++; |
if (!(flags & FLSTAR)) |
543 |
else if (c != 'n' || i == EOF) |
#endif |
544 |
|
nconvs++; |
545 |
|
rv = 0; |
546 |
|
} else if (c != 'n' || i == EOF) |
547 |
/* |
/* |
548 |
* If one conversion failed completely, |
* If one conversion failed completely, |
549 |
* punt. |
* punt. |
550 |
*/ |
*/ |
551 |
goto leave; |
goto leave; |
552 |
|
flags = 0; |
553 |
} else if (c == '%') { |
} else if (c == '%') { |
554 |
flags = FLHASPERCENT; |
flags = FLHASPERCENT; |
555 |
base = 10; |
base = 10; |
580 |
* or end-of-file), adjust the total number of conversions |
* or end-of-file), adjust the total number of conversions |
581 |
* done if at least one char could be read from the stream. |
* done if at least one char could be read from the stream. |
582 |
*/ |
*/ |
583 |
if ((flags & FLHASPERCENT) && stream->len > olen) |
if ((flags & FLHASPERCENT) && stream->len > olen) { |
584 |
nconvs++; |
#if SCANF_LEVEL >= SCANF_STD |
585 |
|
if (!(flags & FLSTAR)) |
586 |
|
#endif |
587 |
|
nconvs++; |
588 |
|
rv = 0; |
589 |
|
} |
590 |
/* |
/* |
591 |
* If an error occurs before the first successful conversion, |
* If an error occurs before the first successful conversion, |
592 |
* we ought to return EOF. Before getting here, all |
* we ought to return EOF. Before getting here, all |
593 |
* conversions maintain the last character read from the |
* conversions maintain the last character read from the |
594 |
* stream (or EOF) within variable `i'. |
* stream (or EOF) within variable `i'. |
595 |
*/ |
*/ |
596 |
if (nconvs == 0 && i == EOF) |
if (i == EOF && nconvs == 0) |
597 |
nconvs = EOF; |
return rv; |
598 |
|
|
599 |
return nconvs; |
return nconvs; |
600 |
} |
} |