Adopt use of gnulib for portability.
[pspp-builds.git] / src / cmdline.c
index 9f1bc9796c639cc80fb97b067648770e9dbe47c8..50214db2717daeac333e2707509c6ea7769bae56 100644 (file)
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 #include <config.h>
 #include "cmdline.h"
-#include <assert.h>
+#include "error.h"
 #include <ctype.h>
 #include <stdio.h>
 #include <errno.h>
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "main.h"
 #include "output.h"
 #include "settings.h"
 #include "str.h"
 #include "var.h"
 #include "version.h"
+#include "copyleft.h"
+#include "glob.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
 
 void welcome (void);
 static void usage (void);
@@ -46,8 +52,10 @@ char *subst_vars (char *);
 void
 parse_command_line (int argc, char **argv)
 {
+  static int testing_mode = 0;
   static struct option long_options[] =
   {
+    {"algorithm", required_argument, NULL, 'a'},
     {"command", required_argument, NULL, 'c'},
     {"config-directory", required_argument, NULL, 'B'},
     {"device", required_argument, NULL, 'o'},
@@ -64,7 +72,8 @@ parse_command_line (int argc, char **argv)
     {"pipe", no_argument, NULL, 'p'},
     {"recon", no_argument, NULL, 'n'},
     {"safer", no_argument, NULL, 's'},
-    {"testing-mode", no_argument, &set_testing_mode, 1},
+    {"syntax", required_argument, NULL, 'x'},
+    {"testing-mode", no_argument, &testing_mode, 1},
     {"verbose", no_argument, NULL, 'v'},
     {"version", no_argument, NULL, 'V'},
     {0, 0, 0, 0},
@@ -73,17 +82,41 @@ parse_command_line (int argc, char **argv)
   int c, i;
 
   int cleared_device_defaults = 0;
-
   int no_statrc = 0;
 
   for (;;)
     {
-      c = getopt_long (argc, argv, "B:c:f:hiI:lno:prsvV", long_options, NULL);
+      c = getopt_long (argc, argv, "a:x:B:c:f:hiI:lno:prsvV", long_options, NULL);
       if (c == -1)
        break;
 
       switch (c)
        {
+         /* Compatibility options */
+        case 'a':
+         if ( 0 == strcmp(optarg,"compatible") )
+             set_algorithm(COMPATIBLE);
+         else if ( 0 == strcmp(optarg,"enhanced"))
+             set_algorithm(ENHANCED);
+         else
+           {
+             usage();
+             assert(0);
+           }
+         break;
+
+       case 'x':         
+         if ( 0 == strcmp(optarg,"compatible") )
+           set_syntax(COMPATIBLE);
+         else if ( 0 == strcmp(optarg,"enhanced"))
+           set_syntax(ENHANCED);
+         else
+           {
+             usage();
+             assert(0);
+           }
+         break;
+
        case 'c':
          {
            static int n_cmds;
@@ -109,7 +142,8 @@ parse_command_line (int argc, char **argv)
          config_path = optarg;
          break;
        case 'f':
-         printf (_("-f not yet implemented\n"));
+         printf (_("%s is not yet implemented."), "-f");
+          putchar('\n');
          break;
        case 'h':
          usage ();
@@ -127,7 +161,8 @@ parse_command_line (int argc, char **argv)
          outp_list_classes ();
          err_hcf (1);
        case 'n':
-         printf (_("-n not yet implemented\n"));
+         printf (_("%s is not yet implemented."),"-n");
+          putchar('\n');
          break;
        case 'o':
          if (!cleared_device_defaults)
@@ -138,26 +173,21 @@ parse_command_line (int argc, char **argv)
          outp_configure_add (optarg);
          break;
        case 'p':
-         printf (_("-p not yet implemented\n"));
+         printf (_("%s is not yet implemented."),"-p");
+          putchar('\n');
          break;
        case 'r':
          no_statrc = 1;
          break;
        case 's':
-         set_safer = 1;
+         make_safe();
          break;
        case 'v':
          err_verbosity++;
          break;
        case 'V':
          puts (version);
-         puts (_("\nCopyright (C) 1997-9, 2000 Free Software Foundation, "
-                 "Inc.\n"
-                 "This is free software; see the source for copying "
-                 "conditions.  There is NO\n"
-                 "WARRANTY; not even for MERCHANTABILITY or FITNESS "
-                 "FOR A PARTICULAR PURPOSE.\n\n"
-                 "Written by Ben Pfaff <blp@gnu.org>."));
+         puts (legal);
          err_hcf (1);
        case '?':
          usage ();
@@ -169,11 +199,14 @@ parse_command_line (int argc, char **argv)
        }
     }
 
-  if (set_testing_mode)
+
+  if (testing_mode)
     {
       /* FIXME: Later this option should do some other things, too. */
-      set_viewwidth = 9999;
+      force_long_view();
+      test_mode = 1;
     }
+    
 
   for (i = optind; i < argc; i++)
     {
@@ -216,6 +249,9 @@ N_("PSPP, a program for statistical analysis of sample data.\n"
 "\nIf a long option shows an argument as mandatory, then it is mandatory\n"
 "for the equivalent short option also.  Similarly for optional arguments.\n"
 "\nConfiguration:\n"
+"  -a, --algorithm={compatible|enhanced}\n"
+"                            set to `compatible' if you want output\n"
+"                            calculated from broken algorithms\n"
 "  -B, --config-dir=DIR      set configuration directory to DIR\n"
 "  -o, --device=DEVICE       select output driver DEVICE and disable defaults\n"
 "  -d, --define=VAR[=VALUE]  set environment variable VAR to VALUE, or empty\n"
@@ -231,6 +267,9 @@ N_("PSPP, a program for statistical analysis of sample data.\n"
 "  -n, --edit                just check syntax; don't actually run the code\n"
 "  -r, --no-statrc           disable execution of .pspp/rc at startup\n"
 "  -s, --safer               don't allow some unsafe operations\n"
+"  -x, --syntax={compatible|enhanced}\n"
+"                            set to `compatible' if you want only to accept\n"
+"                            spss compatible syntax\n"
 "\nInformative output:\n"
 "  -h, --help                print this help, then exit\n"
 "  -l, --list                print a list of known driver classes, then exit\n"