--- stack/stack.c 2002/01/31 19:51:12 1.14 +++ stack/stack.c 2002/01/31 21:47:20 1.15 @@ -255,17 +255,34 @@ temp= malloc(inlength); rest= malloc(inlength); - if((convert= sscanf(in_line, "\"%[^\"\n\r]\" %[^\n\r]", temp, rest)) >= 1) - push_cstring(stack_head, temp); - else if((convert= sscanf(in_line, "%d %[^\n\r]", &itemp, rest)) >= 1) - push_val(stack_head, itemp); - else if((convert= sscanf(in_line, "\\%c%[^\n\r]", temp, rest)) >= 1) { - temp[1]= '\0'; push_ref(stack_head, in_hash, temp); - } else if((convert= sscanf(in_line, "%[^ ;\n\r]%[^\n\r]", temp, rest)) >= 1) - push_ref(stack_head, in_hash, temp); - else if((convert= sscanf(in_line, "%c%[^\n\r]", temp, rest)) >= 1) - if(*temp==';') + do { + if((convert= sscanf(in_line, "\"%[^\"\n\r]\" %[^\n\r]", temp, rest))) { + push_cstring(stack_head, temp); + break; + } + + if((convert= sscanf(in_line, "%d %[^\n\r]", &itemp, rest))) { + push_val(stack_head, itemp); + break; + } + + if((convert= sscanf(in_line, "\\%c%[^\n\r]", temp, rest))) { + temp[1]= '\0'; + push_ref(stack_head, in_hash, temp); + break; + } + + if((convert= sscanf(in_line, "%[^ ;\n\r]%[^\n\r]", temp, rest))) { + push_ref(stack_head, in_hash, temp); + break; + } + + if((convert= sscanf(in_line, "%c%[^\n\r]", temp, rest)) && *temp==';') { eval(stack_head); + break; + } + } while(0); + free(temp);