X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/e601ae72c16f3f80dcfc131b573ab2e91a390582..1b96e9580714d7a677d10a8e286b3f8a2bddc6f5:/src/execute.gperf diff --git a/src/execute.gperf b/src/execute.gperf index de8b136..51443ba 100644 --- a/src/execute.gperf +++ b/src/execute.gperf @@ -1,6 +1,6 @@ %{ /* - * Copyright © 2021 Nick Bowler + * Copyright © 2021, 2023-2024 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 @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include "cdecl99.h" @@ -72,7 +72,7 @@ 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; } @@ -83,7 +83,7 @@ static int run_cmd_help(void) 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"); @@ -96,7 +96,7 @@ int run_command(const char *line, int interactive) c = in_word_set(cmd, arg-cmd); if (!c) { print_error(_("unknown command %.*s"), (int)(arg-cmd), cmd); - if (interactive) { + 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);