diff libinterp/octave.cc @ 17777:ae8905fbf1f8

move usage and options strings and funtions to separate file * options-usage.h: New file. * libinterp/Makefile.am: Update lists. * octave.cc (usage_string, short_opts, long_opts): Move variable definitions to options-usage.h. (BUILT_IN_DOCSTRINGS_FILE_OPTION, DOC_CACHE_FILE_OPTION, EVAL_OPTION, EXEC_PATH_OPTION, FORCE_GUI_OPTION, IMAGE_PATH_OPTION, INFO_FILE_OPTION, INFO_PROG_OPTION, DEBUG_JIT_OPTION, LINE_EDITING_OPTION, NO_FORK_OPTION, NO_GUI_OPTION, NO_INIT_FILE_OPTION, NO_INIT_PATH_OPTION, NO_JIT_COMPILER_OPTION, NO_LINE_EDITING_OPTION, NO_SITE_FILE_OPTION, PERSIST_OPTION, TEXI_MACROS_FILE_OPTION, TRADITIONAL_OPTION): Move macro definitions to options-usage.h. (print_version_and_exit): Move to options-usage.h. (verbose_usage): Move to options-usage.h and rename to octave_print_verbose_usage_and_exit. Change all uses. (usage): Move to options-usage.h and rename to octave_print_terse_usage_and_exit. Change all uses.
author John W. Eaton <jwe@octave.org>
date Sun, 27 Oct 2013 08:40:54 -0400
parents 9c03b071fd7b
children b5d58667d32d
line wrap: on
line diff
--- a/libinterp/octave.cc	Sun Oct 27 22:05:50 2013 +0100
+++ b/libinterp/octave.cc	Sun Oct 27 08:40:54 2013 -0400
@@ -65,6 +65,7 @@
 #include "oct-mutex.h"
 #include "oct-obj.h"
 #include "ops.h"
+#include "options-usage.h"
 #include "ov.h"
 #include "ov-range.h"
 #include "toplev.h"
@@ -159,23 +160,6 @@
 // (--no-window-system, -W)
 static bool no_window_system = false;
 
-// Usage message
-static const char *usage_string =
-  "octave [-HVWdfhiqvx] [--debug] [--debug-jit] [--doc-cache-file file]\n\
-       [--echo-commands] [--eval CODE] [--exec-path path]\n\
-       [--force-gui] [--help] [--image-path path]\n\
-       [--info-file file] [--info-program prog] [--interactive]\n\
-       [--line-editing] [--no-fork] [--no-gui] [--no-history]\n\
-       [--no-init-file] [--no-init-path] [--no-jit-compiler]\n\
-       [--no-line-editing] [--no-site-file] [--no-window-system]\n\
-       [--norc] [-p path] [--path path] [--persist] [--silent]\n\
-       [--traditional] [--verbose] [--version] [file]";
-
-// This is here so that it's more likely that the usage message and
-// the real set of options will agree.  Note: the '+' must come first
-// to prevent getopt from permuting arguments!
-static const char *short_opts = "+HWVdfhip:qvx";
-
 // The code to evaluate at startup (--eval CODE)
 static std::string code_to_eval;
 
@@ -188,65 +172,6 @@
 // If TRUE use traditional settings (--traditional)
 static bool traditional = false;
 
-// Long options.  See the comments in getopt.h for the meanings of the
-// fields in this structure.
-#define BUILT_IN_DOCSTRINGS_FILE_OPTION 1
-#define DOC_CACHE_FILE_OPTION 2
-#define EVAL_OPTION 3
-#define EXEC_PATH_OPTION 4
-#define FORCE_GUI_OPTION 5
-#define IMAGE_PATH_OPTION 6
-#define INFO_FILE_OPTION 7
-#define INFO_PROG_OPTION 8
-#define DEBUG_JIT_OPTION 9
-#define LINE_EDITING_OPTION 10
-#define NO_FORK_OPTION 11
-#define NO_GUI_OPTION 12
-#define NO_INIT_FILE_OPTION 13
-#define NO_INIT_PATH_OPTION 14
-#define NO_JIT_COMPILER_OPTION 15
-#define NO_LINE_EDITING_OPTION 16
-#define NO_SITE_FILE_OPTION 17
-#define PERSIST_OPTION 18
-#define TEXI_MACROS_FILE_OPTION 19
-#define TRADITIONAL_OPTION 20
-struct option long_opts[] = {
-  { "braindead",                no_argument,       0, TRADITIONAL_OPTION },
-  { "built-in-docstrings-file", required_argument, 0, BUILT_IN_DOCSTRINGS_FILE_OPTION },
-  { "debug",                    no_argument,       0, 'd' },
-  { "debug-jit",                no_argument,       0, DEBUG_JIT_OPTION },
-  { "doc-cache-file",           required_argument, 0, DOC_CACHE_FILE_OPTION },
-  { "echo-commands",            no_argument,       0, 'x' },
-  { "eval",                     required_argument, 0, EVAL_OPTION },
-  { "exec-path",                required_argument, 0, EXEC_PATH_OPTION },
-  { "force-gui",                no_argument,       0, FORCE_GUI_OPTION },
-  { "help",                     no_argument,       0, 'h' },
-  { "image-path",               required_argument, 0, IMAGE_PATH_OPTION },
-  { "info-file",                required_argument, 0, INFO_FILE_OPTION },
-  { "info-program",             required_argument, 0, INFO_PROG_OPTION },
-  { "interactive",              no_argument,       0, 'i' },
-  { "line-editing",             no_argument,       0, LINE_EDITING_OPTION },
-  { "no-fork",                  no_argument,       0, NO_FORK_OPTION },
-  { "no-gui",                   no_argument,       0, NO_GUI_OPTION },
-  { "no-history",               no_argument,       0, 'H' },
-  { "no-init-file",             no_argument,       0, NO_INIT_FILE_OPTION },
-  { "no-init-path",             no_argument,       0, NO_INIT_PATH_OPTION },
-  { "no-jit-compiler",          no_argument,       0, NO_JIT_COMPILER_OPTION },
-  { "no-line-editing",          no_argument,       0, NO_LINE_EDITING_OPTION },
-  { "no-site-file",             no_argument,       0, NO_SITE_FILE_OPTION },
-  { "no-window-system",         no_argument,       0, 'W' },
-  { "norc",                     no_argument,       0, 'f' },
-  { "path",                     required_argument, 0, 'p' },
-  { "persist",                  no_argument,       0, PERSIST_OPTION },
-  { "quiet",                    no_argument,       0, 'q' },
-  { "silent",                   no_argument,       0, 'q' },
-  { "texi-macros-file",         required_argument, 0, TEXI_MACROS_FILE_OPTION },
-  { "traditional",              no_argument,       0, TRADITIONAL_OPTION },
-  { "verbose",                  no_argument,       0, 'V' },
-  { "version",                  no_argument,       0, 'v' },
-  { 0,                          0,                 0, 0 }
-};
-
 // Store the command-line options for later use.
 
 static void
