diff --git a/Check-existance-of-map-before-dumping-it.patch b/Check-existance-of-map-before-dumping-it.patch deleted file mode 100644 index 90dc5b79f1b01755aa6e904b33ba11effb88a76c..0000000000000000000000000000000000000000 --- a/Check-existance-of-map-before-dumping-it.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 7e665ed238d01917e40430680b1181c668772756 Mon Sep 17 00:00:00 2001 -From: Oleg Bulatov -Date: Wed, 25 Apr 2018 18:19:42 +0200 -Subject: [PATCH] Check existance of map before dumping it - ---- - src/libkeymap/dump.c | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/src/libkeymap/dump.c b/src/libkeymap/dump.c -index c4e2513..8bc5d70 100644 ---- a/src/libkeymap/dump.c -+++ b/src/libkeymap/dump.c -@@ -520,8 +520,10 @@ no_shorthands: - defs[j] = K(KT_META, KVAL(defs[j - 8])); - - for (j = 0; j < keymapnr; j++) { -- if ((j >= 16 && buf[j] != K_HOLE) || (j < 16 && buf[j] != defs[j])) -- goto unexpected; -+ if (lk_map_exists(ctx, j)) { -+ if ((j >= 16 && buf[j] != K_HOLE) || (j < 16 && buf[j] != defs[j])) -+ goto unexpected; -+ } - } - - isasexpected = 1; -@@ -577,8 +579,10 @@ no_shorthands: - fprintf(fd, "\n"); - - for (j = 1; j < keymapnr; j++) { -- if (buf[j] != buf[0] && !zapped[j]) { -- print_bind(ctx, fd, buf[j], i, j, numeric); -+ if (lk_map_exists(ctx, j)) { -+ if (buf[j] != buf[0] && !zapped[j]) { -+ print_bind(ctx, fd, buf[j], i, j, numeric); -+ } - } - } - } else { --- -2.21.0.windows.1 - diff --git a/Fix-infinite-loop-of-vlock-if-locked-VC-is-closed.patch b/Fix-infinite-loop-of-vlock-if-locked-VC-is-closed.patch deleted file mode 100644 index 054504f7c5efeabf415dd320dd07e1fef479426c..0000000000000000000000000000000000000000 --- a/Fix-infinite-loop-of-vlock-if-locked-VC-is-closed.patch +++ /dev/null @@ -1,28 +0,0 @@ -From afb661b80441b6e3fa8cfa3b69f50e4805ebf8be Mon Sep 17 00:00:00 2001 -From: Vitezslav Crhonek -Date: Mon, 14 May 2018 11:21:45 +0200 -Subject: [PATCH] Fix infinite loop of vlock if locked VC is closed - ---- - src/vlock/auth.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/vlock/auth.c b/src/vlock/auth.c -index 25efb5e..4cbc685 100644 ---- a/src/vlock/auth.c -+++ b/src/vlock/auth.c -@@ -140,9 +140,9 @@ int get_password(pam_handle_t *pamh, const char *username, const char *tty) - fflush(stdout); - /* - * EOF encountered on read? -- * If not on VT, check stdin. -+ * Check stdin. - */ -- if (is_vt || isatty(STDIN_FILENO)) { -+ if (isatty(STDIN_FILENO)) { - /* Ignore error. */ - sleep(SHORT_DELAY); - break; --- -2.21.0.windows.1 - diff --git a/Fix-memory-leak.patch b/Fix-memory-leak.patch deleted file mode 100644 index b4ad502f8c095959b4159b853707c604093fcfb4..0000000000000000000000000000000000000000 --- a/Fix-memory-leak.patch +++ /dev/null @@ -1,43 +0,0 @@ -From ca317cb7bd17792ff9f16a3c0eb49e11e963c63f Mon Sep 17 00:00:00 2001 -From: luochunsheng -Date: Sat, 13 Apr 2019 16:24:11 +0800 -Subject: [PATCH] Subject: [PATCH] Fix memory leak - ---- - src/libkeymap/parser.y | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/libkeymap/parser.y b/src/libkeymap/parser.y -index d9efbf8..50c4f14 100644 ---- a/src/libkeymap/parser.y -+++ b/src/libkeymap/parser.y -@@ -11,6 +11,7 @@ - */ - %{ - #define YY_HEADER_EXPORT_START_CONDITIONS 1 -+#define YY_YY_Y_TAB_H_INCLUDED 1 - - #include "config.h" - #include "nls.h" -@@ -411,7 +412,6 @@ lk_parse_keymap(struct lk_ctx *ctx, lkfile_t *f) - - ctx->mod = 0; - -- yylex_init(&scanner); - yylex_init_extra(ctx, &scanner); - - INFO(ctx, _("Loading %s"), f->pathname); -@@ -424,8 +424,9 @@ lk_parse_keymap(struct lk_ctx *ctx, lkfile_t *f) - - rc = 0; - -+fail: - stack_pop(ctx, scanner); - -- fail: yylex_destroy(scanner); -+ yylex_destroy(scanner); - return rc; - } --- -1.8.3.1 - diff --git a/configure.ac-Fix-logic-of-vlock-configure-switch.patch b/configure.ac-Fix-logic-of-vlock-configure-switch.patch deleted file mode 100644 index 771161f8f8e1deaf2ebeda972fb68d8801dedc40..0000000000000000000000000000000000000000 --- a/configure.ac-Fix-logic-of-vlock-configure-switch.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f7f357ef079b6d185f340e716d7c72a98d82bad0 Mon Sep 17 00:00:00 2001 -From: Garry Filakhtov -Date: Fri, 20 Jul 2018 15:58:56 +0200 -Subject: [PATCH] configure.ac: Fix logic of vlock configure switch - -Downstream bug report: https://bugs.gentoo.org/661650 - -Signed-off-by: Lars Wendler ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 87eb63c..07098cf 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -119,7 +119,7 @@ AM_CONDITIONAL(BUILD_LIBKEYMAP, test "$BUILD_LIBKEYMAP" = "yes") - - AC_ARG_ENABLE(vlock, - AS_HELP_STRING(--disable-vlock, [do not build vlock]), -- [VLOCK_PROG=no],[VLOCK_PROG=yes]) -+ [VLOCK_PROG=$enableval],[VLOCK_PROG=yes]) - AM_CONDITIONAL(VLOCK, test "$VLOCK_PROG" = "yes") - - if test "$VLOCK_PROG" = "yes"; then --- -2.21.0.windows.1 - diff --git a/kbd-1.15-sparc.patch b/kbd-1.15-sparc.patch index 6a2c204123ae75505fc3445776c4813471b1d68f..3fbc0fb67845baf364c381659ce2234de0d3eb1a 100644 --- a/kbd-1.15-sparc.patch +++ b/kbd-1.15-sparc.patch @@ -1,7 +1,7 @@ -diff -up kbd-2.0.4/docs/man/man8/kbdrate.8.orig kbd-2.0.4/docs/man/man8/kbdrate.8 ---- kbd-2.0.4/docs/man/man8/kbdrate.8.orig 2017-01-11 11:04:50.114831348 +0100 -+++ kbd-2.0.4/docs/man/man8/kbdrate.8 2017-01-11 11:05:35.619851252 +0100 -@@ -22,7 +22,7 @@ Using +diff -up kbd-2.1.0/docs/man/man8/kbdrate.8.orig kbd-2.1.0/docs/man/man8/kbdrate.8 +--- kbd-2.1.0/docs/man/man8/kbdrate.8.orig 2019-06-21 10:08:17.000000000 +0200 ++++ kbd-2.1.0/docs/man/man8/kbdrate.8 2019-07-17 10:36:19.876499648 +0200 +@@ -19,7 +19,7 @@ Using without any options will reset the repeat rate to 10.9 characters per second (cps) and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems. These are the IBM defaults. On SPARC-based systems it will reset the repeat rate @@ -10,10 +10,10 @@ diff -up kbd-2.0.4/docs/man/man8/kbdrate.8.orig kbd-2.0.4/docs/man/man8/kbdrate. .SH OPTIONS .TP -diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c ---- kbd-2.0.4/src/kbdrate.c.orig 2017-01-11 11:05:10.226840148 +0100 -+++ kbd-2.0.4/src/kbdrate.c 2017-01-11 11:05:56.832860537 +0100 -@@ -111,9 +111,12 @@ static int valid_delays[] = { 250, 500, +diff -up kbd-2.1.0/src/kbdrate.c.orig kbd-2.1.0/src/kbdrate.c +--- kbd-2.1.0/src/kbdrate.c.orig 2019-07-02 17:44:57.000000000 +0200 ++++ kbd-2.1.0/src/kbdrate.c 2019-07-17 11:07:04.732486323 +0200 +@@ -114,9 +114,12 @@ static int print_only = 0; static int KDKBDREP_ioctl_ok(double rate, int delay, int silent) { @@ -26,8 +26,8 @@ diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c * Since 2.4.9 also on i386. */ struct my_kbd_repeat kbdrep_s; -@@ -176,6 +179,9 @@ KDKBDREP_ioctl_ok(double rate, int delay - rate, kbdrep_s.delay); +@@ -181,6 +184,9 @@ KDKBDREP_ioctl_ok(double rate, int delay + } return 1; /* success! */ +#else /* no KDKBDREP or __sparc__ */ @@ -35,31 +35,28 @@ diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c +#endif /* KDKBDREP */ } - #ifndef KIOCSRATE -@@ -226,7 +232,7 @@ sigalrmhandler(int sig __attribute__((un - int main(int argc, char **argv) - { - #ifdef __sparc__ -- double rate = 5.0; /* Default rate */ -+ double rate = 20.0; /* Default rate */ - int delay = 200; /* Default delay */ - #else - double rate = 10.9; /* Default rate */ -@@ -275,8 +281,9 @@ int main(int argc, char **argv) - if (KIOCSRATE_ioctl_ok(rate, delay, silent)) /* sparc? */ - return 0; + #ifdef KIOCSRATE +@@ -251,6 +257,9 @@ ioport_set(double rate, int delay, int s -- /* The ioport way */ -+ /* The ioport way - will crash on sparc */ + /* https://wiki.osdev.org/PS/2_Keyboard */ ++ /* The ioport way - will crash on sparc */ ++ +#ifndef __sparc__ - for (i = 0; i < RATE_COUNT; i++) + for (i = 0; i < (int) RATE_COUNT; i++) if (rate * 10 >= valid_rates[i]) { value &= 0x60; -@@ -333,5 +340,6 @@ int main(int argc, char **argv) +@@ -304,11 +313,12 @@ ioport_set(double rate, int delay, int s valid_rates[value & 0x1f] / 10.0, valid_delays[(value & 0x60) >> 5]); +#endif - return EXIT_SUCCESS; + return 1; } + + #ifdef __sparc__ +-double rate = 5.0; /* Default rate */ ++double rate = 20.0; /* Default rate */ + int delay = 200; /* Default delay */ + #else + double rate = 10.9; /* Default rate */ diff --git a/kbd-1.15.5-loadkeys-search-path.patch b/kbd-1.15.5-loadkeys-search-path.patch index c2013b8817c94bad7ce2414d25be4e0c8949675e..212dd3367cf1751b8df186cf6367070c19455fe2 100644 --- a/kbd-1.15.5-loadkeys-search-path.patch +++ b/kbd-1.15.5-loadkeys-search-path.patch @@ -1,18 +1,18 @@ -diff -up kbd-2.0.4/src/loadkeys.c.orig kbd-2.0.4/src/loadkeys.c ---- kbd-2.0.4/src/loadkeys.c.orig 2017-01-11 11:14:48.308093019 +0100 -+++ kbd-2.0.4/src/loadkeys.c 2017-01-11 11:15:18.018106020 +0100 -@@ -27,7 +27,7 @@ +diff -up kbd-2.1.0/src/loadkeys.c.orig kbd-2.1.0/src/loadkeys.c +--- kbd-2.1.0/src/loadkeys.c.orig 2019-07-15 10:57:18.000000000 +0200 ++++ kbd-2.1.0/src/loadkeys.c 2019-07-17 14:34:51.224525616 +0200 +@@ -24,7 +24,7 @@ + #include "paths.h" #include "keymap.h" - static const char *progname = NULL; -static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 }; +static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", DATADIR "/" XKBKEYMAPDIR "/", DATADIR "/" LEGACYKEYMAPDIR "/**", KERNDIR "/", 0 }; static const char *const suffixes[] = { "", ".kmap", ".map", 0 }; static void __attribute__((noreturn)) -diff -up kbd-2.0.4/src/paths.h.orig kbd-2.0.4/src/paths.h ---- kbd-2.0.4/src/paths.h.orig 2017-01-11 11:15:40.404115812 +0100 -+++ kbd-2.0.4/src/paths.h 2017-01-11 11:15:59.730124274 +0100 +diff -up kbd-2.1.0/src/paths.h.orig kbd-2.1.0/src/paths.h +--- kbd-2.1.0/src/paths.h.orig 2019-05-07 11:21:10.000000000 +0200 ++++ kbd-2.1.0/src/paths.h 2019-07-17 14:35:13.870574558 +0200 @@ -5,6 +5,8 @@ * The following five subdirectories are defined: */ diff --git a/kbd-2.0.4-covscan-fixes.patch b/kbd-2.0.4-covscan-fixes.patch new file mode 100644 index 0000000000000000000000000000000000000000..6b1fda8b06a06716ed62757f25a042bac5a08e5b --- /dev/null +++ b/kbd-2.0.4-covscan-fixes.patch @@ -0,0 +1,23 @@ +diff -up kbd-2.1.0/src/kdmapop.c.orig kbd-2.1.0/src/kdmapop.c +--- kbd-2.1.0/src/kdmapop.c.orig 2019-05-07 11:21:10.000000000 +0200 ++++ kbd-2.1.0/src/kdmapop.c 2019-07-17 14:38:15.799967669 +0200 +@@ -155,6 +155,7 @@ int getunimap(int fd, struct unimapdesc + } + if (ioctl(fd, GIO_UNIMAP, &ud)) { + perror("GIO_UNIMAP"); ++ free(ud.entries); + return -1; + } + if (ct != ud.entry_ct) +diff -up kbd-2.1.0/src/setfont.c.orig kbd-2.1.0/src/setfont.c +--- kbd-2.1.0/src/setfont.c.orig 2019-06-25 18:14:32.000000000 +0200 ++++ kbd-2.1.0/src/setfont.c 2019-07-17 14:39:57.928188355 +0200 +@@ -323,6 +323,8 @@ do_loadfont(int fd, char *inbuf, int wid + + if (putfont(fd, buf, fontsize, width, hwunit)) + exit(EX_OSERR); ++ ++ free(buf); + } + + static void diff --git a/kbd-2.0.4.tar.xz b/kbd-2.0.4.tar.xz deleted file mode 100644 index dab51534cac25d41fe1e372b158f9110d8bb7d35..0000000000000000000000000000000000000000 Binary files a/kbd-2.0.4.tar.xz and /dev/null differ diff --git a/kbd-2.2.0-fix-flags.patch b/kbd-2.2.0-fix-flags.patch new file mode 100644 index 0000000000000000000000000000000000000000..6e1c018a6648043bb5ed4459cf62f03ff93ed17d --- /dev/null +++ b/kbd-2.2.0-fix-flags.patch @@ -0,0 +1,16 @@ +diff -up kbd-2.2.0/configure.ac.orig kbd-2.2.0/configure.ac +--- kbd-2.2.0/configure.ac.orig 2019-08-28 11:07:00.787173606 +0200 ++++ kbd-2.2.0/configure.ac 2019-08-28 11:08:07.217317151 +0200 +@@ -72,9 +72,9 @@ if test "$enable_code_coverage" = yes; t + fi + + case "$GCC,$ac_cv_prog_cc_g" in +- yes,yes) CFLAGS="-g $CC_O_LEVEL $FORTIFY_SOURCE" ;; +- yes,) CFLAGS="$CC_O_LEVEL $FORTIFY_SOURCE" ;; +- ,yes) CFLAGS="-g" ;; ++ yes,yes) CFLAGS="$CC_O_LEVEL $FORTIFY_SOURCE $CFLAGS" ;; ++ yes,) CFLAGS="$CC_O_LEVEL $FORTIFY_SOURCE $CFLAGS" ;; ++ ,yes) CFLAGS="$CFLAGS" ;; + esac + + CC_CHECK_CFLAGS_APPEND([\ diff --git a/kbd-2.2.0-format-security.patch b/kbd-2.2.0-format-security.patch new file mode 100644 index 0000000000000000000000000000000000000000..291747fb7b0e53a60d33c85efa2bcc9127ebca8f --- /dev/null +++ b/kbd-2.2.0-format-security.patch @@ -0,0 +1,14 @@ +diff -up kbd-2.2.0/src/libkeymap/analyze.l.orig kbd-2.2.0/src/libkeymap/analyze.l +--- kbd-2.2.0/src/libkeymap/analyze.l.orig 2019-06-25 11:41:55.000000000 +0200 ++++ kbd-2.2.0/src/libkeymap/analyze.l 2019-10-17 08:39:01.924605478 +0200 +@@ -463,7 +463,10 @@ To to|To|TO + + strerror_r(errno, buf, sizeof(buf)); + ++ /* workaround -Werror=format-security error + ERR(yyextra, buf); ++ */ ++ ERR(yyextra, _("unknown error")); + return(ERROR); + } + diff --git a/kbd-2.2.0.tar.xz b/kbd-2.2.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..30afd27b6d5a5b0d65aad5bd3def3bfcd3cb3f2d Binary files /dev/null and b/kbd-2.2.0.tar.xz differ diff --git a/kbd.spec b/kbd.spec index 414e887536e178998421da6a97a5168c615d6735..c7a88cb1a85a3abc98e30bcf483249c607ebeddb 100644 --- a/kbd.spec +++ b/kbd.spec @@ -1,39 +1,35 @@ Name: kbd -Version: 2.0.4 -Release: 11 +Version: 2.2.0 +Release: 1 Summary: Tools for managing Linux console(keyboard, virtual terminals, etc.) License: GPLv2+ -URL: https://www.%{name}-project.org/ +URL: https://www.kbd-project.org/ Source0: http://ftp.altlinux.org/pub/people/legion/%{name}/%{name}-%{version}.tar.xz -Source1: %{name}-latsun-fonts.tar.bz2 -Source2: %{name}-latarcyrheb-32.tar.bz2 +Source1: kbd-latsun-fonts.tar.bz2 +Source2: kbd-latarcyrheb-32.tar.bz2 Source3: xml2lst.pl Source4: vlock.pamd Source5: kbdinfo.1 Source6: cz-map.patch -Patch0: %{name}-1.15-keycodes-man.patch -Patch1: %{name}-1.15-sparc.patch -Patch2: %{name}-1.15-unicode_start.patch -Patch3: %{name}-1.15.3-dumpkeys-man.patch -Patch4: %{name}-1.15.5-sg-decimal-separator.patch -Patch5: %{name}-1.15.5-loadkeys-search-path.patch -Patch6: %{name}-2.0.2-unicode-start-font.patch - -Patch6000: Check-existance-of-map-before-dumping-it.patch -Patch6001: Fix-infinite-loop-of-vlock-if-locked-VC-is-closed.patch -Patch6002: setmetamode-use-unsigned-int-type-for-KDGKBMETA-KDSK.patch -Patch6003: Fix-memory-leak.patch -Patch6004: configure.ac-Fix-logic-of-vlock-configure-switch.patch +Patch0: kbd-1.15-keycodes-man.patch +Patch1: kbd-1.15-sparc.patch +Patch2: kbd-1.15-unicode_start.patch +Patch3: kbd-1.15.3-dumpkeys-man.patch +Patch4: kbd-1.15.5-sg-decimal-separator.patch +Patch5: kbd-1.15.5-loadkeys-search-path.patch +Patch6: kbd-2.0.2-unicode-start-font.patch +Patch7: kbd-2.0.4-covscan-fixes.patch +Patch8: kbd-2.2.0-fix-flags.patch +Patch9: kbd-2.2.0-format-security.patch BuildRequires: bison flex gettext pam-devel check-devel -BuildRequires: gcc console-setup xkeyboard-config +BuildRequires: gcc console-setup xkeyboard-config automake Requires: %{name}-misc = %{version}-%{release} Requires: %{name}-legacy = %{version}-%{release} Provides: vlock = %{version} Conflicts: vlock <= 1.3 -Obsoletes: vlock %description The %{name} project contains tools for managing Linux console ,including @@ -69,11 +65,10 @@ cp -fp %{SOURCE6} . %patch4 -p1 -b .sg-decimal-separator %patch5 -p1 -b .loadkeys-search-path %patch6 -p1 -b .unicode-start-font -%patch6000 -p1 -%patch6001 -p1 -%patch6002 -p1 -%patch6003 -p1 -%patch6004 -p1 +%patch7 -p1 -b .covscan-fixes.patch +%patch8 -p1 -b .fix-flags.patch +%patch9 -p1 -b .format-security.patch +autoconf pushd data/keymaps/i386 cp qwerty/pt-latin9.map qwerty/pt.map @@ -84,7 +79,6 @@ cp azerty/fr-latin9.map azerty/fr.map cp azerty/fr-latin9.map azerty/fr-latin0.map -mv dvorak/no.map dvorak/no-dvorak.map mv fgGIod/trf.map fgGIod/trf-fgGIod.map mv olpc/es.map olpc/es-olpc.map mv olpc/pt.map olpc/pt-olpc.map @@ -179,6 +173,9 @@ gzip %{buildroot}/lib/%{name}/keymaps/xkb/cz.map %{_mandir}/man8/*.8.gz %changelog +* Wed Aug 19 2020 jinzhimin - 2.2.0-1 +- update to 2.2.0 + * Wed Jan 22 2020 openEuler Buildteam - 2.0.4-11 - Type:bugfix - Id:NA diff --git a/setmetamode-use-unsigned-int-type-for-KDGKBMETA-KDSK.patch b/setmetamode-use-unsigned-int-type-for-KDGKBMETA-KDSK.patch deleted file mode 100644 index 1ff247f8af48da5f411de07867648346d82c584e..0000000000000000000000000000000000000000 --- a/setmetamode-use-unsigned-int-type-for-KDGKBMETA-KDSK.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 6613abc26a853293c12f4e146a27606f02c8dd03 Mon Sep 17 00:00:00 2001 -From: Andreas Henriksson -Date: Mon, 28 May 2018 21:19:22 +0200 -Subject: [PATCH] setmetamode: use unsigned int type for KDGKBMETA / KDSKBMETA - -alsauser@pragmasoft.com reported that he detected a stack smash -and analyzed the problem as allocating too little space for -the resulting put_user after calling ioctl KDGKBMETA. -The ometa variable should be defined as unsigned int. - -While at it and for correctness, also nmeta and thus the -val member of the struct meta where changed to unsigned -int as it seems the kernel wants to take this type -(but should be harmless to use char). - -Original bug report at https://bugs.debian.org/872623 ---- - src/setmetamode.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/setmetamode.c b/src/setmetamode.c -index 8d75b94..adec0e9 100644 ---- a/src/setmetamode.c -+++ b/src/setmetamode.c -@@ -50,7 +50,7 @@ report(int meta) - - struct meta { - char *name; -- int val; -+ unsigned int val; - } metas[] = { - { "metabit", K_METABIT }, - { "meta", K_METABIT }, -@@ -64,7 +64,7 @@ struct meta { - - int main(int argc, char **argv) - { -- char ometa, nmeta; -+ unsigned int ometa, nmeta; - struct meta *mp; - - set_progname(argv[0]); --- -2.21.0.windows.1 -