Avoid unfounded warnings from GCC 7.2.
[pspp] / src / language / utilities / include.c
index e802abecc49ed4b3129c38ede93024eaaa76430c..ecb33b27670826fd8fa7ae25f1bf435b09ed0f13 100644 (file)
@@ -22,8 +22,8 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "data/file-name.h"
-#include "data/procedure.h"
+#include "data/dataset.h"
+#include "data/session.h"
 #include "language/command.h"
 #include "language/lexer/include-path.h"
 #include "language/lexer/lexer.h"
@@ -58,14 +58,13 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
   if (lex_match_id (lexer, "FILE"))
     lex_match (lexer, T_EQUALS);
 
-  /* File name can be identifier or string. */
-  if (lex_token (lexer) != T_ID && !lex_is_string (lexer))
-    {
-      lex_error (lexer, _("expecting file name"));
-      return CMD_FAILURE;
-    }
+  if (!lex_force_string_or_id (lexer))
+    return CMD_FAILURE;
+
+  relative_name = utf8_to_filename (lex_tokcstr (lexer));
+  if (NULL == relative_name)
+    return CMD_FAILURE;
 
-  relative_name = utf8_to_filename (lex_tokcstr (lexer)); 
   filename = include_path_search (relative_name);
   free (relative_name);
 
@@ -81,7 +80,8 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
   error_mode = LEX_ERROR_CONTINUE;
   cd = false;
   status = CMD_FAILURE;
-  encoding = xstrdup (dataset_get_default_syntax_encoding (ds));
+  encoding = xstrdup (session_get_default_syntax_encoding (
+                        dataset_session (ds)));
   while ( T_ENDCMD != lex_token (lexer))
     {
       if (lex_match_id (lexer, "ENCODING"))
@@ -92,6 +92,7 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
 
           free (encoding);
           encoding = xstrdup (lex_tokcstr (lexer));
+         lex_get (lexer);
         }
       else if (variant == INSERT && lex_match_id (lexer, "SYNTAX"))
        {
@@ -104,8 +105,8 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
            syntax_mode = LEX_SYNTAX_AUTO;
          else
            {
-             lex_error (lexer, _("expecting %s, %s, or %s after %s"),
-                         "BATCH", "INTERACTIVE", "AUTO", "SYNTAX");
+             lex_error_expecting (lexer, "BATCH", "INTERACTIVE", "AUTO",
+                                   NULL_SENTINEL);
              goto exit;
            }
        }
@@ -122,8 +123,7 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
            }
          else
            {
-             lex_error (lexer, _("expecting %s or %s after %s"),
-                         "YES", "NO", "CD");
+             lex_error_expecting (lexer, "YES", "NO", NULL_SENTINEL);
              goto exit;
            }
        }
@@ -140,8 +140,7 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
            }
          else
            {
-             lex_error (lexer, _("expecting %s or %s after %s"),
-                         "CONTINUE", "STOP", "ERROR");
+             lex_error_expecting (lexer, "CONTINUE", "STOP", NULL_SENTINEL);
              goto exit;
            }
        }