#include <stdlib.h>
#include <string.h>
-
#include "data/settings.h"
-#include "data/file-name.h"
#include "language/lexer/include-path.h"
#include "libpspp/argv-parser.h"
#include "libpspp/assertion.h"
#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"
enum lex_syntax_mode *syntax_mode;
bool *process_statrc;
char **syntax_encoding;
+ char *table_look;
};
enum
OPT_INTERACTIVE,
OPT_SYNTAX_ENCODING,
OPT_NO_STATRC,
+ OPT_TABLE_LOOK,
OPT_HELP,
OPT_VERSION,
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},
};
}
}
-static void
-parse_output_option (struct terminal_opts *to, const char *option)
-{
- const char *equals;
- char *key, *value;
-
- equals = strchr (option, '=');
- if (equals == NULL)
- {
- error (0, 0, _("%s: output option missing `='"), option);
- return;
- }
-
- key = xmemdup0 (option, equals - option);
- if (string_map_contains (&to->options, key))
- {
- error (0, 0, _("%s: output option specified more than once"), key);
- free (key);
- return;
- }
-
- value = xmemdup0 (equals + 1, strlen (equals + 1));
- string_map_insert_nocopy (&to->options, key, value);
-}
-
static char *
get_supported_formats (void)
{
struct string_set format_set;
char *format_string;
const char *format;
- size_t i;
/* Get supported formats as unordered set. */
string_set_init (&format_set);
char *inc_path = string_array_join (include_path_default (), " ");
printf (_("\
-PSPP, a program for statistical analysis of sample data.\n\
+PSPP, a program for statistical analysis of sampled data.\n\
Usage: %s [OPTION]... FILE...\n\
\n\
Arguments to long options also apply to equivalent short 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\
break;
case OPT_OUTPUT_OPTION:
- parse_output_option (to, optarg);
+ output_driver_parse_option (optarg, &to->options);
break;
case OPT_NO_OUTPUT:
*to->process_statrc = false;
break;
+ case OPT_TABLE_LOOK:
+ to->table_look = optarg;
+ break;
+
case OPT_HELP:
usage ();
exit (EXIT_SUCCESS);
return to;
}
-/* Return true iff the terminal appears to be an xterm with
- UTF-8 capabilities */
-static bool
-term_is_utf8_xterm (void)
-{
- char *s = NULL;
-
- if ( (s = getenv ("TERM")) && (0 == strcmp ("xterm", s)) )
- if ( (s = getenv ("XTERM_LOCALE")) )
- return strcasestr (s, "utf8") || strcasestr (s, "utf-8");
-
- return false;
-}
-
void
terminal_opts_done (struct terminal_opts *to, int argc, char *argv[])
{
register_output_driver (to);
if (!to->has_output_driver)
{
- if ((0 == strcmp (locale_charset (), "UTF-8"))
- ||
- (term_is_utf8_xterm ()) )
- {
- string_map_insert (&to->options, "box", "unicode");
- }
-
string_map_insert (&to->options, "output-file", "-");
string_map_insert (&to->options, "format", "txt");
register_output_driver (to);
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);
}