Get rid of capacity argument to ds_init() and update all callers.
[pspp-builds.git] / src / language / lexer / lexer.c
index 3d2e29ac92aac6ca2bfd51aa9edfd1caccae7753..750f3053bf20ad61f450983091f2df76d4c1f6d5 100644 (file)
@@ -104,8 +104,8 @@ static void dump_token (void);
 void
 lex_init (void)
 {
-  ds_init (&tokstr, 64);
-  ds_init (&put_tokstr, 64);
+  ds_init (&tokstr);
+  ds_init (&put_tokstr);
   if (!lex_get_line ())
     eof = true;
 }
@@ -451,7 +451,7 @@ lex_end_of_command (void)
   if (token != '.')
     {
       lex_error (_("expecting end of command"));
-      return CMD_TRAILING_GARBAGE;
+      return CMD_FAILURE;
     }
   else
     return CMD_SUCCESS;
@@ -736,6 +736,25 @@ lex_set_prog (char *p)
 {
   prog = p;
 }
+
+/* Discards the rest of the current command.
+   When we're reading commands from a file, we skip tokens until
+   a terminal dot or EOF.
+   When we're reading commands interactively from the user,
+   that's just discarding the current line, because presumably
+   the user doesn't want to finish typing a command that will be
+   ignored anyway. */
+void
+lex_discard_rest_of_command (void) 
+{
+  if (!getl_is_interactive ())
+    {
+      while (token != T_STOP && token != '.')
+       lex_get ();
+    }
+  else 
+    lex_discard_line (); 
+}
 \f
 /* Weird line reading functions. */