X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=068ae0ea631a7f19da70898336a2414052205c55;hb=bb7605897eddfc1a416aa5cb2b6a3de13ee624de;hp=de20cb3caac25833be6ffd60654c3b5ac48e8436;hpb=26bad54c73bdb354262a2434de93e632a286b0d3;p=pspp diff --git a/src/language/command.c b/src/language/command.c index de20cb3caa..068ae0ea63 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -36,7 +36,8 @@ #include "libpspp/i18n.h" #include "libpspp/message.h" #include "libpspp/str.h" -#include "output/group-item.h" +#include "output/driver.h" +#include "output/output-item.h" #include "xmalloca.h" @@ -173,8 +174,8 @@ do_parse_command (struct lexer *lexer, struct dataset *ds, enum cmd_state state) { const struct command *command = NULL; + size_t nesting_level = SIZE_MAX; enum cmd_result result; - bool opened = false; int n_tokens; /* Read the command's first token. */ @@ -198,9 +199,10 @@ do_parse_command (struct lexer *lexer, result = CMD_FAILURE; goto finish; } - group_open_item_submit (group_open_item_create_nocopy ( - utf8_to_title (command->name), NULL)); - opened = true; + + nesting_level = output_open_group (group_item_create_nocopy ( + utf8_to_title (command->name), + utf8_to_title (command->name))); if (command->function == NULL) { @@ -246,8 +248,8 @@ finish: while (lex_token (lexer) == T_ENDCMD) lex_get (lexer); - if (opened) - group_close_item_submit (group_close_item_create ()); + if (nesting_level != SIZE_MAX) + output_close_groups (nesting_level); return result; } @@ -494,15 +496,12 @@ cmd_finish (struct lexer *lexer UNUSED, struct dataset *ds UNUSED) int cmd_n_of_cases (struct lexer *lexer, struct dataset *ds) { - /* Value for N. */ - int x; - - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "N OF CASES", 1, LONG_MAX)) return CMD_FAILURE; - x = lex_integer (lexer); + long n = lex_integer (lexer); lex_get (lexer); if (!lex_match_id (lexer, "ESTIMATED")) - dict_set_case_limit (dataset_dict (ds), x); + dict_set_case_limit (dataset_dict (ds), n); return CMD_SUCCESS; }