commit:     de4b7db665badb939dadb36e8ad6bb6917e183e2
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 16 19:52:59 2018 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Mon Apr 16 20:26:26 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=de4b7db6

games-arcade/frozen-bubble: Stop using games.eclass, apply Fedora fixes

Package-Manager: Portage-2.3.28, Repoman-2.3.9

 .../files/frozen-bubble-2.2.1_beta1-Werror.patch   |  4 +-
 ...frozen-bubble-2.2.1_beta1-fix-buffer-size.patch | 69 ++++++++++++++++++
 .../frozen-bubble-2.2.1_beta1-r1.ebuild            | 83 ++++++++++++++++++++++
 3 files changed, 154 insertions(+), 2 deletions(-)

diff --git 
a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch 
b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch
index d891d8e71a6..0573e50fee9 100644
--- a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch
+++ b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-Werror.patch
@@ -2,8 +2,8 @@ From: Julian Ospald <[email protected]>
 Date: Sun Feb 10 14:48:58 UTC 2013
 Subject: remove Werror compiler flag wrt #456654
 
---- inc/My/Builder.pm
-+++ inc/My/Builder.pm
+--- a/inc/My/Builder.pm
++++ b/inc/My/Builder.pm
 @@ -123,7 +123,7 @@
              push @ofiles, $cbuilder->compile(
                  source               => catfile($server_directory, $cfile),

diff --git 
a/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch
 
b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch
new file mode 100644
index 00000000000..b1b3bfcb1ed
--- /dev/null
+++ 
b/games-arcade/frozen-bubble/files/frozen-bubble-2.2.1_beta1-fix-buffer-size.patch
@@ -0,0 +1,69 @@
+From aa2ce32185b4477e659ed7c70d09c440610ef67b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
+Date: Fri, 2 Feb 2018 12:44:15 +0100
+Subject: [PATCH] Fix buffer size when formatting current date
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc-8 and glibc-2.26.9000 reports this error:
+
+server/log.c:64:54: error: '%03d' directive output may be truncated writing 
between 3 and 11 bytes into a region of size between 0 and 49 
[-Werror=format-truncation=]
+     snprintf(current_date, sizeof(current_date), "%s.%03d", buf, (int)(1000 * 
(time-seconds)));
+                                                      ^~~~
+
+This patch fixes two mistakes in the get_current_date() function:
+
+First strftime() can fail and then buf content is undefined. The patch
+makes sure the buf content is properly null-termited.
+
+Second if strftime() uses up the the whole buf array, no space will be
+left for appending miliseconds to current_date value in the subsequent
+snprintf() call. The patch increases current_data size so that things
+will always fit.
+
+In reality, all this should not matter because sane strftime() will
+return fixed-lenght string. But for all the cases and for sake of the
+compiler check this patch should be applied.
+
+Signed-off-by: Petr Písař <[email protected]>
+---
+ server/log.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/server/log.c b/server/log.c
+index 2fe7b7c..f696752 100644
+--- a/server/log.c
++++ b/server/log.c
+@@ -52,15 +52,17 @@ double get_current_time_exact(void)
+     return (double) now.tv_sec + now.tv_usec / 1e6;  // bad bad idea to use 
float as precision is not down to the seconds then
+ }
+ 
+-char current_date[50];
++char current_date[70];
+ char* get_current_date(void) 
+ {
+     struct tm * lt;
+     char buf[50];
+     double time = get_current_time_exact();
+     time_t seconds = (time_t)time;
++    size_t length;
+     lt = localtime(&seconds);
+-    strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt);
++    length = strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt);
++    buf[length] = '\0';
+     snprintf(current_date, sizeof(current_date), "%s.%03d", buf, (int)(1000 * 
(time-seconds)));
+     return current_date;
+ }
+diff -up frozen-bubble-2.2.1-beta1/server/log.h~ 
frozen-bubble-2.2.1-beta1/server/log.h
+--- frozen-bubble-2.2.1-beta1/server/log.h~    2010-08-07 15:36:27.000000000 
+0200
++++ frozen-bubble-2.2.1-beta1/server/log.h     2018-02-08 14:09:52.472451694 
+0100
+@@ -23,7 +23,7 @@
+ time_t get_current_time(void);
+ double get_current_time_exact(void);
+ 
+-extern char current_date[50];
++extern char current_date[70];
+ char* get_current_date(void);
+ 
+ enum output_types { OUTPUT_TYPE_DEBUG, OUTPUT_TYPE_CONNECT, OUTPUT_TYPE_INFO, 
OUTPUT_TYPE_ERROR };

diff --git a/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r1.ebuild 
b/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r1.ebuild
new file mode 100644
index 00000000000..9315ab5159b
--- /dev/null
+++ b/games-arcade/frozen-bubble/frozen-bubble-2.2.1_beta1-r1.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+MY_P="${P/_/-}"
+
+inherit desktop gnome2-utils perl-module toolchain-funcs
+
+DESCRIPTION="A Puzzle Bubble clone written in perl (now with network support)"
+HOMEPAGE="http://www.frozen-bubble.org/";
+SRC_URI="http://www.frozen-bubble.org/data/${MY_P}.tar.bz2";
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND="
+       >=dev-lang/perl-5.12
+       dev-libs/glib:2
+       >=dev-perl/Alien-SDL-1.413
+       dev-perl/Compress-Bzip2
+       dev-perl/File-ShareDir
+       dev-perl/File-Slurp
+       dev-perl/File-Which
+       dev-perl/IPC-System-Simple
+       >=dev-perl/SDL-2.511
+       media-libs/sdl-image[gif,png]
+       media-libs/sdl-mixer[vorbis]
+       media-libs/sdl-pango
+       media-libs/sdl-ttf
+       virtual/libiconv
+       virtual/perl-Getopt-Long
+       virtual/perl-IO
+"
+DEPEND="${RDEPEND}
+       virtual/pkgconfig
+       dev-perl/Locale-Maketext-Lexicon
+       virtual/perl-ExtUtils-CBuilder
+       virtual/perl-ExtUtils-ParseXS
+       dev-perl/Module-Build
+"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+       perl-module_src_prepare
+       eapply "${FILESDIR}"/${P}-Werror.patch
+       eapply "${FILESDIR}"/${P}-fix-buffer-size.patch
+}
+
+src_configure() {
+       LD=$(tc-getCC) perl-module_src_configure
+}
+
+src_compile() {
+       LD=$(tc-getCC) perl-module_src_compile
+}
+
+src_install() {
+       mydoc="AUTHORS Changes HISTORY README" perl-module_src_install
+       newdoc server/README README.server
+       newdoc server/init/README README.server.init
+
+       local res
+       for res in 16 32 48 64; do
+               newicon -s ${res}  
share/icons/frozen-bubble-icon-${res}x${res}.png ${PN}.png
+       done
+
+       make_desktop_entry ${PN} Frozen-Bubble
+}
+
+pkg_preinst() {
+       gnome2_icon_savelist
+}
+
+pkg_postinst() {
+       gnome2_icon_cache_update
+}
+
+pkg_postrm() {
+       gnome2_icon_cache_update
+}

Reply via email to