X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fterminal-opts.c;h=b9d9e50c589c9ae0507bdadc575223dc7eac40b2;hb=a58399ea2ce9421f72cc5771cd215b121bd8f9dd;hp=284d2c9d6115e9f4ae7477caac58544599ada0a6;hpb=c60cba893280a910c4389617d5ae62d21d54a9c5;p=pspp diff --git a/src/ui/terminal/terminal-opts.c b/src/ui/terminal/terminal-opts.c index 284d2c9d61..b9d9e50c58 100644 --- a/src/ui/terminal/terminal-opts.c +++ b/src/ui/terminal/terminal-opts.c @@ -22,7 +22,6 @@ #include #include - #include "data/settings.h" #include "language/lexer/include-path.h" #include "libpspp/argv-parser.h" @@ -38,6 +37,7 @@ #include "output/driver.h" #include "output/driver-provider.h" #include "output/msglog.h" +#include "output/pivot-table.h" #include "gl/error.h" #include "gl/localcharset.h" @@ -56,9 +56,10 @@ struct terminal_opts bool has_output_driver; bool has_terminal_driver; bool has_error_file; - enum lex_syntax_mode *syntax_mode; + enum segmenter_mode *syntax_mode; bool *process_statrc; char **syntax_encoding; + char *table_look; }; enum @@ -72,6 +73,7 @@ enum OPT_INTERACTIVE, OPT_SYNTAX_ENCODING, OPT_NO_STATRC, + OPT_TABLE_LOOK, OPT_HELP, OPT_VERSION, N_TERMINAL_OPTIONS @@ -88,6 +90,7 @@ static struct argv_option terminal_argv_options[N_TERMINAL_OPTIONS] = {"interactive", 'i', no_argument, OPT_INTERACTIVE}, {"syntax-encoding", 0, required_argument, OPT_SYNTAX_ENCODING}, {"no-statrc", 'r', no_argument, OPT_NO_STATRC}, + {"table-look", 0, required_argument, OPT_TABLE_LOOK}, {"help", 'h', no_argument, OPT_HELP}, {"version", 'V', no_argument, OPT_VERSION}, }; @@ -157,6 +160,7 @@ Output options:\n\ -O device={terminal|listing} override device type for previous -o\n\ -e, --error-file=FILE append errors, warnings, and notes to FILE\n\ --no-output disable default output driver\n\ + --table-look=FILE use output style read from FILE\n\ Supported output formats: %s\n\ \n\ Language options:\n\ @@ -220,11 +224,11 @@ terminal_option_callback (int id, void *to_) break; case OPT_BATCH: - *to->syntax_mode = LEX_SYNTAX_BATCH; + *to->syntax_mode = SEG_MODE_BATCH; break; case OPT_INTERACTIVE: - *to->syntax_mode = LEX_SYNTAX_INTERACTIVE; + *to->syntax_mode = SEG_MODE_INTERACTIVE; break; case OPT_SYNTAX_ENCODING: @@ -235,6 +239,10 @@ terminal_option_callback (int id, void *to_) *to->process_statrc = false; break; + case OPT_TABLE_LOOK: + to->table_look = optarg; + break; + case OPT_HELP: usage (); exit (EXIT_SUCCESS); @@ -252,16 +260,14 @@ terminal_option_callback (int id, void *to_) struct terminal_opts * terminal_opts_init (struct argv_parser *ap, - enum lex_syntax_mode *syntax_mode, bool *process_statrc, + enum segmenter_mode *syntax_mode, bool *process_statrc, char **syntax_encoding) { - struct terminal_opts *to; - - *syntax_mode = LEX_SYNTAX_AUTO; + *syntax_mode = SEG_MODE_AUTO; *process_statrc = true; *syntax_encoding = "Auto"; - to = xzalloc (sizeof *to); + struct terminal_opts *to = XZALLOC (struct terminal_opts); to->syntax_mode = syntax_mode; string_map_init (&to->options); to->has_output_driver = false; @@ -290,5 +296,16 @@ terminal_opts_done (struct terminal_opts *to, int argc, char *argv[]) msglog_create ("-"); string_map_destroy (&to->options); + + if (to->table_look) + { + struct pivot_table_look *look; + char *s = pivot_table_look_read (to->table_look, &look); + if (s) + error (1, 0, "%s", s); + pivot_table_look_set_default (look); + pivot_table_look_unref (look); + } + free (to); }