lexer.c: Remove file_name member from lex_reader_file
[pspp] / src / language / lexer / lexer.c
index 61676bb717e21f542c3c8a981e7eb7106cc324d3..c263537d0d212c4242c22d6088ca91feba768f15 100644 (file)
@@ -129,7 +129,7 @@ lex_reader_init (struct lex_reader *reader,
 {
   reader->class = class;
   reader->syntax = LEX_SYNTAX_AUTO;
-  reader->error = LEX_ERROR_INTERACTIVE;
+  reader->error = LEX_ERROR_CONTINUE;
   reader->file_name = NULL;
   reader->line_number = 0;
 }
@@ -1053,7 +1053,7 @@ lex_get_syntax_mode (const struct lexer *lexer)
 }
 
 /* Returns the error mode for the syntax file from which the current drawn is
-   drawn.  Returns LEX_ERROR_INTERACTIVE for a T_STOP token or if the command's
+   drawn.  Returns LEX_ERROR_TERMINAL for a T_STOP token or if the command's
    source does not have line numbers.
 
    There is no version of this function that takes an N argument because
@@ -1063,13 +1063,12 @@ enum lex_error_mode
 lex_get_error_mode (const struct lexer *lexer)
 {
   struct lex_source *src = lex_source__ (lexer);
-  return src == NULL ? LEX_ERROR_INTERACTIVE : src->reader->error;
+  return src == NULL ? LEX_ERROR_TERMINAL : src->reader->error;
 }
 
 /* If the source that LEXER is currently reading has error mode
-   LEX_ERROR_INTERACTIVE, discards all buffered input and tokens, so that the
-   next token to be read comes directly from whatever is next read from the
-   stream.
+   LEX_ERROR_TERMINAL, discards all buffered input and tokens, so that the next
+   token to be read comes directly from whatever is next read from the stream.
 
    It makes sense to call this function after encountering an error in a
    command entered on the console, because usually the user would prefer not to
@@ -1078,7 +1077,7 @@ void
 lex_interactive_reset (struct lexer *lexer)
 {
   struct lex_source *src = lex_source__ (lexer);
-  if (src != NULL && src->reader->error == LEX_ERROR_INTERACTIVE)
+  if (src != NULL && src->reader->error == LEX_ERROR_TERMINAL)
     {
       src->head = src->tail = 0;
       src->journal_pos = src->seg_pos = src->line_pos = 0;
@@ -1100,7 +1099,7 @@ lex_discard_rest_of_command (struct lexer *lexer)
 }
 
 /* Discards all lookahead tokens in LEXER, then discards all input sources
-   until it encounters one with error mode LEX_ERROR_INTERACTIVE or until it
+   until it encounters one with error mode LEX_ERROR_TERMINAL or until it
    runs out of input sources. */
 void
 lex_discard_noninteractive (struct lexer *lexer)
@@ -1112,7 +1111,7 @@ lex_discard_noninteractive (struct lexer *lexer)
       while (!deque_is_empty (&src->deque))
         lex_source_pop__ (src);
 
-      for (; src != NULL && src->reader->error != LEX_ERROR_INTERACTIVE;
+      for (; src != NULL && src->reader->error != LEX_ERROR_TERMINAL;
            src = lex_source__ (lexer))
         lex_source_destroy (src);
     }
@@ -1543,7 +1542,6 @@ struct lex_file_reader
   {
     struct lex_reader reader;
     struct u8_istream *istream;
-    char *file_name;
   };
 
 static struct lex_reader_class lex_file_reader_class;
@@ -1579,7 +1577,6 @@ lex_reader_for_file (const char *file_name, const char *encoding,
   r->reader.file_name = xstrdup (file_name);
   r->reader.line_number = 1;
   r->istream = istream;
-  r->file_name = xstrdup (file_name);
 
   return &r->reader;
 }
@@ -1598,7 +1595,7 @@ lex_file_read (struct lex_reader *r_, char *buf, size_t n,
   ssize_t n_read = u8_istream_read (r->istream, buf, n);
   if (n_read < 0)
     {
-      msg (ME, _("Error reading `%s': %s."), r->file_name, strerror (errno));
+      msg (ME, _("Error reading `%s': %s."), r_->file_name, strerror (errno));
       return 0;
     }
   return n_read;
@@ -1612,12 +1609,11 @@ lex_file_close (struct lex_reader *r_)
   if (u8_istream_fileno (r->istream) != STDIN_FILENO)
     {
       if (u8_istream_close (r->istream) != 0)
-        msg (ME, _("Error closing `%s': %s."), r->file_name, strerror (errno));
+        msg (ME, _("Error closing `%s': %s."), r_->file_name, strerror (errno));
     }
   else
     u8_istream_free (r->istream);
 
-  free (r->file_name);
   free (r);
 }