X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/f2f75f25ecc377fb95877449aa12314ee1385a1f..7031fb3bec5bbef1d14686ba0434442a4ebf5ebd:/src/execute.gperf diff --git a/src/execute.gperf b/src/execute.gperf index 5f6740e..a45413d 100644 --- a/src/execute.gperf +++ b/src/execute.gperf @@ -1,6 +1,6 @@ %{ /* - * Copyright © 2021 Nick Bowler + * Copyright © 2021, 2023 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ #include "cdecl99.h" #include "commands.h" +#include "help.h" typedef #if STRTAB_MAX_OFFSET < UINT_LEAST8_MAX @@ -71,18 +72,18 @@ static int run_cmd_help(void) int w; w = printf(" %s", stringpool+c->name); - if (w < 0 || w > 13) { + if (w <= 0 || w > 13) { putchar('\n'); w = 0; } - print_block(gettext(strtab+c->cmd), 15, w); + help_print_desc(NULL, gettext(strtab+c->cmd), 15, w); } return 0; } -int run_command(const char *line, int interactive) +int run_command(const char *line, int batch) { const char *cmd = line + strspn(line, " \t"); const char *arg = cmd + strcspn(cmd, " \t"); @@ -94,9 +95,8 @@ int run_command(const char *line, int interactive) c = in_word_set(cmd, arg-cmd); if (!c) { - fprintf(stderr, _("unknown command %.*s\n"), - (int)(arg-cmd), cmd); - if (interactive) { + print_error(_("unknown command %.*s"), (int)(arg-cmd), cmd); + if (!batch) { fprintf(stderr, "%s\n", _("Try \"help\" for a list of possible commands.")); } @@ -104,11 +104,16 @@ int run_command(const char *line, int interactive) } switch (c->cmd) { - case cmd_help: return run_cmd_help(); - case cmd_declare: case cmd_type: return run_command_declare(cmd); - case cmd_simplify: return run_command_simplify(arg); - case cmd_explain: return run_command_explain(arg); - case cmd_quit: return 1; + case cmd_help: + return run_cmd_help(); + case cmd_declare: case cmd_type: + return run_command_cdecl(cmd, INPUT_ENGLISH, OUTPUT_C); + case cmd_simplify: + return run_command_cdecl(arg, INPUT_C, OUTPUT_C); + case cmd_explain: + return run_command_cdecl(arg, INPUT_C, OUTPUT_ENGLISH); + case cmd_quit: + return 1; } assert(0);