PsppireDataStore (myreversefunc): Insert variables if attempting to access variable...
[pspp] / src / language / utilities / include.c
index 89da3b9bf517b86f7dff167a0acec0842c014852..ecb33b27670826fd8fa7ae25f1bf435b09ed0f13 100644 (file)
@@ -23,7 +23,6 @@
 #include <unistd.h>
 
 #include "data/dataset.h"
-#include "data/file-name.h"
 #include "data/session.h"
 #include "language/command.h"
 #include "language/lexer/include-path.h"
@@ -59,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);
 
@@ -94,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"))
        {