@@ -519,80 +444,6 @@
   safe_source_file (fname, context, verbose, require_file, "octave");
 }
 
-// Usage message with extra help.
-
-static void
-verbose_usage (void)
-{
-  std::cout << octave_name_version_copyright_copying_and_warranty ()
-            << "\n\
-\n\
-Usage: octave [options] [FILE]\n\
-\n\
-Options:\n\
-\n\
-  --built-in-docstrings-file FILE Use docs for built-ins from FILE.\n\
-  --debug, -d             Enter parser debugging mode.\n\
-  --debug-jit             Enable JIT compiler debugging/tracing.\n\
-  --doc-cache-file FILE   Use doc cache file FILE.\n\
-  --echo-commands, -x     Echo commands as they are executed.\n\
-  --eval CODE             Evaluate CODE.  Exit when done unless --persist.\n\
-  --exec-path PATH        Set path for executing subprograms.\n\
-  --force-gui             Force graphical user interface to start.\n\
-  --help, -h,             Print short help message and exit.\n\
-  --image-path PATH       Add PATH to head of image search path.\n\
-  --info-file FILE        Use top-level info file FILE.\n\
-  --info-program PROGRAM  Use PROGRAM for reading info files.\n\
-  --interactive, -i       Force interactive behavior.\n\
-  --line-editing          Force readline use for command-line editing.\n\
-  --no-fork               Don't fork when starting the graphical user interface.\n\
-  --no-gui                Disable the graphical user interface.\n\
-  --no-history, -H        Don't save commands to the history list\n\
-  --no-init-file          Don't read the ~/.octaverc or .octaverc files.\n\
-  --no-init-path          Don't initialize function search path.\n\
-  --no-jit-compiler       Disable the JIT compiler.\n\
-  --no-line-editing       Don't use readline for command-line editing.\n\
-  --no-site-file          Don't read the site-wide octaverc file.\n\
-  --no-window-system, -W  Disable window system, including graphics.\n\
-  --norc, -f              Don't read any initialization files.\n\
-  --path PATH, -p PATH    Add PATH to head of function search path.\n\
-  --persist               Go interactive after --eval or reading from FILE.\n\
-  --silent, --quiet, -q   Don't print message at startup.\n\
-  --texi-macros-file FILE Use Texinfo macros in FILE for makeinfo command.\n\
-  --traditional           Set variables for closer MATLAB compatibility.\n\
-  --verbose, -V           Enable verbose output in some cases.\n\
-  --version, -v           Print version number and exit.\n\
-\n\
-  FILE                    Execute commands from FILE.  Exit when done\n\
-                          unless --persist is also specified.\n\
-\n"
-            << octave_www_statement ()
-            << "\n\n"
-            << octave_contrib_statement ()
-            << "\n\n"
-            << octave_bugs_statement ()
-            << "\n";
-
-  exit (0);
-}
-
-// Terse usage messsage.
-
-static void
-usage (void)
-{
-  std::cerr << "\nusage: " << usage_string << "\n\n";
-  exit (1);
-}
-
-static void
-print_version_and_exit (void)
-{
-  std::cout << octave_name_version_copyright_copying_warranty_and_bugs ()
-            << "\n";
-  exit (0);
-}
-
 static void
 lo_error_handler (const char *fmt, ...)
 {
@@ -690,7 +541,7 @@
           // Unrecognized option.  getopt_long already printed a
           // message about that, so we will just print the usage string
           // and exit.
-          usage ();
+          octave_print_terse_usage_and_exit ();
           break;
 
         case 'H':
@@ -717,7 +568,7 @@
           break;
 
         case 'h':
-          verbose_usage ();
+          octave_print_verbose_usage_and_exit ();
           break;
 
         case 'i':
@@ -741,7 +592,7 @@
           break;
 
         case 'v':
-          print_version_and_exit ();
+          octave_print_version_and_exit ();
           break;
 
         case BUILT_IN_DOCSTRINGS_FILE_OPTION:
@@ -850,7 +701,8 @@
   if (force_gui_option && no_gui_option)
     {
       error ("error: only one of --force-gui and --no-gui may be used");
-      usage ();
+
+      octave_print_terse_usage_and_exit ();
     }
 }