From f72e8cd337581aa9fca5c68caacf56c7c3764379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Sat, 10 Feb 1996 23:06:25 +0100 Subject: [PATCH] fixed sscanf to accept %x %o and %D Rev: src/opcodes.c:1.4 --- src/opcodes.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/opcodes.c b/src/opcodes.c index 03358c4512..b713d7dd27 100644 --- a/src/opcodes.c +++ b/src/opcodes.c @@ -337,6 +337,45 @@ static INT32 low_sscanf(INT32 num_arg) { char * t; + if(eye>=input_len) return matches; + sval.u.integer=STRTOL(input+eye,&t,10); + if(input + eye == t) return matches; + eye=t-input; + sval.type=T_INT; + sval.subtype=NUMBER_NUMBER; + break; + } + + case 'x': + { + char * t; + + if(eye>=input_len) return matches; + sval.u.integer=STRTOL(input+eye,&t,16); + if(input + eye == t) return matches; + eye=t-input; + sval.type=T_INT; + sval.subtype=NUMBER_NUMBER; + break; + } + + case 'o': + { + char * t; + + if(eye>=input_len) return matches; + sval.u.integer=STRTOL(input+eye,&t,8); + if(input + eye == t) return matches; + eye=t-input; + sval.type=T_INT; + sval.subtype=NUMBER_NUMBER; + break; + } + + case 'D': + { + char * t; + if(eye>=input_len) return matches; sval.u.integer=STRTOL(input+eye,&t,0); if(input + eye == t) return matches; @@ -403,6 +442,24 @@ static INT32 low_sscanf(INT32 num_arg) set['-']=0; goto match_set; + case 'o': + for(e=0;e<256;e++) set[e]=1; + for(e='0';e<='7';e++) set[e]=0; + goto match_set; + + case 'x': + for(e=0;e<256;e++) set[e]=1; + for(e='0';e<='9';e++) set[e]=0; + for(e='a';e<='f';e++) set[e]=0; + goto match_set; + + case 'D': + for(e=0;e<256;e++) set[e]=1; + for(e='0';e<='9';e++) set[e]=0; + set['-']=0; + set['x']=0; + goto match_set; + case 'f': for(e=0;e<256;e++) set[e]=1; for(e='0';e<='9';e++) set[e]=0; -- GitLab