X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Frepeat.c;h=dad14549864f8035eea2bc4b627c4331defa3cd5;hb=9b4b94c6d3b5fd98bf396e23d015380b87d2d296;hp=8b66a7122a936e8d4eacc216f887fcd3d0793ee6;hpb=4944c86a9318bc5b5578ab145a95c116ffd2c9fd;p=pspp-builds.git diff --git a/src/repeat.c b/src/repeat.c index 8b66a712..dad14549 100644 --- a/src/repeat.c +++ b/src/repeat.c @@ -18,12 +18,12 @@ 02111-1307, USA. */ #include -#include +#include "repeat.h" +#include "error.h" #include #include #include #include "alloc.h" -#include "cases.h" #include "command.h" #include "error.h" #include "getline.h" @@ -33,8 +33,6 @@ #include "str.h" #include "var.h" -#undef DEBUGGING -/*#define DEBUGGING 1*/ #include "debug-print.h" /* Describes one DO REPEAT macro. */ @@ -140,9 +138,6 @@ internal_cmd_do_repeat (void) int print; /* The first step is parsing the DO REPEAT command itself. */ - lex_match_id ("DO"); - lex_match_id ("REPEAT"); - count = 0; line_buf_head = NULL; do @@ -304,7 +299,7 @@ internal_cmd_do_repeat (void) REPEAT line. We should actually check for the PRINT specifier. This can be done easier when we buffer entire commands instead of doing it token by token; see TODO. */ - lex_entire_line (); + lex_discard_line (); /* Tie up the loose end of the chain. */ if (line_buf_head == NULL) @@ -330,14 +325,7 @@ internal_cmd_do_repeat (void) { /* Note that if the variable already exists there is no harm done. */ - struct variable *v = create_variable (&default_dict, - iter->replacement[i], - NUMERIC, 0); - - /* If we created the variable then we need to initialize - its observations to SYSMIS. */ - if (v) - envector (v); + dict_create_var (default_dict, iter->replacement[i], 0); } } } @@ -515,7 +503,7 @@ cmd_end_repeat (void) /* Finds a DO REPEAT macro with name MACRO_NAME and returns the appropriate subsitution if found, or NULL if not. */ -char * +static char * find_DO_REPEAT_substitution (char *macro_name) { struct getl_script *s; @@ -557,7 +545,7 @@ perform_DO_REPEAT_substitutions (void) while (ds_length (&getl_buf) > 0 && isspace ((unsigned char) ds_end (&getl_buf)[-1])) ds_truncate (&getl_buf, ds_length (&getl_buf) - 1); - if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == set_endcmd) + if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == get_endcmd() ) { dot = 1; ds_truncate (&getl_buf, ds_length (&getl_buf) - 1); @@ -601,7 +589,7 @@ perform_DO_REPEAT_substitutions (void) } } if (dot) - ds_putchar (&output, (unsigned char) set_endcmd); + ds_putchar (&output, get_endcmd() ); ds_destroy (&getl_buf); getl_buf = output;