X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/d3e3654f75d01376794676885589a911d4b12e41..35684c08a8429cf1c1148c74d2df8cdf4c31bbac:/src/cdecl99.c diff --git a/src/cdecl99.c b/src/cdecl99.c index 18c6a5d..27ce048 100644 --- a/src/cdecl99.c +++ b/src/cdecl99.c @@ -25,8 +25,7 @@ #include #include #include -#include "history.h" -#include "cdecl.h" +#include #include #include @@ -36,8 +35,10 @@ #include #include "cdecl99.h" +#include "cdecl.h" static const char *progname = "cdecl99"; +static bool interactive = true; #include "options.h" static const char sopts[] = SOPT_STRING; @@ -46,6 +47,21 @@ static const struct option lopts[] = { {0} }; +void print_error(const char *fmt, ...) +{ + va_list(ap); + + if (!interactive) + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("error: ")); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + fprintf(stderr, "\n"); +} + static void print_version(void) { const char *copysign = "(C)"; @@ -146,7 +162,6 @@ static void print_help(void) puts(_("Options:")); for (opt = lopts; opt->name; opt++) { struct lopt_help help; - const char *line; int w; if (!lopt_get_help(opt, &help)) @@ -187,7 +202,7 @@ static int repl(void) for (; (line = readline("> ")); free(line)) { if (!is_blank_line(line)) - cdecl_add_history(line); + add_history(line); if (run_command(line, true) > 0) break; @@ -238,8 +253,7 @@ static int repl_noninteractive(void) free(line); if (ferror(stdin)) { - errno = saved_errno; - perror("read error"); + print_error("%s", strerror(saved_errno)); return -1; } @@ -259,7 +273,7 @@ static void init_i18n(void) int main(int argc, char **argv) { - bool show_intro = true, interactive = true, execute = false; + bool show_intro = true, execute = false; const char *filename = NULL; int i, opt, rc; @@ -298,7 +312,9 @@ int main(int argc, char **argv) } if (optind < argc) { - fprintf(stderr, _("%s: excess command-line arguments:"), + fprintf(stderr, "%s: ", progname); + + fprintf(stderr, _("excess command-line arguments:"), progname); for (i = optind; i < argc; i++) { fprintf(stderr, " %s", argv[i]); @@ -319,7 +335,8 @@ int main(int argc, char **argv) /* --execute supersedes --filename */ if (filename && !execute) { if (!freopen(filename, "r", stdin)) { - perror(filename); + print_error("failed to open %s: %s\n", filename, + strerror(errno)); return EXIT_FAILURE; } }