lexer: Reimplement for better testability and internationalization.
[pspp-builds.git] / src / ui / source-init-opts.c
index c91a9fef1a8956c4bd856d58fa26fd998194df69..9627fdf57a5525696f2ba5953b110a0b2f14cf94 100644 (file)
 #include "data/por-file-reader.h"
 #include "data/settings.h"
 #include "data/sys-file-reader.h"
-#include "language/syntax-file.h"
-#include "language/syntax-string-source.h"
+#include "language/lexer/include-path.h"
+#include "language/lexer/lexer.h"
 #include "libpspp/assertion.h"
 #include "libpspp/argv-parser.h"
-#include "libpspp/getl.h"
 #include "libpspp/llx.h"
 #include "libpspp/message.h"
 #include "ui/syntax-gen.h"
@@ -62,10 +61,8 @@ static const struct argv_option source_init_options[N_SOURCE_INIT_OPTIONS] =
   };
 
 static void
-source_init_option_callback (int id, void *ss_)
+source_init_option_callback (int id, void *aux UNUSED)
 {
-  struct source_stream *ss = ss_;
-
   switch (id)
     {
     case OPT_ALGORITHM:
@@ -74,19 +71,21 @@ source_init_option_callback (int id, void *ss_)
       else if (!strcmp (optarg, "enhanced"))
        settings_set_algorithm (ENHANCED);
       else
+        /* TRANSLATORS: Leave the words `compatible' and `enhanced' in their
+       original English. */
         error (1, 0,
-               _("Algorithm must be either \"compatible\" or \"enhanced\"."));
+               _("Algorithm must be either `compatible' or `enhanced'."));
       break;
 
     case OPT_INCLUDE:
       if (!strcmp (optarg, "-"))
-       getl_clear_include_path (ss);
+        include_path_clear ();
       else
-       getl_add_include_dir (ss, optarg);
+        include_path_add (optarg);
       break;
 
     case OPT_NO_INCLUDE:
-      getl_clear_include_path (ss);
+      include_path_clear ();
       break;
 
     case OPT_SAFER:
@@ -99,8 +98,10 @@ source_init_option_callback (int id, void *ss_)
       else if (!strcmp (optarg, "enhanced"))
        settings_set_syntax (ENHANCED);
       else
+        /* TRANSLATORS: Leave the words `compatible' and `enhanced' in their
+       original English. */
         error (1, 0,
-               _("Syntax must be either \"compatible\" or \"enhanced\"."));
+               _("Syntax must be either `compatible' or `enhanced'."));
       break;
 
     default:
@@ -109,9 +110,8 @@ source_init_option_callback (int id, void *ss_)
 }
 
 void
-source_init_register_argv_parser (struct argv_parser *ap,
-                                  struct source_stream *ss)
+source_init_register_argv_parser (struct argv_parser *ap)
 {
   argv_parser_add_options (ap, source_init_options, N_SOURCE_INIT_OPTIONS,
-                           source_init_option_callback, ss);
+                           source_init_option_callback, NULL);
 }