Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/musl:master commit in: x11-misc/i3status/, x11-misc/i3status/files/
Date: Fri, 11 Jan 2019 15:10:54
Message-Id: 1547219375.d8ac254024baa255a225d915ce28b48dbd339985.blueness@gentoo
commit:     d8ac254024baa255a225d915ce28b48dbd339985
Author:     Luis Ressel <aranea <AT> aixah <DOT> de>
AuthorDate: Thu Jan 10 16:54:46 2019 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jan 11 15:09:35 2019 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=d8ac2540

Patch i3status to remove uses of GLOB_TILDE

* Reimplement resolve_tilde(). The new impl isn't quite equivalent, but
  since this function is only used internally, I don't see why using
  glob() would be neccessary.
* Define GLOB_TILDE=0 to fix the other two sites which use it. They
  process user-provided paths and only use GLOB_TILDE for convenience,
  so it can be disabled.

Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>

 .../i3status/files/i3status-2.12-glob_tilde.patch  | 59 ++++++++++++++++++++++
 x11-misc/i3status/i3status-2.12.ebuild             |  2 +-
 2 files changed, 60 insertions(+), 1 deletion(-)

diff --git a/x11-misc/i3status/files/i3status-2.12-glob_tilde.patch b/x11-misc/i3status/files/i3status-2.12-glob_tilde.patch
new file mode 100644
index 0000000..b1f2ba6
--- /dev/null
+++ b/x11-misc/i3status/files/i3status-2.12-glob_tilde.patch
@@ -0,0 +1,59 @@
+diff --git i/i3status.c w/i3status.c
+index 5088c96..3c18214 100644
+--- i/i3status.c
++++ w/i3status.c
+@@ -210,29 +210,19 @@ static int valid_color(const char *value) {
+  *
+  */
+ static char *resolve_tilde(const char *path) {
+-    static glob_t globbuf;
+-    char *head, *tail, *result = NULL;
+-
+-    tail = strchr(path, '/');
+-    head = strndup(path, tail ? (size_t)(tail - path) : strlen(path));
+-
+-    int res = glob(head, GLOB_TILDE, NULL, &globbuf);
+-    free(head);
+-    /* no match, or many wildcard matches are bad */
+-    if (res == GLOB_NOMATCH || globbuf.gl_pathc != 1)
+-        result = sstrdup(path);
+-    else if (res != 0) {
+-        die("glob() failed");
+-    } else {
+-        head = globbuf.gl_pathv[0];
+-        result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1);
+-        strncpy(result, head, strlen(head));
+-        if (tail)
+-            strncat(result, tail, strlen(tail));
++    char *home, *result = NULL;
++
++    if (strncmp(path, "~/", 2) == 0) {
++        home = getenv("HOME");
++        if (home != NULL) {
++            result = scalloc(strlen(home) + strlen(path));
++            strcpy(result, home);
++            strcat(result, path+1);
++            return result;
++        }
+     }
+-    globfree(&globbuf);
+ 
+-    return result;
++    return sstrdup(path);
+ }
+ 
+ static char *get_config_path(void) {
+diff --git i/include/i3status.h w/include/i3status.h
+index 9ac471d..27ecae4 100644
+--- i/include/i3status.h
++++ w/include/i3status.h
+@@ -236,4 +236,9 @@ extern cfg_t *cfg, *cfg_general, *cfg_section;
+ extern void **cur_instance;
+ 
+ extern pthread_t main_thread;
++
++#ifndef GLOB_TILDE
++#define GLOB_TILDE 0
++#endif
++
+ #endif

diff --git a/x11-misc/i3status/i3status-2.12.ebuild b/x11-misc/i3status/i3status-2.12.ebuild
index 81f9ba7..2d8020a 100644
--- a/x11-misc/i3status/i3status-2.12.ebuild
+++ b/x11-misc/i3status/i3status-2.12.ebuild
@@ -24,7 +24,7 @@ DEPEND="
 "
 RDEPEND="${DEPEND}"
 
-PATCHES=( "${FILESDIR}"/${PN}-2.11-pulseaudio.patch )
+PATCHES=( "${FILESDIR}"/${PN}-2.11-pulseaudio.patch "${FILESDIR}"/${PN}-2.12-glob_tilde.patch )
 
 src_prepare() {
 	default