q2c: Use new subc_list_error() to report too many subcommands.
[pspp-builds.git] / src / language / lexer / q2c.c
index 48f7d33b2832112e5550e3092b47b6774056b921..e38be02a605c9861e8c015847b7c692abb190136 100644 (file)
@@ -1524,14 +1524,8 @@ dump_specifier_parse (const specifier *spec, const subcommand *sbc)
            }
           else if (s->value == VAL_STRING)
             {
-              dump (1, "if (lex_token (lexer) != T_ID "
-                    "&& !lex_is_string (lexer))");
-              dump (1, "{");
-              dump (0, "msg (SE, _(\"%s specifier of %s subcommand "
-                    "requires a string argument.\"));",
-                   s->specname, sbc->name);
+              dump (1, "if (!lex_force_string_or_id (lexer))");
              dump (0, "goto lossage;");
-             dump (-1, "}");
               dump (-1, "free (p->%s%s);", sbc->prefix, st_lower (s->valname));
               dump (0, "p->%s%s = ss_xstrdup (ss_tokss (lexer));",
                     sbc->prefix, st_lower (s->valname));
@@ -1751,7 +1745,8 @@ dump_subcommand (const subcommand *sbc)
     {
       dump (0, "if ( p->sbc_%s > MAXLISTS)",st_lower(sbc->name));
       dump (1, "{");
-      dump (0, "msg (SE, \"No more than %%d %s subcommands allowed\",MAXLISTS);",st_lower(sbc->name));
+      dump (0, "subc_list_error (lexer, \"%s\", MAXLISTS);",
+            st_lower(sbc->name));
       dump (0, "goto lossage;");
       dump (-1,"}");