X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Frepeat.c;h=0f5bb42f4dbc4aec79b75417b040f4c779314a57;hb=1f8dd363d6c20d07fcca14cb948018465fa5ed8b;hp=e992b29fa112def232c92c131d663d826f75deca;hpb=92bfefccd465052e492f669ce561aa25b0110283;p=pspp-builds.git diff --git a/src/repeat.c b/src/repeat.c index e992b29f..0f5bb42f 100644 --- a/src/repeat.c +++ b/src/repeat.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "repeat.h" @@ -25,21 +25,25 @@ #include #include "alloc.h" #include "command.h" +#include "dictionary.h" #include "error.h" -#include "getline.h" +#include "getl.h" #include "lexer.h" #include "misc.h" #include "settings.h" #include "str.h" #include "var.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + #include "debug-print.h" /* Describes one DO REPEAT macro. */ struct repeat_entry { int type; /* 1=variable names, 0=any other. */ - char id[9]; /* Macro identifier. */ + char id[LONG_NAME_LEN + 1]; /* Macro identifier. */ char **replacement; /* Macro replacement. */ struct repeat_entry *next; }; @@ -60,11 +64,6 @@ static int parse_strings (struct repeat_entry *); static void clean_up (void); static int internal_cmd_do_repeat (void); -#if DEBUGGING -static void debug_print (void); -static void debug_print_lines (void); -#endif - int cmd_do_repeat (void) { @@ -129,7 +128,7 @@ static int internal_cmd_do_repeat (void) { /* Name of first DO REPEAT macro. */ - char first_name[9]; + char first_name[LONG_NAME_LEN + 1]; /* Current filename. */ const char *current_filename = NULL; @@ -150,7 +149,7 @@ internal_cmd_do_repeat (void) if (!lex_force_id ()) return 0; for (iter = repeat_tab; iter; iter = iter->next) - if (!strcmp (iter->id, tokid)) + if (!strcasecmp (iter->id, tokid)) { msg (SE, _("Identifier %s is given twice."), tokid); return 0; @@ -173,7 +172,7 @@ internal_cmd_do_repeat (void) if (token == T_ID) result = parse_ids (e); - else if (token == T_NUM) + else if (lex_is_number ()) result = parse_numbers (e); else if (token == T_STRING) result = parse_strings (e); @@ -208,10 +207,6 @@ internal_cmd_do_repeat (void) } while (token != '.'); -#if DEBUGGING - debug_print (); -#endif - /* Read all the lines inside the DO REPEAT ... END REPEAT. */ { int nest = 1; @@ -309,11 +304,6 @@ internal_cmd_do_repeat (void) } line_buf_tail->next = NULL; - /* Show the line list. */ -#if DEBUGGING - debug_print_lines (); -#endif - /* Make new variables. */ { struct repeat_entry *iter; @@ -566,12 +556,12 @@ perform_DO_REPEAT_substitutions (void) /* Collect an identifier. */ { - char name[9]; + char name[LONG_NAME_LEN + 1]; char *start = cp; char *np = name; char *substitution; - while (CHAR_IS_IDN (*cp) && np < &name[8]) + while (CHAR_IS_IDN (*cp) && np < &name[LONG_NAME_LEN]) *np++ = *cp++; while (CHAR_IS_IDN (*cp)) cp++; @@ -594,45 +584,3 @@ perform_DO_REPEAT_substitutions (void) ds_destroy (&getl_buf); getl_buf = output; } - -/* Debugging code. */ - -#if DEBUGGING -static void -debug_print (void) -{ - struct repeat_entry *iter; - int j; - - printf ("DO REPEAT\n"); - for (iter = repeat_tab; iter; iter = iter->next) - { - printf (" %s%s=", iter->id, iter->type ? "(ids)" : ""); - for (j = 0; j < count; j++) - printf ("%s ", iter->replacement[j]); - putc (iter->next ? '/' : '.', stdout); - printf ("\n"); - } -} - -static void -debug_print_lines (void) -{ - struct getl_line_list *iter; - const char *fn = "(none)"; - int ln = 65536; - - printf ("---begin DO REPEAT lines---\n"); - for (iter = line_buf_head; iter; iter = iter->next) - { - if (iter->len < 0) - { - ln = -iter->len; - fn = iter->line; - } else { - printf ("%s:%d: %s", fn, ln++, iter->line); - } - } - printf ("---end DO REPEAT lines---\n"); -} -#endif /* DEBUGGING */