From 400da98146534b43d524c7faa048af2d5ba48aea Mon Sep 17 00:00:00 2001
From: mio <miyopan@e.email>
Date: Sun, 8 Sep 2024 05:53:20 +0000
Subject: [PATCH] community/rofi-file-browser-extended: fix build with gcc 14

---
 community/rofi-file-browser-extended/APKBUILD |  8 ++-
 .../gcc14-32-bit.patch                        | 61 +++++++++++++++++
 .../rofi-file-browser-extended/gcc14.patch    | 67 +++++++++++++++++++
 3 files changed, 134 insertions(+), 2 deletions(-)
 create mode 100644 community/rofi-file-browser-extended/gcc14-32-bit.patch
 create mode 100644 community/rofi-file-browser-extended/gcc14.patch

diff --git a/community/rofi-file-browser-extended/APKBUILD b/community/rofi-file-browser-extended/APKBUILD
index 7a84b1cf95b7..b68382293ee2 100644
--- a/community/rofi-file-browser-extended/APKBUILD
+++ b/community/rofi-file-browser-extended/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Jakub Jirutka <jakub@jirutka.cz>
 pkgname=rofi-file-browser-extended
 pkgver=1.3.1
-pkgrel=0
+pkgrel=1
 pkgdesc="Use rofi to quickly open files"
 url="https://github.com/marvinkreis/rofi-file-browser-extended"
 arch="all"
@@ -10,7 +10,9 @@ license="MIT"
 depends="cmd:rofi"
 makedepends="cmake rofi-dev"
 subpackages="$pkgname-doc"
