X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fprint-space.c;h=f077e9c39573e30760303704d0c356e95895bbf7;hb=b70dcc901c6b6b28a310ffc58aca13daa2a58d67;hp=edaf13e769e42c8a6e20c72a617e4c4f3243f802;hpb=bde3425960865b3740bca3e883864c7597dd59a3;p=pspp diff --git a/src/language/data-io/print-space.c b/src/language/data-io/print-space.c index edaf13e769..f077e9c395 100644 --- a/src/language/data-io/print-space.c +++ b/src/language/data-io/print-space.c @@ -27,7 +27,7 @@ #include "language/expressions/public.h" #include "language/lexer/lexer.h" #include "libpspp/message.h" -#include "output/text-item.h" +#include "output/driver.h" #include "gl/xalloc.h" @@ -51,6 +51,7 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds) struct file_handle *handle = NULL; struct expression *expr = NULL; struct dfm_writer *writer; + char *encoding = NULL; if (lex_match_id (lexer, "OUTFILE")) { @@ -59,13 +60,24 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds) handle = fh_parse (lexer, FH_REF_FILE, NULL); if (handle == NULL) return CMD_FAILURE; + + if (lex_match_id (lexer, "ENCODING")) + { + lex_match (lexer, T_EQUALS); + if (!lex_force_string (lexer)) + goto error; + + encoding = ss_xstrdup (lex_tokss (lexer)); + + lex_get (lexer); + } } else handle = NULL; if (lex_token (lexer) != T_ENDCMD) { - expr = expr_parse (lexer, ds, EXPR_NUMBER); + expr = expr_parse (lexer, NULL, ds, VAL_NUMERIC); if (lex_token (lexer) != T_ENDCMD) { lex_error (lexer, _("expecting end of command")); @@ -77,7 +89,7 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds) if (handle != NULL) { - writer = dfm_open_writer (handle); + writer = dfm_open_writer (handle, encoding); if (writer == NULL) goto error; } @@ -112,19 +124,19 @@ print_space_trns_proc (void *t_, struct ccase **c, { double f = expr_evaluate_num (trns->expr, *c, case_num); if (f == SYSMIS) - msg (SW, _("The expression on PRINT SPACE evaluated to the " - "system-missing value.")); + msg (SW, _("The expression on %s evaluated to the " + "system-missing value."), "PRINT SPACE"); else if (f < 0 || f > INT_MAX) - msg (SW, _("The expression on PRINT SPACE evaluated to %g."), f); + msg (SW, _("The expression on %s evaluated to %g."), "PRINT SPACE", f); else n = f; } while (n--) if (trns->writer == NULL) - text_item_submit (text_item_create (TEXT_ITEM_BLANK_LINE, "")); + output_log ("%s", ""); else - dfm_put_record (trns->writer, " ", 1); + dfm_put_record (trns->writer, " ", 1); /* XXX */ if (trns->writer != NULL && dfm_write_error (trns->writer)) return TRNS_ERROR;