X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/ad973d63e038f293f2b158f19b04c1582e616af0..35684c08a8429cf1c1148c74d2df8cdf4c31bbac:/src/cdecl99.c diff --git a/src/cdecl99.c b/src/cdecl99.c index 2a522d4..27ce048 100644 --- a/src/cdecl99.c +++ b/src/cdecl99.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,7 @@ #include "cdecl.h" static const char *progname = "cdecl99"; +static bool interactive = true; #include "options.h" static const char sopts[] = SOPT_STRING; @@ -45,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)"; @@ -236,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; } @@ -257,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; @@ -296,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]); @@ -317,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; } }