El mié, 21 ago 2024 a la(s) 6:41 a.m., Stuart Henderson (s...@spacehopper.org) escribió: > > They're using wordexp to replace environment variables, I don't think either > glob or the first propose patch handle that. > > -- > Sent from a phone, apologies for poor formatting. > > > On 20 August 2024 18:51:55 Timo Myyrä <timo.my...@bittivirhe.fi> wrote: > >> On Tue, Aug 20 2024, José Maldonado wrote: >> >>> El mar, 20 ago 2024 a la(s) 12:24 a.m., Timo Myyrä >>> (timo.my...@bittivirhe.fi) escribió: >>>> >>>> >>>> On Mon, Aug 19 2024, José Maldonado wrote: >>>> >>>>> Hi! >>>>> >>>>> A new update for x11/dunst, for bump version to v1.11.0 (with patches >>>>> updates), take a look at the changelog for all the bug fixes and >>>>> improvements. >>>>> >>>>> Added >>>>> >>>>> * Add corners, progress_bar_corners and icon_corners options to >>>>> control which corners to round (#1268) >>>>> * Support GTK/CSS cursor names on Wayland (#1276) >>>>> * Make dunst more portable (#1288) >>>>> * Print detected monitors names (X11) (#1332) >>>>> * New completions for bash, zsh and fish >>>>> >>>>> Changed >>>>> >>>>> * Make X11 optional in build (this allows wayland-only dunst) (#1290) >>>>> * Shell completions are now official and can be installed from the >>>>> Makefile (#1262, #1263) >>>>> * Don't search for icon path if icons are disabled (#1301) >>>>> * Eagerly parse and cache colors (#1306) >>>>> * Update dunstctl manpage (#1298) >>>>> * Update documentation (#1315, #1334) >>>>> >>>>> Fixed >>>>> >>>>> * Fix settings initialization (this prevented --print and >>>>> --startup_notification from working) (#1299) >>>>> * Rework timer logic and fix error about Glib source ID for good (#1308, >>>>> #1196) >>>>> * Prevent memory corruption in XrmSetDatabase (#1256, #1291) >>>>> * Don't try to print NULL strings (#1323) >>>>> * Do not resolve icon paths twice (#1307, #1314) >>>>> * Don't crash the test suite if librsvg is not present (#1329) >>>>> * Fix memory leak in DBus RuleEnable (#1328) >>>>> * Fix dunstctl rule (#1281) >>>>> * Remove newlines from icon logging (#1296) >>>>> * Prevent make from failing if git tags are not found (#1287) >>>>> * Fix some typos (#1324, #1325, #1279) >>>>> >>>>> -- >>>>> "Dios en su Cielo, todo bien en la Tierra" >>>>> *********************************************** >>>>> >>>>> Index: Makefile >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/Makefile,v >>>>> diff -u -p -r1.16 Makefile >>>>> --- Makefile 2 Nov 2023 11:49:20 -0000 1.16 >>>>> +++ Makefile 20 Aug 2024 00:57:35 -0000 >>>>> @@ -2,8 +2,7 @@ COMMENT = customizable and lightweight n >>>>> >>>>> GH_ACCOUNT = dunst-project >>>>> GH_PROJECT = dunst >>>>> -GH_TAGNAME = v1.9.2 >>>>> -REVISION = 0 >>>>> +GH_TAGNAME = v1.11.0 >>>>> >>>>> CATEGORIES = x11 >>>>> >>>>> Index: distinfo >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/distinfo,v >>>>> diff -u -p -r1.9 distinfo >>>>> --- distinfo 8 May 2023 17:58:46 -0000 1.9 >>>>> +++ distinfo 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,2 +1,2 @@ >>>>> -SHA256 (dunst-1.9.2.tar.gz) = >>>>> +mzkXAr0uuGIsNZ5pbqS+Pm35DAbsbtHboLfJrzp5xo= >>>>> -SIZE (dunst-1.9.2.tar.gz) = 4614703 >>>>> +SHA256 (dunst-1.11.0.tar.gz) = >>>>> McDrdJyoPat/WvM765Ucn5qEUSY/zubLz4uj3tvy4fE= >>>>> +SIZE (dunst-1.11.0.tar.gz) = 4645279 >>>>> Index: patches/patch-config_mk >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/patches/patch-config_mk,v >>>>> diff -u -p -r1.8 patch-config_mk >>>>> --- patches/patch-config_mk 8 May 2023 17:58:46 -0000 1.8 >>>>> +++ patches/patch-config_mk 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,14 +1,14 @@ >>>>> Index: config.mk >>>>> --- config.mk.orig >>>>> +++ config.mk >>>>> -@@ -42,8 +42,8 @@ endif >>>>> - >>>>> +@@ -52,8 +52,8 @@ endif >>>>> + >>>>> # flags >>>>> DEFAULT_CPPFLAGS = -Wno-gnu-zero-variadic-macro-arguments >>>>> -D_DEFAULT_SOURCE -DVERSION=\"${VERSION}\" -DSYSCONFDIR=\"${SYSCONFDIR}\" >>>>> --DEFAULT_CFLAGS = -g -std=gnu99 -pedantic -Wall >>>>> -Wno-overlength-strings -Os ${ENABLE_WAYLAND} ${EXTRA_CFLAGS} >>>>> +-DEFAULT_CFLAGS = -g -std=gnu11 -pedantic -Wall >>>>> -Wno-overlength-strings -Os ${ENABLE_WAYLAND} ${ENABLE_X11} >>>>> ${EXTRA_CFLAGS} >>>>> -DEFAULT_LDFLAGS = -lm -lrt >>>>> -+DEFAULT_CFLAGS = -g -std=gnu99 -pedantic -Wall >>>>> -Wno-overlength-strings ${ENABLE_WAYLAND} ${EXTRA_CFLAGS} >>>>> ++DEFAULT_CFLAGS = -g -std=gnu11 -pedantic -Wall >>>>> -Wno-overlength-strings ${ENABLE_WAYLAND} ${ENABLE_X11} ${EXTRA_CFLAGS} >>>>> +DEFAULT_LDFLAGS = -lm >>>>> - >>>>> + >>>>> CPPFLAGS_DEBUG := -DDEBUG_BUILD >>>>> CFLAGS_DEBUG := -O0 >>>>> Index: patches/patch-docs_dunst_5_pod >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/patches/patch-docs_dunst_5_pod,v >>>>> diff -u -p -r1.4 patch-docs_dunst_5_pod >>>>> --- patches/patch-docs_dunst_5_pod 8 May 2023 17:58:46 -0000 1.4 >>>>> +++ patches/patch-docs_dunst_5_pod 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,7 +1,7 @@ >>>>> Index: docs/dunst.5.pod >>>>> --- docs/dunst.5.pod.orig >>>>> +++ docs/dunst.5.pod >>>>> -@@ -409,7 +409,7 @@ Hide the count of stacked duplicate notifications. >>>>> +@@ -444,7 +444,7 @@ Hide the count of stacked duplicate notifications. >>>>> Show an indicator if a notification contains actions and/or open-able >>>>> URLs. See >>>>> ACTIONS below for further details. >>>>> >>>>> @@ -10,16 +10,16 @@ Index: docs/dunst.5.pod >>>>> >>>>> Can be set to a colon-separated list of paths to search for icons to use >>>>> with >>>>> notifications. >>>>> -@@ -423,7 +423,7 @@ replace this and will need new settings. >>>>> - Comma-separated of names of the the themes to use for looking up icons. >>>>> This has >>>>> - to be the name of the directory in which the theme is located, not the >>>>> +@@ -458,7 +458,7 @@ replace this and will need new settings. >>>>> + Comma-separated list of names of the the themes to use for looking up >>>>> icons. This >>>>> + as to be the name of the directory in which the theme is located, not >>>>> the >>>>> human-friendly name of the theme. So for example, the theme B<Breeze >>>>> Dark> is >>>>> -located in F</usr/share/icons/breeze-dark>. In this case you have to set >>>>> the >>>>> +located in F<${PREFIX}/share/icons/breeze-dark>. In this case you have >>>>> to set the >>>>> theme to B<breeze-dark>. >>>>> >>>>> The first theme in the list is the most important. Only if the icon >>>>> cannot be >>>>> -@@ -461,12 +461,12 @@ Maximum number of notifications that will be kept >>>>> in h >>>>> +@@ -496,12 +496,12 @@ Maximum number of notifications that will be kept >>>>> in history. After that limit >>>>> is reached, older notifications will be deleted once a new one arrives. >>>>> See >>>>> HISTORY. >>>>> >>>>> Index: patches/patch-dunstrc >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/patches/patch-dunstrc,v >>>>> diff -u -p -r1.7 patch-dunstrc >>>>> --- patches/patch-dunstrc 8 May 2023 17:58:46 -0000 1.7 >>>>> +++ patches/patch-dunstrc 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,16 +1,16 @@ >>>>> Index: dunstrc >>>>> --- dunstrc.orig >>>>> +++ dunstrc >>>>> -@@ -217,7 +217,7 @@ >>>>> +@@ -230,7 +230,7 @@ >>>>> max_icon_size = 128 >>>>> >>>>> - # Paths to default icons (only neccesary when not using recursive >>>>> icon lookup) >>>>> + # Paths to default icons (only necessary when not using recursive >>>>> icon lookup) >>>>> - icon_path = >>>>> /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ >>>>> + icon_path = >>>>> ${LOCALBASE}/share/icons/gnome/16x16/status/:${LOCALBASE}/share/icons/gnome/16x16/devices/ >>>>> >>>>> ### History ### >>>>> >>>>> -@@ -231,10 +231,10 @@ >>>>> +@@ -244,10 +244,10 @@ >>>>> ### Misc/Advanced ### >>>>> >>>>> # dmenu path. >>>>> Index: patches/patch-src_dunst_c >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/patches/patch-src_dunst_c,v >>>>> diff -u -p -r1.8 patch-src_dunst_c >>>>> --- patches/patch-src_dunst_c 8 May 2023 17:58:46 -0000 1.8 >>>>> +++ patches/patch-src_dunst_c 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,12 +1,12 @@ >>>>> Index: src/dunst.c >>>>> --- src/dunst.c.orig >>>>> +++ src/dunst.c >>>>> -@@ -100,7 +100,7 @@ static gboolean run(void *data) >>>>> +@@ -162,7 +162,7 @@ static gboolean run(void *data) >>>>> gint64 sleep = timeout_at - now; >>>>> sleep = MAX(sleep, 1000); // Sleep at least 1ms >>>>> >>>>> - LOG_D("Sleeping for %li ms", sleep/1000); >>>>> + LOG_D("Sleeping for %lli ms", (long long)sleep/1000); >>>>> >>>>> - if (sleep >= 0) { >>>>> - if (reason == 0 || next_timeout < now || >>>>> timeout_at < next_timeout) { >>>>> + next_timeout_id = g_timeout_add(sleep/1000, run, NULL); >>>>> + } >>>>> Index: patches/patch-src_input_c >>>>> =================================================================== >>>>> RCS file: patches/patch-src_input_c >>>>> diff -N patches/patch-src_input_c >>>>> --- patches/patch-src_input_c 6 Jul 2022 19:30:02 -0000 1.3 >>>>> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >>>>> @@ -1,13 +0,0 @@ >>>>> -Index: src/input.c >>>>> ---- src/input.c.orig >>>>> -+++ src/input.c >>>>> -@@ -4,7 +4,9 @@ >>>>> - #include "settings.h" >>>>> - #include "queues.h" >>>>> - #include <stddef.h> >>>>> -+#ifdef __linux__ >>>>> - #include <linux/input-event-codes.h> >>>>> -+#endif >>>>> - >>>>> - int get_notification_clickable_height(struct notification *n, bool >>>>> first, bool last) >>>>> - { >>>>> Index: patches/patch-src_notification_c >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/patches/patch-src_notification_c,v >>>>> diff -u -p -r1.7 patch-src_notification_c >>>>> --- patches/patch-src_notification_c 8 May 2023 17:58:46 -0000 1.7 >>>>> +++ patches/patch-src_notification_c 20 Aug 2024 00:57:35 -0000 >>>>> @@ -1,16 +1,20 @@ >>>>> Index: src/notification.c >>>>> --- src/notification.c.orig >>>>> +++ src/notification.c >>>>> -@@ -60,7 +60,7 @@ void notification_print(const struct notification *n) >>>>> - printf("\ticon_id: '%s'\n", n->icon_id); >>>>> +@@ -60,9 +60,9 @@ void notification_print(const struct notification *n) >>>>> + printf("\ticon_id: '%s'\n", STR_NN(n->icon_id)); >>>>> printf("\tdesktop_entry: '%s'\n", n->desktop_entry ? >>>>> n->desktop_entry : ""); >>>>> - printf("\tcategory: %s\n", n->category); >>>>> + printf("\tcategory: %s\n", STR_NN(n->category)); >>>>> - printf("\ttimeout: %ld\n", n->timeout/1000); >>>>> +- printf("\tstart: %ld\n", n->start); >>>>> +- printf("\ttimestamp: %ld\n", n->timestamp); >>>>> + printf("\ttimeout: %lld\n", (long long)n->timeout/1000); >>>>> ++ printf("\tstart: %lld\n", n->start); >>>>> ++ printf("\ttimestamp: %lld\n", n->timestamp); >>>>> printf("\turgency: %s\n", >>>>> notification_urgency_to_string(n->urgency)); >>>>> printf("\ttransient: %d\n", n->transient); >>>>> - printf("\tformatted: '%s'\n", n->msg); >>>>> -@@ -140,8 +140,8 @@ void notification_run_script(struct notification *n) >>>>> + printf("\tformatted: '%s'\n", STR_NN(n->msg)); >>>>> +@@ -143,8 +143,8 @@ void notification_run_script(struct notification *n) >>>>> // Set environment variables >>>>> gchar *n_id_str = g_strdup_printf("%i", >>>>> n->id); >>>>> gchar *n_progress_str = >>>>> g_strdup_printf("%i", n->progress); >>>>> @@ -21,7 +25,7 @@ Index: src/notification.c >>>>> safe_setenv("DUNST_APP_NAME", appname); >>>>> safe_setenv("DUNST_SUMMARY", summary); >>>>> safe_setenv("DUNST_BODY", body); >>>>> -@@ -684,14 +684,14 @@ void notification_update_text_to_render(struct >>>>> notific >>>>> +@@ -705,14 +705,15 @@ void notification_update_text_to_render(struct >>>>> notification *n) >>>>> char *new_buf; >>>>> if (hours > 0) { >>>>> new_buf = >>>>> @@ -36,6 +40,7 @@ Index: src/notification.c >>>>> } else { >>>>> - new_buf = g_strdup_printf("%s (%lds old)", buf, >>>>> seconds); >>>>> + new_buf = g_strdup_printf("%s (%llds old)", buf, >>>>> seconds); >>>>> ++ >>>>> } >>>>> >>>>> g_free(buf); >>>>> Index: patches/patch-src_settings_h >>>>> =================================================================== >>>>> RCS file: patches/patch-src_settings_h >>>>> diff -N patches/patch-src_settings_h >>>>> --- patches/patch-src_settings_h 2 Nov 2023 11:49:21 -0000 1.4 >>>>> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >>>>> @@ -1,12 +0,0 @@ >>>>> -Index: src/settings.h >>>>> ---- src/settings.h.orig >>>>> -+++ src/settings.h >>>>> -@@ -13,6 +13,8 @@ >>>>> - >>>>> - #define LIST_END (-1) >>>>> - >>>>> -+enum mouse_button { BTN_LEFT=1, BTN_RIGHT, BTN_MIDDLE, BTN_TOUCH }; >>>>> -+ >>>>> - enum alignment { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT }; >>>>> - enum vertical_alignment { VERTICAL_TOP, VERTICAL_CENTER, >>>>> VERTICAL_BOTTOM }; >>>>> - enum separator_color { SEP_FOREGROUND, SEP_AUTO, SEP_FRAME, SEP_CUSTOM >>>>> }; >>>>> Index: patches/patch-src_utils_c >>>>> =================================================================== >>>>> RCS file: patches/patch-src_utils_c >>>>> diff -N patches/patch-src_utils_c >>>>> --- /dev/null 1 Jan 1970 00:00:00 -0000 >>>>> +++ patches/patch-src_utils_c 20 Aug 2024 00:57:35 -0000 >>>>> @@ -0,0 +1,54 @@ >>>>> +Index: src/utils.c >>>>> +--- src/utils.c.orig >>>>> ++++ src/utils.c >>>>> +@@ -13,7 +13,6 @@ >>>>> + #include <sys/stat.h> >>>>> + #include <time.h> >>>>> + #include <unistd.h> >>>>> +-#include <wordexp.h> >>>>> + >>>>> + #include "log.h" >>>>> + #include "settings_data.h" >>>>> +@@ -180,34 +179,16 @@ int string_array_length(char **s) >>>>> + /* see utils.h */ >>>>> + char *string_to_path(char *string) >>>>> + { >>>>> +- ASSERT_OR_RET(string, string); >>>>> +- >>>>> +- wordexp_t we; >>>>> +- switch (wordexp(string, &we, WRDE_NOCMD | WRDE_UNDEF)) { >>>>> +- case 0: >>>>> +- break; >>>>> +- case WRDE_BADCHAR: >>>>> +- LOG_W("Expansion of \"%s\" failed. It contains >>>>> invalid characters.", string); >>>>> +- return string; >>>>> +- case WRDE_BADVAL: >>>>> +- LOG_W("Expansion of \"%s\" failed. It contains >>>>> an undefined variable.", string); >>>>> +- return string; >>>>> +- case WRDE_CMDSUB: >>>>> +- LOG_W("Expansion of \"%s\" failed. The >>>>> requested command substitution is currently not supported.", string); >>>>> +- return string; >>>>> +- case WRDE_NOSPACE: >>>>> +- LOG_W("Expansion of \"%s\" failed. We ran out >>>>> of memory.", string); >>>>> +- return string; >>>>> +- case WRDE_SYNTAX: >>>>> +- LOG_W("Expansion of \"%s\" failed. It contains >>>>> invalid syntax.", string); >>>>> +- return string; >>>>> +- } >>>>> +- g_free(string); >>>>> ++ if (string && STRN_EQ(string, "~/", 2)) { >>>>> ++ char *home = g_strconcat(user_get_home(), "/", NULL); >>>>> ++ >>>>> ++ string = string_replace_at(string, 0, 2, home); >>>>> + >>>>> +- char *res = g_strjoinv(" ", we.we_wordv); >>>>> +- wordfree(&we); >>>>> ++ g_free(home); >>>>> ++ } >>>>> + >>>>> +- return res; >>>>> ++ return string; >>>>> ++ >>>>> + } >>>>> + >>>>> + /* see utils.h */ >>>>> Index: patches/patch-src_x11_x_c >>>>> =================================================================== >>>>> RCS file: patches/patch-src_x11_x_c >>>>> diff -N patches/patch-src_x11_x_c >>>>> --- patches/patch-src_x11_x_c 11 Mar 2022 20:15:26 -0000 1.2 >>>>> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >>>>> @@ -1,13 +0,0 @@ >>>>> -Index: src/x11/x.c >>>>> ---- src/x11/x.c.orig >>>>> -+++ src/x11/x.c >>>>> -@@ -19,7 +19,9 @@ >>>>> - #include <X11/Xlib.h> >>>>> - #include <X11/Xresource.h> >>>>> - #include <X11/Xutil.h> >>>>> -+#ifdef __linux__ >>>>> - #include <linux/input-event-codes.h> >>>>> -+#endif >>>>> - >>>>> - #include "../dbus.h" >>>>> - #include "../draw.h" >>>>> Index: pkg/PLIST >>>>> =================================================================== >>>>> RCS file: /cvs/ports/x11/dunst/pkg/PLIST,v >>>>> diff -u -p -r1.6 PLIST >>>>> --- pkg/PLIST 11 Mar 2022 20:15:26 -0000 1.6 >>>>> +++ pkg/PLIST 20 Aug 2024 00:57:35 -0000 >>>>> @@ -8,6 +8,19 @@ share/dunst/ >>>>> @sample ${SYSCONFDIR}/dunst/ >>>>> share/dunst/dunstrc >>>>> @sample ${SYSCONFDIR}/dunst/dunstrc >>>>> +share/examples/bash-completion/ >>>>> +share/examples/bash-completion/completions/ >>>>> +share/examples/bash-completion/completions/dunst >>>>> +share/examples/bash-completion/completions/dunstctl >>>>> share/examples/dbus-1/ >>>>> share/examples/dbus-1/services/ >>>>> share/examples/dbus-1/services/org.knopwob.dunst.service >>>>> +share/examples/fish/ >>>>> +share/examples/fish/vendor_completions.d/ >>>>> +share/examples/fish/vendor_completions.d/dunst >>>>> +share/examples/fish/vendor_completions.d/dunstctl >>>>> +share/examples/fish/vendor_completions.d/dunstify >>>>> +share/examples/zsh/ >>>>> +share/examples/zsh/site-functions/ >>>>> +share/examples/zsh/site-functions/_dunst >>>>> +share/examples/zsh/site-functions/_dunstctl >>>> >>>> >>>> Hi, >>>> >>>> I have similar diff I'm working with as well. I'm trying to see if using >>>> glob(3) would be better in the utils.c but so far I haven't got it to >>>> work. I'm trying to come up a bit more clean implementation so it might >>>> be upstreamed later on. >>>> >>>> timo >>> >>> >>> Hi! >>> >>> I can try something using glob(3), but at the moment I am using it as >>> is without problems. Maybe for the weekend, I can give you something >>> with a more elaborate glob(3) and we'll check it out. >>> >>> Thanks! >> >> >> I got following diff at the moment. Not sure if the glob adds value >> here. >> >> timo >> >> diff /usr/ports >> commit - 8e4b8dff34f8c8a46b16f8f5f305a301d14bbf3d >> path + /usr/ports >> blob - eac7443cb23f53d564d0d50c9e3a4c894a1fda82 >> file + x11/dunst/Makefile >> --- x11/dunst/Makefile >> +++ x11/dunst/Makefile >> @@ -2,8 +2,7 @@ COMMENT = customizable and lightweight notification-da >> >> GH_ACCOUNT = dunst-project >> GH_PROJECT = dunst >> -GH_TAGNAME = v1.9.2 >> -REVISION = 0 >> +GH_TAGNAME = v1.11.0 >> >> CATEGORIES = x11 >> >> blob - 093bbc84211d476e0f7fa34991e242f0a06f73da >> file + x11/dunst/distinfo >> --- x11/dunst/distinfo >> +++ x11/dunst/distinfo >> @@ -1,2 +1,2 @@ >> -SHA256 (dunst-1.9.2.tar.gz) = +mzkXAr0uuGIsNZ5pbqS+Pm35DAbsbtHboLfJrzp5xo= >> -SIZE (dunst-1.9.2.tar.gz) = 4614703 >> +SHA256 (dunst-1.11.0.tar.gz) = McDrdJyoPat/WvM765Ucn5qEUSY/zubLz4uj3tvy4fE= >> +SIZE (dunst-1.11.0.tar.gz) = 4645279 >> blob - 958ea4261737f9be45def56356d55fbd23c4dccb >> file + x11/dunst/patches/patch-config_mk >> --- x11/dunst/patches/patch-config_mk >> +++ x11/dunst/patches/patch-config_mk >> @@ -1,13 +1,13 @@ >> Index: config.mk >> --- config.mk.orig >> +++ config.mk >> -@@ -42,8 +42,8 @@ endif >> +@@ -52,8 +52,8 @@ endif >> >> # flags >> DEFAULT_CPPFLAGS = -Wno-gnu-zero-variadic-macro-arguments >> -D_DEFAULT_SOURCE -DVERSION=\"${VERSION}\" -DSYSCONFDIR=\"${SYSCONFDIR}\" >> --DEFAULT_CFLAGS = -g -std=gnu99 -pedantic -Wall -Wno-overlength-strings >> -Os ${ENABLE_WAYLAND} ${EXTRA_CFLAGS} >> +-DEFAULT_CFLAGS = -g -std=gnu11 -pedantic -Wall -Wno-overlength-strings >> -Os ${ENABLE_WAYLAND} ${ENABLE_X11} ${EXTRA_CFLAGS} >> -DEFAULT_LDFLAGS = -lm -lrt >> -+DEFAULT_CFLAGS = -g -std=gnu99 -pedantic -Wall -Wno-overlength-strings >> ${ENABLE_WAYLAND} ${EXTRA_CFLAGS} >> ++DEFAULT_CFLAGS = -g -std=gnu11 -pedantic -Wall -Wno-overlength-strings >> ${ENABLE_WAYLAND} ${ENABLE_X11} ${EXTRA_CFLAGS} >> +DEFAULT_LDFLAGS = -lm >> >> CPPFLAGS_DEBUG := -DDEBUG_BUILD >> blob - 76eb300d292dd84ed65eb1f6f5a8a1deb9d9a797 >> file + x11/dunst/patches/patch-docs_dunst_5_pod >> --- x11/dunst/patches/patch-docs_dunst_5_pod >> +++ x11/dunst/patches/patch-docs_dunst_5_pod >> @@ -1,7 +1,7 @@ >> Index: docs/dunst.5.pod >> --- docs/dunst.5.pod.orig >> +++ docs/dunst.5.pod >> -@@ -409,7 +409,7 @@ Hide the count of stacked duplicate notifications. >> +@@ -444,7 +444,7 @@ Hide the count of stacked duplicate notifications. >> Show an indicator if a notification contains actions and/or open-able >> URLs. See >> ACTIONS below for further details. >> >> @@ -10,16 +10,16 @@ Index: docs/dunst.5.pod >> >> Can be set to a colon-separated list of paths to search for icons to use >> with >> notifications. >> -@@ -423,7 +423,7 @@ replace this and will need new settings. >> - Comma-separated of names of the the themes to use for looking up icons. >> This has >> - to be the name of the directory in which the theme is located, not the >> +@@ -458,7 +458,7 @@ replace this and will need new settings. >> + Comma-separated list of names of the the themes to use for looking up >> icons. This >> + as to be the name of the directory in which the theme is located, not the >> human-friendly name of the theme. So for example, the theme B<Breeze Dark> >> is >> -located in F</usr/share/icons/breeze-dark>. In this case you have to set >> the >> +located in F<${PREFIX}/share/icons/breeze-dark>. In this case you have to >> set the >> theme to B<breeze-dark>. >> >> The first theme in the list is the most important. Only if the icon cannot >> be >> -@@ -461,12 +461,12 @@ Maximum number of notifications that will be kept in h >> +@@ -496,12 +496,12 @@ Maximum number of notifications that will be kept in h >> is reached, older notifications will be deleted once a new one arrives. See >> HISTORY. >> >> blob - fed4e50ecba2ae7b194f97a5556806372857a133 >> file + x11/dunst/patches/patch-dunstrc >> --- x11/dunst/patches/patch-dunstrc >> +++ x11/dunst/patches/patch-dunstrc >> @@ -1,21 +1,21 @@ >> Index: dunstrc >> --- dunstrc.orig >> +++ dunstrc >> -@@ -217,7 +217,7 @@ >> +@@ -230,7 +230,7 @@ >> max_icon_size = 128 >> >> - # Paths to default icons (only neccesary when not using recursive icon >> lookup) >> + # Paths to default icons (only necessary when not using recursive icon >> lookup) >> - icon_path = >> /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ >> + icon_path = >> ${LOCALBASE}/share/icons/gnome/16x16/status/:${LOCALBASE}/share/icons/gnome/16x16/devices/ >> >> ### History ### >> >> -@@ -231,10 +231,10 @@ >> +@@ -244,10 +244,10 @@ >> ### Misc/Advanced ### >> >> # dmenu path. >> - dmenu = /usr/bin/dmenu -p dunst: >> -+ dmenu = ${LOCALBASE}/bin/dmenu -p dunst: >> ++ dmenu = ${LOCALBASE}/usr/bin/dmenu -p dunst: >> >> # Browser for opening urls in context menu. >> - browser = /usr/bin/xdg-open >> blob - cba0c845fee96e3f439ac82f300a16f0427e3bb9 >> file + x11/dunst/patches/patch-src_dunst_c >> --- x11/dunst/patches/patch-src_dunst_c >> +++ x11/dunst/patches/patch-src_dunst_c >> @@ -1,12 +1,12 @@ >> Index: src/dunst.c >> --- src/dunst.c.orig >> +++ src/dunst.c >> -@@ -100,7 +100,7 @@ static gboolean run(void *data) >> +@@ -162,7 +162,7 @@ static gboolean run(void *data) >> gint64 sleep = timeout_at - now; >> sleep = MAX(sleep, 1000); // Sleep at least 1ms >> >> - LOG_D("Sleeping for %li ms", sleep/1000); >> + LOG_D("Sleeping for %lli ms", (long long)sleep/1000); >> >> - if (sleep >= 0) { >> - if (reason == 0 || next_timeout < now || >> timeout_at < next_timeout) { >> + next_timeout_id = g_timeout_add(sleep/1000, run, NULL); >> + } >> blob - f49421b7619b5443f71067d2824793187f223852 >> file + /dev/null >> --- x11/dunst/patches/patch-src_input_c >> +++ /dev/null >> @@ -1,13 +0,0 @@ >> -Index: src/input.c >> ---- src/input.c.orig >> -+++ src/input.c >> -@@ -4,7 +4,9 @@ >> - #include "settings.h" >> - #include "queues.h" >> - #include <stddef.h> >> -+#ifdef __linux__ >> - #include <linux/input-event-codes.h> >> -+#endif >> - >> - int get_notification_clickable_height(struct notification *n, bool first, >> bool last) >> - { >> blob - 715b6f4731cd5787df605a5fe2e7e98aa020ece7 >> file + x11/dunst/patches/patch-src_notification_c >> --- x11/dunst/patches/patch-src_notification_c >> +++ x11/dunst/patches/patch-src_notification_c >> @@ -1,16 +1,20 @@ >> Index: src/notification.c >> --- src/notification.c.orig >> +++ src/notification.c >> -@@ -60,7 +60,7 @@ void notification_print(const struct notification *n) >> - printf("\ticon_id: '%s'\n", n->icon_id); >> +@@ -60,9 +60,9 @@ void notification_print(const struct notification *n) >> + printf("\ticon_id: '%s'\n", STR_NN(n->icon_id)); >> printf("\tdesktop_entry: '%s'\n", n->desktop_entry ? >> n->desktop_entry : ""); >> - printf("\tcategory: %s\n", n->category); >> + printf("\tcategory: %s\n", STR_NN(n->category)); >> - printf("\ttimeout: %ld\n", n->timeout/1000); >> +- printf("\tstart: %ld\n", n->start); >> +- printf("\ttimestamp: %ld\n", n->timestamp); >> + printf("\ttimeout: %lld\n", (long long)n->timeout/1000); >> ++ printf("\tstart: %lld\n", (long long)n->start); >> ++ printf("\ttimestamp: %lld\n", (long long)n->timestamp); >> printf("\turgency: %s\n", >> notification_urgency_to_string(n->urgency)); >> printf("\ttransient: %d\n", n->transient); >> - printf("\tformatted: '%s'\n", n->msg); >> -@@ -140,8 +140,8 @@ void notification_run_script(struct notification *n) >> + printf("\tformatted: '%s'\n", STR_NN(n->msg)); >> +@@ -143,8 +143,8 @@ void notification_run_script(struct notification *n) >> // Set environment variables >> gchar *n_id_str = g_strdup_printf("%i", >> n->id); >> gchar *n_progress_str = >> g_strdup_printf("%i", n->progress); >> @@ -21,21 +25,24 @@ Index: src/notification.c >> safe_setenv("DUNST_APP_NAME", appname); >> safe_setenv("DUNST_SUMMARY", summary); >> safe_setenv("DUNST_BODY", body); >> -@@ -684,14 +684,14 @@ void notification_update_text_to_render(struct notific >> +@@ -705,14 +705,15 @@ void notification_update_text_to_render(struct notific >> char *new_buf; >> if (hours > 0) { >> new_buf = >> - g_strdup_printf("%s (%ldh %ldm %lds old)", >> buf, hours, >> -+ g_strdup_printf("%s (%lldh %lldm %llds old)", >> buf, hours, >> - minutes, seconds); >> +- minutes, seconds); >> ++ g_strdup_printf("%s (%lldh %lldm %llds old)", >> buf, >> ++ (long long)hours, (long >> long)minutes, >> ++ (long long)seconds); >> } else if (minutes > 0) { >> new_buf = >> - g_strdup_printf("%s (%ldm %lds old)", buf, >> minutes, >> -+ g_strdup_printf("%s (%lldm %llds old)", buf, >> minutes, >> - seconds); >> +- seconds); >> ++ g_strdup_printf("%s (%lldm %llds old)", buf, >> (long long)minutes, >> ++ (long long)seconds); >> } else { >> - new_buf = g_strdup_printf("%s (%lds old)", buf, >> seconds); >> -+ new_buf = g_strdup_printf("%s (%llds old)", buf, >> seconds); >> ++ new_buf = g_strdup_printf("%s (%llds old)", buf, >> (long long)seconds); >> } >> >> g_free(buf); >> blob - e7f4abb95bfa619ce7cb19344f2dee16446b0e7a >> file + /dev/null >> --- x11/dunst/patches/patch-src_settings_h >> +++ /dev/null >> @@ -1,12 +0,0 @@ >> -Index: src/settings.h >> ---- src/settings.h.orig >> -+++ src/settings.h >> -@@ -13,6 +13,8 @@ >> - >> - #define LIST_END (-1) >> - >> -+enum mouse_button { BTN_LEFT=1, BTN_RIGHT, BTN_MIDDLE, BTN_TOUCH }; >> -+ >> - enum alignment { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT }; >> - enum vertical_alignment { VERTICAL_TOP, VERTICAL_CENTER, VERTICAL_BOTTOM }; >> - enum separator_color { SEP_FOREGROUND, SEP_AUTO, SEP_FRAME, SEP_CUSTOM }; >> blob - /dev/null >> file + x11/dunst/patches/patch-src_utils_c (mode 644) >> --- /dev/null >> +++ x11/dunst/patches/patch-src_utils_c >> @@ -0,0 +1,40 @@ >> +Index: src/utils.c >> +--- src/utils.c.orig >> ++++ src/utils.c >> +@@ -13,7 +13,11 @@ >> + #include <sys/stat.h> >> + #include <time.h> >> + #include <unistd.h> >> ++#ifndef __OpenBSD__ >> + #include <wordexp.h> >> ++#else >> ++#include <glob.h> >> ++#endif >> + >> + #include "log.h" >> + #include "settings_data.h" >> +@@ -181,7 +185,7 @@ int string_array_length(char **s) >> + char *string_to_path(char *string) >> + { >> + ASSERT_OR_RET(string, string); >> +- >> ++#ifndef __OpenBSD__ >> + wordexp_t we; >> + switch (wordexp(string, &we, WRDE_NOCMD | WRDE_UNDEF)) { >> + case 0: >> +@@ -208,6 +212,15 @@ char *string_to_path(char *string) >> + wordfree(&we); >> + >> + return res; >> ++#else >> ++ glob_t p; >> ++ if (glob(string, GLOB_TILDE, NULL, &p) == 0) { >> ++ char *str = g_strjoinv(" ", p.gl_pathv); >> ++ globfree(&p); >> ++ return str; >> ++ } >> ++ return string; >> ++#endif >> + } >> + >> + /* see utils.h */ >> blob - 7fd20d0e4edf51b71a83f9dc5f95a0ced5d4c98e >> file + /dev/null >> --- x11/dunst/patches/patch-src_x11_x_c >> +++ /dev/null >> @@ -1,13 +0,0 @@ >> -Index: src/x11/x.c >> ---- src/x11/x.c.orig >> -+++ src/x11/x.c >> -@@ -19,7 +19,9 @@ >> - #include <X11/Xlib.h> >> - #include <X11/Xresource.h> >> - #include <X11/Xutil.h> >> -+#ifdef __linux__ >> - #include <linux/input-event-codes.h> >> -+#endif >> - >> - #include "../dbus.h" >> - #include "../draw.h" >> blob - 118752ce99490e2ccca2614ef2e5e184afb0c909 >> file + x11/dunst/pkg/PLIST >> --- x11/dunst/pkg/PLIST >> +++ x11/dunst/pkg/PLIST >> @@ -8,6 +8,19 @@ share/dunst/ >> @sample ${SYSCONFDIR}/dunst/ >> share/dunst/dunstrc >> @sample ${SYSCONFDIR}/dunst/dunstrc >> +share/examples/bash-completion/ >> +share/examples/bash-completion/completions/ >> +share/examples/bash-completion/completions/dunst >> +share/examples/bash-completion/completions/dunstctl >> share/examples/dbus-1/ >> share/examples/dbus-1/services/ >> share/examples/dbus-1/services/org.knopwob.dunst.service >> +share/examples/fish/ >> +share/examples/fish/vendor_completions.d/ >> +share/examples/fish/vendor_completions.d/dunst >> +share/examples/fish/vendor_completions.d/dunstctl >> +share/examples/fish/vendor_completions.d/dunstify >> +share/examples/zsh/ >> +share/examples/zsh/site-functions/ >> +share/examples/zsh/site-functions/_dunst >> +share/examples/zsh/site-functions/_dunstctl > >
Hi, Stuart! You are right about the use of wordexp. In fact, the proposed patch is actually just a rollback to the old string_to_path function that dunst used in its 1.9.2 version (current port version) and that works fine for our case (we can't use things like $HOME in the config or it gives an error reading the path for scripts). For now, if we want to do the bump version, the rollback is a "good option", until we do a code equivalent to the current wordexp using glob. In any case, the best way to solve this is to make a PR that allows us to correct this situation so that it doesn't hinder the portability of dunst in OpenBSD for future versions. I will get to work on it and if it is accepted, it is likely that the next version will not need this dirty hack to compile and work. -- "Dios en su Cielo, todo bien en la Tierra" ***********************************************