diff --git a/x11-wm/fvwm3/Makefile b/x11-wm/fvwm3/Makefile index 34a1922f6977..accd089a2535 100644 --- a/x11-wm/fvwm3/Makefile +++ b/x11-wm/fvwm3/Makefile @@ -1,89 +1,90 @@ PORTNAME= fvwm3 DISTVERSION= 1.0.7 +PORTREVISION= 1 CATEGORIES= x11-wm MASTER_SITES= https://github.com/fvwmorg/fvwm3/releases/download/${DISTVERSION}/ \ http://fvwm.sourceforge.net/generated/icon_download/:icons MAINTAINER= zirias@FreeBSD.org COMMENT= F? Virtual Window Manager WWW= https://www.fvwm.org/ LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING LIB_DEPENDS= libevent.so:devel/libevent \ libfreetype.so:print/freetype2 \ libfontconfig.so:x11-fonts/fontconfig USES= compiler:c11 cpe pkgconfig python readline xorg CPE_VENDOR= fvwm CPE_PRODUCT= fvwm USE_XORG= ice sm x11 xext xft xrandr xrender xt GNU_CONFIGURE= yes CONFIGURE_ARGS= ac_cv_path_PYTHON=${PYTHON_CMD} CONFLICTS_INSTALL= fvwm PLIST_SUB= DISTVERSION=${DISTVERSION} OPTIONS_DEFINE= FRIBIDI GO ICONS ICONV MANPAGES NLS PERL PNG SVG \ XCURSOR XPM OPTIONS_DEFAULT= FRIBIDI GO ICONV MANPAGES PERL PNG XCURSOR OPTIONS_SUB= yes GO_DESC= Build and install modules written in Go FRIBIDI_LIB_DEPENDS= libfribidi.so:converters/fribidi FRIBIDI_CONFIGURE_ENABLE= bidi GO_USES= go:no_targets GO_CONFIGURE_ENABLE= golang FVWM_ICONS= fvwm_icons-20070101 ICONS_IMPLIES= XPM ICONS_DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${FVWM_ICONS}.tar.bz2:icons ICONV_USES= iconv:translit ICONV_CONFIGURE_ENABLE= iconv MANPAGES_IMPLIES= PERL MANPAGES_BUILD_DEPENDS= rubygem-asciidoctor>0:textproc/rubygem-asciidoctor MANPAGES_USES= gmake MANPAGES_CONFIGURE_ENABLE= mandoc NLS_USES= gettext-runtime NLS_CONFIGURE_ENABLE= nls PERL_USES= perl5 PERL_CONFIGURE_ENABLE= perllib PNG_LIB_DEPENDS= libpng.so:graphics/png PNG_CONFIGURE_ENABLE= png SVG_USES= gnome SVG_USE= gnome=cairo,glib20,gdkpixbuf2,librsvg2 SVG_CONFIGURE_ENABLE= rsvg XCURSOR_USE= xorg=xcursor XCURSOR_CONFIGURE_ENABLE= xcursor XPM_USE= xorg=xpm XPM_CONFIGURE_OFF= --with-xpm-library=no post-patch: @${REINPLACE_CMD} -e 's,/etc/,${LOCALBASE}/etc/,g' \ ${WRKSRC}/bin/fvwm-menu-desktop.in post-install-ICONS-on: ${MKDIR} ${STAGEDIR}${PREFIX}/share/fvwm3/pixmaps ${INSTALL_DATA} ${WRKDIR}/${FVWM_ICONS}/*.xpm \ ${STAGEDIR}${PREFIX}/share/fvwm3/pixmaps post-install-PERL-off: .for script in fvwm-convert-2.6 fvwm-menu-directory fvwm-menu-xlock fvwm-perllib ${RM} ${STAGEDIR}${PREFIX}/bin/${script} .endfor .for script in FvwmConsoleC.pl FvwmPerl ${RM} ${STAGEDIR}${PREFIX}/libexec/fvwm3/${DISTVERSION}/${script} .endfor .include diff --git a/x11-wm/fvwm3/files/patch-fvwm_ewmh__names.c b/x11-wm/fvwm3/files/patch-fvwm_ewmh__names.c new file mode 100644 index 000000000000..8d80396b058e --- /dev/null +++ b/x11-wm/fvwm3/files/patch-fvwm_ewmh__names.c @@ -0,0 +1,132 @@ +Revert b7ae07c34bb9172b8aba964023c2febc178f7f97, see +https://github.com/fvwmorg/fvwm3/issues/873 + +--- fvwm/ewmh_names.c.orig 2023-07-06 21:03:44 UTC ++++ fvwm/ewmh_names.c +@@ -125,14 +125,15 @@ int EWMH_WMIconName( + { + int size = 0; + char *val; +- char *text; ++ char *tmp_str; ++ FlocaleCharset *fc = NULL; + + if (!FiconvSupport) + { + return 0; + } + +- text = val = ewmh_AtomGetByName( ++ val = ewmh_AtomGetByName( + FW_W(fw), "_NET_WM_ICON_NAME", + EWMH_ATOM_LIST_PROPERTY_NOTIFY, &size); + +@@ -141,25 +142,28 @@ int EWMH_WMIconName( + SET_HAS_EWMH_WM_ICON_NAME(fw,0); + return 0; + } +- if (IS_ICON_FONT_LOADED(fw) && fw->icon_font != NULL && fw->icon_font->fftf.fftfont[0] == NULL) ++ if (IS_ICON_FONT_LOADED(fw) && fw->icon_font != NULL) + { +- text = FiconvUtf8ToCharset(dpy, fw->icon_font->str_fc, val, size); +- free(val); ++ fc = fw->icon_font->str_fc; + } +- if (text == NULL) ++ ++ tmp_str = (char *)FiconvUtf8ToCharset( ++ dpy, fc, (const char *) val, size); ++ free(val); ++ if (tmp_str == NULL) + { + SET_HAS_EWMH_WM_ICON_NAME(fw, 0); + return 0; + } +- if (strlen(text) > MAX_ICON_NAME_LEN) ++ if (strlen(tmp_str) > MAX_ICON_NAME_LEN) + { +- text[MAX_ICON_NAME_LEN] = 0; ++ tmp_str[MAX_ICON_NAME_LEN] = 0; + } + SET_HAS_EWMH_WM_ICON_NAME(fw, 1); +- if (fw->icon_name.name && strcmp(text, fw->icon_name.name) == 0) ++ if (fw->icon_name.name && strcmp(tmp_str, fw->icon_name.name) == 0) + { + /* migo: some apps update their names every second */ +- free(text); ++ free(tmp_str); + return 0; + } + +@@ -169,7 +173,7 @@ int EWMH_WMIconName( + free_window_names(fw, False, True); + } + +- fw->icon_name.name = text; ++ fw->icon_name.name = tmp_str; + + SET_WAS_ICON_NAME_PROVIDED(fw, 1); + +@@ -189,13 +193,14 @@ int EWMH_WMName( + { + int size = 0; + char *val; +- char *text; ++ char *tmp_str; ++ FlocaleCharset *fc = NULL; + int what_changed; + + if (!FiconvSupport) + return 0; + +- text = val = ewmh_AtomGetByName( ++ val = ewmh_AtomGetByName( + FW_W(fw), "_NET_WM_NAME", + EWMH_ATOM_LIST_PROPERTY_NOTIFY, &size); + +@@ -204,25 +209,28 @@ int EWMH_WMName( + SET_HAS_EWMH_WM_NAME(fw,0); + return 0; + } +- if (IS_WINDOW_FONT_LOADED(fw) && fw->title_font != NULL && fw->title_font->fftf.fftfont[0] == NULL) ++ if (IS_WINDOW_FONT_LOADED(fw) && fw->title_font != NULL) + { +- text = FiconvUtf8ToCharset(dpy, fw->title_font->str_fc, val, size); +- free(val); ++ fc = fw->title_font->str_fc; + } +- if (text == NULL) ++ ++ tmp_str = (char *)FiconvUtf8ToCharset( ++ dpy, fc, (const char *) val, size); ++ free(val); ++ if (tmp_str == NULL) + { + SET_HAS_EWMH_WM_NAME(fw,0); + return 0; + } +- if (strlen(text) > MAX_WINDOW_NAME_LEN) ++ if (strlen(tmp_str) > MAX_WINDOW_NAME_LEN) + { +- text[MAX_WINDOW_NAME_LEN] = 0; ++ tmp_str[MAX_WINDOW_NAME_LEN] = 0; + } + SET_HAS_EWMH_WM_NAME(fw, 1); +- if (fw->name.name && strcmp(text, fw->name.name) == 0) ++ if (fw->name.name && strcmp(tmp_str, fw->name.name) == 0) + { + /* migo: some apps update their names every second */ +- free(text); ++ free(tmp_str); + return 0; + } + +@@ -232,7 +240,7 @@ int EWMH_WMName( + free_window_names(fw, True, False); + } + +- fw->name.name = text; ++ fw->name.name = tmp_str; + + if (ev == NULL) + {