X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=068ae0ea631a7f19da70898336a2414052205c55;hb=bb7605897eddfc1a416aa5cb2b6a3de13ee624de;hp=8f955b3e4987022ab1bd66950bf0a956668cd206;hpb=6e097c89af440da90b43ce90864394c4d0c843d5;p=pspp diff --git a/src/language/command.c b/src/language/command.c index 8f955b3e49..068ae0ea63 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -36,9 +36,9 @@ #include "libpspp/i18n.h" #include "libpspp/message.h" #include "libpspp/str.h" -#include "output/text-item.h" +#include "output/driver.h" +#include "output/output-item.h" -#include "xalloc.h" #include "xmalloca.h" #include "gettext.h" @@ -174,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. */ @@ -199,8 +199,10 @@ do_parse_command (struct lexer *lexer, result = CMD_FAILURE; goto finish; } - text_item_submit (text_item_create (TEXT_ITEM_COMMAND_OPEN, command->name)); - 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,9 +248,8 @@ finish: while (lex_token (lexer) == T_ENDCMD) lex_get (lexer); - if (opened) - text_item_submit (text_item_create (TEXT_ITEM_COMMAND_CLOSE, - command->name)); + if (nesting_level != SIZE_MAX) + output_close_groups (nesting_level); return result; } @@ -443,7 +444,7 @@ report_state_mismatch (const struct command *command, enum cmd_state state) } else if (state == CMD_STATE_INPUT_PROGRAM) msg (SE, _("%s is not allowed inside %s."), - command->name, "INPUT PROGRAM" ); + command->name, "INPUT PROGRAM"); else if (state == CMD_STATE_FILE_TYPE) msg (SE, _("%s is not allowed inside %s."), command->name, "FILE TYPE"); @@ -495,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; }