#include "libpspp/version.h"
#include "output/driver.h"
#include "output/driver-provider.h"
+#include "output/msglog.h"
#include "ui/terminal/msg-ui.h"
#include "ui/terminal/read-line.h"
struct string_map options; /* Output driver options. */
bool has_output_driver;
bool has_terminal_driver;
+ bool has_error_file;
bool process_statrc;
};
OPT_ERROR_FILE,
OPT_OUTPUT,
OPT_OUTPUT_OPTION,
+ OPT_NO_OUTPUT,
OPT_INTERACTIVE,
OPT_NO_STATRC,
OPT_HELP,
{"error-file", 'e', required_argument, OPT_ERROR_FILE},
{"output", 'o', required_argument, OPT_OUTPUT},
{NULL, 'O', required_argument, OPT_OUTPUT_OPTION},
+ {"no-output", 0, no_argument, OPT_NO_OUTPUT},
{"interactive", 'i', no_argument, OPT_INTERACTIVE},
{"no-statrc", 'r', no_argument, OPT_NO_STATRC},
{"help", 'h', no_argument, OPT_HELP},
key = xmemdup0 (option, equals - option);
if (string_map_contains (&to->options, key))
{
- error (0, 0, _("%s: output option %s specified more than twice"), key);
+ error (0, 0, _("%s: output option specified more than once"), key);
free (key);
return;
}
-O OPTION=VALUE set output option to customize previous -o\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\
Supported output formats: %s\n\
\n\
Language options:\n\
break;
case OPT_ERROR_FILE:
- msg_ui_set_error_file (optarg);
+ if (!strcmp (optarg, "none") || msglog_create (optarg))
+ to->has_error_file = true;
break;
case OPT_OUTPUT:
parse_output_option (to, optarg);
break;
+ case OPT_NO_OUTPUT:
+ /* Pretend that we already have an output driver, which disables adding
+ one in terminal_opts_done() when we don't already have one. */
+ to->has_output_driver = true;
+ break;
+
case OPT_INTERACTIVE:
to->syntax_mode = GETL_INTERACTIVE;
break;
to->syntax_mode = GETL_BATCH;
string_map_init (&to->options);
to->has_output_driver = false;
+ to->has_error_file = false;
to->process_statrc = true;
argv_parser_add_options (ap, terminal_argv_options, N_TERMINAL_OPTIONS,
register_output_driver (to);
}
+ if (!to->has_terminal_driver && !to->has_error_file)
+ msglog_create ("-");
+
string_map_destroy (&to->options);
free (to);
}