|
@@ -169,32 +169,22 @@ int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap)
|
|
|
|
|
|
t = *p;
|
|
t = *p;
|
|
|
|
|
|
- switch (t) {
|
|
|
|
- case 'C':
|
|
|
|
- if (width < 1) width = 1;
|
|
|
|
- case 'S':
|
|
|
|
|
|
+ /* C or S */
|
|
|
|
+ if ((t&0x2f) == 3) {
|
|
t |= 32;
|
|
t |= 32;
|
|
size = SIZE_l;
|
|
size = SIZE_l;
|
|
- break;
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch (t) {
|
|
case 'c':
|
|
case 'c':
|
|
if (width < 1) width = 1;
|
|
if (width < 1) width = 1;
|
|
- case 'd': case 'i': case 'o': case 'u': case 'x':
|
|
|
|
- case 'a': case 'e': case 'f': case 'g':
|
|
|
|
- case 'A': case 'E': case 'F': case 'G': case 'X':
|
|
|
|
- case '[': case 's':
|
|
|
|
- case 'p': case 'n':
|
|
|
|
|
|
+ case '[':
|
|
break;
|
|
break;
|
|
- default:
|
|
|
|
- goto fmt_fail;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (t == 'n') {
|
|
|
|
|
|
+ case 'n':
|
|
store_int(dest, size, pos);
|
|
store_int(dest, size, pos);
|
|
/* do not increment match count, etc! */
|
|
/* do not increment match count, etc! */
|
|
continue;
|
|
continue;
|
|
- }
|
|
|
|
-
|
|
|
|
- if (t != '[' && (t|32) != 'c') {
|
|
|
|
|
|
+ default:
|
|
shlim(f, 0);
|
|
shlim(f, 0);
|
|
while (isspace(shgetc(f)));
|
|
while (isspace(shgetc(f)));
|
|
shunget(f);
|
|
shunget(f);
|