libc.obj : Try fix "%o" scanf bug.

git-svn-id: svn://kolibrios.org@9862 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
turbocat 2022-07-26 08:32:48 +00:00
parent b3232bd390
commit 1e116c9679

View File

@ -24,17 +24,17 @@ typedef void (*virtual_ungetc)(void *sp, int c, const void *obj);
enum flags_t
{
flag_unsigned = 0x02,
flag_register = 0x04,
flag_plus = 0x08,
flag_left_just = 0x10,
flag_lead_zeros = 0x20,
flag_space_plus = 0x40,
flag_hash_sign = 0x80,
flag_point = 0x100
flag_unsigned = 0x02,
flag_register = 0x04,
flag_plus = 0x08,
flag_left_just = 0x10,
flag_lead_zeros = 0x20,
flag_space_plus = 0x40,
flag_hash_sign = 0x80,
flag_point = 0x100
};
int try_parse_real(long double *real, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc)
int try_parse_real(long double *real, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc)
// returns 1 if OK, -1 == EOF, -2 parse broken
{
int sign = 1, have_digits = 0;
@ -153,7 +153,7 @@ int try_parse_real(long double *real, int ch, const void *src, void *save, v
return 1;
}
int try_parse_int(long long *digit, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc)
int try_parse_int(long long *digit, int ch, const void *src, void *save, virtual_getc vgetc, virtual_ungetc vungetc)
{
int sign = 1, base = 10, have_digits = 0;
@ -172,7 +172,7 @@ int try_parse_int(long long *digit, int ch, const void *src, void *save, vir
if (ch == '0') // octal or hex, read next
{
ch = vgetc(save, src);
if (ch == 'c' || ch == 'C')
if (ch == 'o')
base = 8;
else if (ch == 'x' || ch == 'X')
base = 16;