X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fprint-space.c;h=b908927bdf6415438542a708f92050761575b9e0;hb=82bb2efcfd8fe17cb2d5caeb8edf26612fe0ca4c;hp=adeb92ba5b656f7391dd75bc1736469d59c00dd7;hpb=2814862a2c45a39f9822cf4c64ca3884822d064d;p=pspp diff --git a/src/language/data-io/print-space.c b/src/language/data-io/print-space.c index adeb92ba5b..b908927bdf 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" @@ -41,8 +41,7 @@ struct print_space_trns struct expression *expr; /* Number of lines; NULL means 1. */ }; -static trns_proc_func print_space_trns_proc; -static trns_free_func print_space_trns_free; +static const struct trns_class print_space_class; int cmd_print_space (struct lexer *lexer, struct dataset *ds) @@ -77,7 +76,7 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds) if (lex_token (lexer) != T_ENDCMD) { - expr = expr_parse (lexer, ds, EXPR_NUMBER); + expr = expr_parse (lexer, ds, VAL_NUMERIC); if (lex_token (lexer) != T_ENDCMD) { lex_error (lexer, _("expecting end of command")); @@ -100,8 +99,7 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds) trns->writer = writer; trns->expr = expr; - add_transformation (ds, - print_space_trns_proc, print_space_trns_free, trns); + add_transformation (ds, &print_space_class, trns); fh_unref (handle); return CMD_SUCCESS; @@ -112,7 +110,7 @@ error: } /* Executes a PRINT SPACE transformation. */ -static int +static enum trns_result print_space_trns_proc (void *t_, struct ccase **c, casenumber case_num UNUSED) { @@ -124,17 +122,17 @@ 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); /* XXX */ @@ -154,3 +152,9 @@ print_space_trns_free (void *trns_) free (trns); return ok; } + +static const struct trns_class print_space_class = { + .name = "PRINT SPACE", + .execute = print_space_trns_proc, + .destroy = print_space_trns_free, +};