-source="https://github.com/marvinkreis/rofi-file-browser-extended/archive/$pkgver/rofi-file-browser-extended-$pkgver.tar.gz"
+source="https://github.com/marvinkreis/rofi-file-browser-extended/archive/$pkgver/rofi-file-browser-extended-$pkgver.tar.gz
+	gcc14.patch
+	gcc14-32-bit.patch"
 options="!check"  # no tests provided
 
 build() {
@@ -32,4 +34,6 @@ package() {
 
 sha512sums="
 269e33d62e5fdf7f6c48763ae4309fac53873d53af4ebf78f731b709ac6ff41d8f8cf21de917866fe5a80f4949d70d3be6e516c3825a8768106c706438a5b3d1  rofi-file-browser-extended-1.3.1.tar.gz
+6a68e6fb1b11af206c711fe1f9d63306c39f8adf695130ce177c212565820d7cb2af532186f3e4d10dc4a2e763901151793912bf01d2eadc149887601567544b  gcc14.patch
+822512ef5d063d5f084451ecbd4b6c1453479bf79c9b04a54cf950e189e672665595098833a169bbeaf60c51c472e87b389c5f4c0f2ed0a5cc789a7cc44106aa  gcc14-32-bit.patch
 "
diff --git a/community/rofi-file-browser-extended/gcc14-32-bit.patch b/community/rofi-file-browser-extended/gcc14-32-bit.patch
new file mode 100644
index 000000000000..5e51c2e0edf3
--- /dev/null
+++ b/community/rofi-file-browser-extended/gcc14-32-bit.patch
@@ -0,0 +1,61 @@
+Source: https://github.com/marvinkreis/rofi-file-browser-extended/pull/54/commits/27cb7d6e92de5cd48c2a70e3bd095fac905d5b7f
+--
+From 27cb7d6e92de5cd48c2a70e3bd095fac905d5b7f Mon Sep 17 00:00:00 2001
+From: Brahmajit Das <brahmajit.xyz@gmail.com>
+Date: Tue, 30 Apr 2024 11:39:59 +0530
+Subject: [PATCH] Fix building with GCC 14 on i686
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GCC 14 (and above) have enabled certain compiler flags such as
+Wincompatible-pointer-types that causes build time errors such as
+
+rofi-file-browser-extended-1.3.1/src/icons.c:52:57: error: passing argument 2 of ‘g_array_steal’ from incompatible pointer type [-Wincompatible-pointer-types]
+   52 |     char** icon_names_raw = g_array_steal ( icon_names, &num_icon_names );
+      |                                                         ^~~~~~~~~~~~~~~
+      |                                                         |
+      |                                                         long unsigned int *
+In file included from /usr/include/glib-2.0/glib.h:33,
+                 from /usr/include/glib-2.0/gmodule.h:30,
+                 from /var/tmp/portage/x11-misc/rofi-file-browser-extended-1.3.1-r1/work/rofi-file-browser-extended-1.3.1/src/icons.c:1:
+/usr/include/glib-2.0/glib/garray.h:86:54: note: expected ‘gsize *’ {aka ‘unsigned int *’} but argument is of type ‘long unsigned int *’
+   86 |                                    gsize            *len);
+      |                                    ~~~~~~~~~~~~~~~~~~^~~
+
+My patch attempts to fix this error and some other C99 related warnings.
+First reported on Gentoo linux, please reffer
+https://bugs.gentoo.org/928491 for more details
+
+Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com>
+---
+ src/files.c | 2 +-
+ src/icons.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/files.c b/src/files.c
+index 29a5f9c..663a5f4 100644
+--- a/src/files.c
++++ b/src/files.c
+@@ -167,7 +167,7 @@ static bool match_glob_patterns ( const char *basename, FileBrowserFileData *fd
+ {
+     int len = strlen ( basename );
+     for ( int i = 0; i < fd->num_exclude_patterns; i++ ) {
+-        if ( g_pattern_match ( fd->exclude_patterns[i], len, basename, NULL ) ) {
++        if ( g_pattern_spec_match ( fd->exclude_patterns[i], len, basename, NULL ) ) {
+             return false;
+         }
+     }
+diff --git a/src/icons.c b/src/icons.c
+index eee00a4..ae476de 100644
+--- a/src/icons.c
++++ b/src/icons.c
+@@ -48,7 +48,7 @@ void request_icons_for_file ( FBFile *fbfile, int icon_size, FileBrowserIconData
+         }
+     }
+ 
+-    unsigned long num_icon_names;
++    gsize num_icon_names;
+     char** icon_names_raw = g_array_steal ( icon_names, &num_icon_names );
+ 
+     /* Create icon fetcher requests. */
diff --git a/community/rofi-file-browser-extended/gcc14.patch b/community/rofi-file-browser-extended/gcc14.patch
new file mode 100644
index 000000000000..910d5b7acbed
--- /dev/null
+++ b/community/rofi-file-browser-extended/gcc14.patch
@@ -0,0 +1,67 @@
+Source: https://github.com/marvinkreis/rofi-file-browser-extended/pull/49
+--
+From 4d402e599e209a072492cc8c0e35a5e039e7bfd6 Mon Sep 17 00:00:00 2001
+From: Florian Schmaus <flo@geekplace.eu>
+Date: Fri, 11 Nov 2022 15:13:22 +0100
+Subject: [PATCH] Check that 'height' is within INT_MAX
+
+---
+ src/filebrowser.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/filebrowser.c b/src/filebrowser.c
+index 59f0140..3060cd2 100644
+--- a/src/filebrowser.c
++++ b/src/filebrowser.c
+@@ -2,6 +2,7 @@
+ #include <stdio.h>
+ #include <gmodule.h>
+ #include <cairo.h>
++#include <limits.h>
+ #include <rofi/mode.h>
+ #include <rofi/helper.h>
+ #include <rofi/mode-private.h>
+@@ -265,6 +266,13 @@ static char *file_browser_get_display_value ( const Mode *sw, unsigned int selec
+ 
+ static cairo_surface_t *file_browser_get_icon ( const Mode *sw, unsigned int selected_line, unsigned int height )
+ {
++    // We receive 'height' as unsinged int but later pass it to
++    // functions that take it as int, so check that the given value
++    // does not exceed INT_MAX.
++    if (height > INT_MAX) {
++        abort();
++    }
++
+     FileBrowserModePrivateData *pd = ( FileBrowserModePrivateData * ) mode_get_private_data ( sw );
+     FileBrowserFileData *fd = &pd->file_data;
+     FileBrowserIconData *id = &pd->icon_data;
+---
+From 6f62a2d0784a6937d35ac8f6df2e22c23bbfc8f4 Mon Sep 17 00:00:00 2001
+From: Florian Schmaus <flo@geekplace.eu>
+Date: Fri, 11 Nov 2022 15:03:32 +0100
+Subject: [PATCH] Fix function pointer initialization
+
+Fix
+
+src/filebrowser.c:380:27: warning: incompatible function pointer types initializing '_mode_get_icon' (aka 'struct _cairo_surface *(*)(const struct rofi_mode *, unsigned int, unsigned int)') with an expression of type 'cairo_surface_t *(const Mode *, unsigned int, int)' (aka 'struct _cairo_surface *(const struct rofi_mode *, unsigned int, int)') [-Wincompatible-function-pointer-types]
+    ._get_icon          = file_browser_get_icon,
+                          ^~~~~~~~~~~~~~~~~~~~~
+
+See also https://bugs.gentoo.org/880985
+---
+ src/filebrowser.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/filebrowser.c b/src/filebrowser.c
+index a5a19af..59f0140 100644
+--- a/src/filebrowser.c
++++ b/src/filebrowser.c
+@@ -263,7 +263,7 @@ static char *file_browser_get_display_value ( const Mode *sw, unsigned int selec
+     }
+ }
+ 
+-static cairo_surface_t *file_browser_get_icon ( const Mode *sw, unsigned int selected_line, int height )
++static cairo_surface_t *file_browser_get_icon ( const Mode *sw, unsigned int selected_line, unsigned int height )
+ {
+     FileBrowserModePrivateData *pd = ( FileBrowserModePrivateData * ) mode_get_private_data ( sw );
+     FileBrowserFileData *fd = &pd->file_data;
-- 
GitLab