X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fsave-translate.c;h=c157701e6cbd21fbc36fda554cf5bde173d9d9e6;hb=d4f19dd9241b87b0b330daf674ed90d767b44822;hp=72b6e3ae7226e0441ef7d75a4e15a5c5b450bb07;hpb=53d339111a9f51561cfccc65764874cdf54e501a;p=pspp diff --git a/src/language/data-io/save-translate.c b/src/language/data-io/save-translate.c index 72b6e3ae72..c157701e6c 100644 --- a/src/language/data-io/save-translate.c +++ b/src/language/data-io/save-translate.c @@ -33,7 +33,6 @@ #include "language/lexer/lexer.h" #include "libpspp/message.h" -#include "xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -50,8 +49,6 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) struct casewriter *writer; struct file_handle *handle; - struct csv_writer_options csv_opts; - bool replace; bool retain_unselected; @@ -80,7 +77,7 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) include_var_names = false; use_value_labels = false; use_print_formats = false; - decimal = settings_get_decimal_char (FMT_F); + decimal = settings_get_fmt_settings ()->decimal; delimiter = 0; qualifier = '"'; @@ -96,7 +93,7 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) { if (handle != NULL) { - lex_sbc_only_once ("OUTFILE"); + lex_sbc_only_once (lexer, "OUTFILE"); goto error; } @@ -110,7 +107,7 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) { if (type != 0) { - lex_sbc_only_once ("TYPE"); + lex_sbc_only_once (lexer, "TYPE"); goto error; } @@ -168,8 +165,8 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) /* XXX should support multibyte UTF-8 delimiters */ if (ss_length (lex_tokss (lexer)) != 1) { - msg (SE, _("The %s string must contain exactly one " - "character."), "DELIMITER"); + lex_error (lexer, _("The %s string must contain exactly " + "one character."), "DELIMITER"); goto error; } delimiter = ss_first (lex_tokss (lexer)); @@ -183,8 +180,8 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) /* XXX should support multibyte UTF-8 qualifiers */ if (ss_length (lex_tokss (lexer)) != 1) { - msg (SE, _("The %s string must contain exactly one " - "character."), "QUALIFIER"); + lex_error (lexer, _("The %s string must contain exactly " + "one character."), "QUALIFIER"); goto error; } qualifier = ss_first (lex_tokss (lexer)); @@ -239,12 +236,12 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) if (type == 0) { - lex_sbc_missing ("TYPE"); + lex_sbc_missing (lexer, "TYPE"); goto error; } else if (handle == NULL) { - lex_sbc_missing ("OUTFILE"); + lex_sbc_missing (lexer, "OUTFILE"); goto error; } else if (!replace && fn_exists (handle)) @@ -257,17 +254,18 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) dict_delete_scratch_vars (dict); dict_compact_values (dict); - csv_opts.recode_user_missing = recode_user_missing; - csv_opts.include_var_names = include_var_names; - csv_opts.use_value_labels = use_value_labels; - csv_opts.use_print_formats = use_print_formats; - csv_opts.decimal = decimal; - csv_opts.delimiter = (delimiter ? delimiter - : type == TAB_FILE ? '\t' - : decimal == '.' ? ',' - : ';'); - csv_opts.qualifier = qualifier; - + struct csv_writer_options csv_opts = { + .recode_user_missing = recode_user_missing, + .include_var_names = include_var_names, + .use_value_labels = use_value_labels, + .use_print_formats = use_print_formats, + .decimal = decimal, + .delimiter = (delimiter ? delimiter + : type == TAB_FILE ? '\t' + : decimal == '.' ? ',' + : ';'), + .qualifier = qualifier, + }; writer = csv_writer_open (handle, dict, &csv_opts); if (writer == NULL) goto error;