X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/e7b2e067cd007f12227af623649a8e9204a352b1..57510b6e4963ad39846a4f4c7fbd4ce7145f426d:/src/cdecl99.c?ds=sidebyside diff --git a/src/cdecl99.c b/src/cdecl99.c index d58433b..bebdfff 100644 --- a/src/cdecl99.c +++ b/src/cdecl99.c @@ -1,33 +1,39 @@ /* - * Command line utility for making sense of C declarations. - * Copyright © 2011 Nick Bowler + * Command line utility for making sense of C declarations. + * Copyright © 2011-2012, 2020 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include #include #include #include #include +#include #include #include -#include -#include #include -#include "readline.h" +#include "history.h" #include "cdecl.h" +#include +#include +#include +#include +#include + #define _(x) gettext(x) #define N_(x) x #define PN_(c, x) x @@ -76,12 +82,22 @@ static struct helptext { static void print_version(void) { + const char *copysign = "(C)"; + void *convsign = NULL; + + if (ENABLE_NLS) { + convsign = str_iconv("\xc2\xa9", "UTF-8", locale_charset()); + if (convsign) + copysign = convsign; + } + puts(PACKAGE_STRING); - /* TRANSLATORS: (C) must *always* be translated as ©. */ - printf("Copyright %s 2011 Nick Bowler.\n", gettext("(C)")); - puts("License GPLv3+: GNU GPL version 3 or later ."); + printf("Copyright %s 2020 Nick Bowler.\n", copysign); + puts("License GPLv3+: GNU GPL version 3 or any later version."); puts("This is free software: you are free to change and redistribute it."); puts("There is NO WARRANTY, to the extent permitted by law."); + + free(convsign); } static void print_usage(FILE *f) @@ -398,11 +414,24 @@ static int run_command(const char *line) return -1; } +static bool is_blank_line(const char *line) +{ + for (size_t i = 0; line[i]; i++) { + if (!isblank((unsigned char)line[i])) + return false; + } + + return true; +} + static int repl(void) { char *line; for (; (line = readline("> ")); free(line)) { + if (!is_blank_line(line)) + cdecl_add_history(line); + if (!run_command(line)) break; } @@ -463,13 +492,13 @@ static int repl_noninteractive(void) /* Initialize gettext and setup translated long options. */ static void init_i18n(void) { + if (!ENABLE_NLS) + return; + setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); - if (!ENABLE_NLS) - return; - for (int i = 0, j = NOPTS; i < NOPTS; i++) { const char *tname = pgettext_expr("longopt", lopts[i].name);