X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FLibraries%2Flibc.so_src%2Fscanf.c;h=6fff1764be0e3e1962e314e2cde477ce1a59111c;hb=4d0188930e7d0e571db78d1d2e3c4d9b3f0fe8fb;hp=3d45ed13aca9776151dc37b1baa01578eb47265e;hpb=b0da731b2d89b9dd58de2c98eaf6218a41a21920;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/scanf.c b/Usermode/Libraries/libc.so_src/scanf.c index 3d45ed13..6fff1764 100644 --- a/Usermode/Libraries/libc.so_src/scanf.c +++ b/Usermode/Libraries/libc.so_src/scanf.c @@ -326,11 +326,11 @@ int _vcscanf(int (*__getc)(void*), void (*__rewind)(void*), void *h, const char valtype = _VCSCANF_NOTYPE; break; // match a set of characters - case '[': - fch = *format++; - if( fch == '^' ) { + case '[': { + int invert = 0; + if( *format++ == '^' ) { // Invert - fch = *format; + invert = 1; } set_start = format; set_len = 0; @@ -344,7 +344,7 @@ int _vcscanf(int (*__getc)(void*), void (*__rewind)(void*), void *h, const char if( maxlen == 0 ) maxlen = -1; ich = 0; - while( maxlen -- && (ich = __getc(h)) && memchr(set_start, set_len, ich) ) + while( maxlen -- && (ich = __getc(h)) && invert == !memchr(set_start, set_len, ich) ) { if(ptr._char) *ptr._char++ = ich; nch ++; @@ -354,6 +354,7 @@ int _vcscanf(int (*__getc)(void*), void (*__rewind)(void*), void *h, const char if(ptr._char) *ptr._char++ = 0; valtype = _VCSCANF_NOTYPE; break; + } case 'p': // read back printf("%p") valtype = _VCSCANF_NOTYPE; break;