dev-util/re2c: fix -V option handling, bug #664752
authorSergei Trofimovich <slyfox@gentoo.org>
Tue, 28 Aug 2018 19:23:28 +0000 (20:23 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Tue, 28 Aug 2018 19:23:28 +0000 (20:23 +0100)
Patch by Mike Gilbert \o/

Repored-by: Thomas Deutschmann
Closes: https://bugs.gentoo.org/664752
Bug: https://github.com/skvadrik/re2c/issues/211
Fixed-by: Mike Gilbert
Package-Manager: Portage-2.3.48, Repoman-2.3.10

dev-util/re2c/files/re2c-1.1-dash-V.patch [new file with mode: 0644]
dev-util/re2c/re2c-1.1-r1.ebuild [moved from dev-util/re2c/re2c-1.1.ebuild with 94% similarity]

diff --git a/dev-util/re2c/files/re2c-1.1-dash-V.patch b/dev-util/re2c/files/re2c-1.1-dash-V.patch
new file mode 100644 (file)
index 0000000..77c3d80
--- /dev/null
@@ -0,0 +1,49 @@
+From 84a7bf8585c500572a8ad19f9458f31d34abbcdc Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Tue, 28 Aug 2018 12:01:07 -0400
+Subject: [PATCH] Rewrite vernum function
+
+Fixes: https://github.com/skvadrik/re2c/issues/211
+---
+ re2c/src/conf/msg.cc | 27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+--- a/src/conf/msg.cc
++++ b/src/conf/msg.cc
+@@ -102,23 +102,22 @@ void usage()
+ void vernum ()
+ {
+     std::string vernum (PACKAGE_VERSION);
+-    if (vernum[1] == '.')
+-    {
+-        vernum.insert(0, "0");
+-    }
+-    vernum.erase(2, 1);
+-    if (vernum[3] == '.')
+-    {
+-        vernum.insert(2, "0");
+-    }
+-    vernum.erase(4, 1);
+-    if (vernum.length() < 6 || vernum[5] < '0' || vernum[5] > '9')
++    std::string parts[3];
++    unsigned p = 0;
++
++    for (unsigned i = 0; p < 3 && i < vernum.length (); i++)
+     {
+-        vernum.insert(4, "0");
++        if (vernum[i] == '.')
++            p++;
++        else
++            parts[p].push_back (vernum[i]);
+     }
+-    vernum.resize(6, '0');
+-    printf ("%s\n", vernum.c_str ());
++    for (p = 0; p < 3; p++)
++        while (parts[p].length () < 2)
++            parts[p].insert (0, 1, '0');
++
++    printf ("%s%s%s\n", parts[0].c_str (), parts[1].c_str (), parts[2].c_str ());
+ }
+ void version ()
similarity index 94%
rename from dev-util/re2c/re2c-1.1.ebuild
rename to dev-util/re2c/re2c-1.1-r1.ebuild
index bd4ecbe5865e49e87eab1650435490191365ba43..0599306ecfcf22015aa2b3591f5d399283d2fb08 100644 (file)
@@ -13,6 +13,10 @@ LICENSE="public-domain"
 SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
 
+PATCHES=(
+       "${FILESDIR}"/${P}-dash-V.patch
+)
+
 src_prepare() {
        default
        export ac_cv_path_BISON="no"