X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/4251b4bd0087752ceddbf95a6a8c928ab2207844..68270520285b0dc869565573fce3b02e860ffa7f:/src/cdecl99.c diff --git a/src/cdecl99.c b/src/cdecl99.c index f7eed62..1b82168 100644 --- a/src/cdecl99.c +++ b/src/cdecl99.c @@ -58,13 +58,13 @@ static void do_add_history(const char *line) #endif static const char *progname = "cdecl99"; -static bool interactive = true; +static bool batch_mode; void print_error(const char *fmt, ...) { va_list(ap); - if (!interactive) + if (batch_mode) fprintf(stderr, "%s: ", progname); fprintf(stderr, "%s", _("error: ")); @@ -124,22 +124,6 @@ static void print_help(const struct option *lopts) printf(_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT); } -static int repl_cmdline(unsigned count, char **commands) -{ - int ret = 0; - unsigned i; - - for (i = 0; i < count; i++) { - int rc = run_command(commands[i], false); - if (rc < 0) - ret = -1; - else if (rc > 0) - break; - } - - return ret; -} - static int do_getline(char **linebuf, size_t *n) { ssize_t rc; @@ -155,17 +139,17 @@ static int do_getline(char **linebuf, size_t *n) return 1; } -static int do_readline(char **linebuf, size_t *n, int interactive) +static int do_readline(char **linebuf, size_t *n, int batch) { #if !HAVE_READLINE - if (interactive) { + if (!batch) { fputs("> ", stdout); fflush(stdout); } return do_getline(linebuf, n); #else - if (!interactive) + if (batch) return do_getline(linebuf, n); free(*linebuf); @@ -177,24 +161,40 @@ static int do_readline(char **linebuf, size_t *n, int interactive) #endif } -static int repl(int interactive) +static int repl(int batch) { char *line = NULL; int ret = 0; size_t n; - while (do_readline(&line, &n, interactive)) { - int rc = run_command(line, interactive); + while (do_readline(&line, &n, batch)) { + int rc = run_command(line, batch); if (rc > 0) break; else if (rc < 0) - ret = -!interactive; + ret = -batch; } free(line); return ret; } +static int repl_cmdline(unsigned count, char **commands) +{ + int ret = 0; + unsigned i; + + for (i = 0; i < count; i++) { + int rc = run_command(commands[i], true); + if (rc < 0) + ret = -1; + else if (rc > 0) + break; + } + + return ret; +} + /* Initialize gettext */ static void init_i18n(void) { @@ -229,10 +229,10 @@ static int initialize(int argc, char **argv) quiet = 1; break; case 'b': - interactive = false; + batch_mode = true; break; case 'i': - interactive = true; + batch_mode = false; break; case 'f': filename = optarg; @@ -265,10 +265,10 @@ static int initialize(int argc, char **argv) /* --filename and --execute imply --batch. */ if (filename || execute) - interactive = false; + batch_mode = true; /* --batch implies --quiet */ - if (interactive && !quiet) + if (!batch_mode && !quiet) print_version(); /* --execute supersedes --filename */ @@ -295,7 +295,7 @@ int main(int argc, char **argv) if (execute) rc = repl_cmdline(execute, argv); else - rc = repl(interactive); + rc = repl(batch_mode); if (rc != 0) return EXIT_FAILURE;