X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fsave.c;h=88f3c75ee59a23d66a628995843d3b6dbaf23f27;hb=c8adc6783134063d4ada34a58f9e7abf6a039bb2;hp=f43aba7a46abc986d6f335a053d9b811e37ef7de;hpb=53d339111a9f51561cfccc65764874cdf54e501a;p=pspp diff --git a/src/language/data-io/save.c b/src/language/data-io/save.c index f43aba7a46..88f3c75ee5 100644 --- a/src/language/data-io/save.c +++ b/src/language/data-io/save.c @@ -99,8 +99,7 @@ struct output_trns struct casewriter *writer; /* Writer. */ }; -static trns_proc_func output_trns_proc; -static trns_free_func output_trns_free; +static const struct trns_class output_trns_class; static struct casewriter *parse_write_command (struct lexer *, struct dataset *, enum writer_type, @@ -140,7 +139,7 @@ parse_output_trns (struct lexer *lexer, struct dataset *ds, enum writer_type wri return CMD_CASCADING_FAILURE; } - add_transformation (ds, output_trns_proc, output_trns_free, t); + add_transformation (ds, &output_trns_class, t); return CMD_SUCCESS; } @@ -269,7 +268,7 @@ parse_write_command (struct lexer *lexer, struct dataset *ds, && lex_match_id (lexer, "VERSION")) { lex_match (lexer, T_EQUALS); - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "VERSION", 2, 3)) goto error; sysfile_opts.version = lex_integer (lexer); lex_get (lexer); @@ -290,7 +289,7 @@ parse_write_command (struct lexer *lexer, struct dataset *ds, else if (writer_type == PORFILE_WRITER && lex_match_id (lexer, "DIGITS")) { lex_match (lexer, T_EQUALS); - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "DIGITS", 1, INT_MAX)) goto error; porfile_opts.digits = lex_integer (lexer); lex_get (lexer); @@ -364,7 +363,7 @@ parse_write_command (struct lexer *lexer, struct dataset *ds, } /* Writes case *C to the system file specified on XSAVE or XEXPORT. */ -static int +static enum trns_result output_trns_proc (void *trns_, struct ccase **c, casenumber case_num UNUSED) { struct output_trns *t = trns_; @@ -382,3 +381,9 @@ output_trns_free (void *trns_) free (t); return ok; } + +static const struct trns_class output_trns_class = { + .name = "XSAVE/XEXPORT", + .execute = output_trns_proc, + .destroy = output_trns_free, +};