Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Nov 2010 15:28:48 +0100 (CET)
From:      Emanuel Haupt <ehaupt@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/152015: [patch] sysutils/xfce4-genmon-plugin - fix with current xfce4 version
Message-ID:  <201011071428.oA7ESmW4094976@freefall.freebsd.org>
Resent-Message-ID: <201011071430.oA7EUH6v029090@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         152015
>Category:       ports
>Synopsis:       [patch] sysutils/xfce4-genmon-plugin - fix with current xfce4 version
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Nov 07 14:30:17 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Emanuel Haupt
>Release:        FreeBSD 8.1-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD freefall.freebsd.org 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #44 r209978: Tue Jul 13 08:42:03 UTC 2010 simon@freefall.freebsd.org:/usr/src/sys/i386/compile/FREEFALL i386


	
>Description:
The current version of sysutils/xfce4-genmon-plugin crashes immediately when the
initial configuration dialog is closed.

I extracted the relevant patches from the debian lenny package base. After
applying the patches sysutils/xfce4-genmon-plugin works again as expected.

>How-To-Repeat:
	
>Fix:

	

--- xfce4-genmon-plugin.patch begins here ---
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/sysutils/xfce4-genmon-plugin/Makefile,v
retrieving revision 1.30
diff -u -r1.30 Makefile
--- Makefile	31 May 2010 15:27:26 -0000	1.30
+++ Makefile	7 Nov 2010 10:35:59 -0000
@@ -7,9 +7,9 @@
 
 PORTNAME=	xfce4-genmon-plugin
 PORTVERSION=	3.2
-PORTREVISION=	9
+PORTREVISION=	10
 CATEGORIES=	sysutils xfce
-MASTER_SITES=	http://goodies.xfce.org/releases/${PORTNAME}/
+MASTER_SITES=	CRITICAL/xfce4
 DIST_SUBDIR=	xfce4
 
 MAINTAINER=	miwi@FreeBSD.org
Index: files/patch-panel-plugin__cmdspawn.c
===================================================================
RCS file: files/patch-panel-plugin__cmdspawn.c
diff -N files/patch-panel-plugin__cmdspawn.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-panel-plugin__cmdspawn.c	7 Nov 2010 10:35:59 -0000
@@ -0,0 +1,33 @@
+--- ./panel-plugin/cmdspawn.c.orig	2007-11-23 16:32:40.000000000 +0100
++++ ./panel-plugin/cmdspawn.c	2010-11-07 11:29:03.000000000 +0100
+@@ -184,6 +184,7 @@
+             return (-1);
+         case 0:
+             /* Redirect stdout/stderr to associated pipe's write-ends */
++            close(0); /* stdin is not used in child */
+             for (i = 0; i < OUT_ERR; i++) {
+                 j = i + 1; // stdout/stderr file descriptor
+                 close (j);
+@@ -199,6 +200,9 @@
+         exit (-1);
+     }
+ 
++    for (i = 0; i < OUT_ERR; i++)
++        close (aaiPipe[i][WR]); /* close write end of pipes in parent */
++
+     /* Wait for child completion */
+     if (wait == 1)
+     {
+@@ -231,10 +235,9 @@
+     }
+ 
+     End:
+-    /* Close created pipes */
++    /* Close read end of pipes */
+     for (i = 0; i < OUT_ERR; i++)
+-        for (j = 0; j < RD_WR; j++)
+-            close (aaiPipe[i][j]);
++        close (aaiPipe[i][RD]);
+ 
+     return (-fError);
+ }// Spawn()
Index: files/patch-panel-plugin__main.c
===================================================================
RCS file: files/patch-panel-plugin__main.c
diff -N files/patch-panel-plugin__main.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-panel-plugin__main.c	7 Nov 2010 10:35:59 -0000
@@ -0,0 +1,32 @@
+--- ./panel-plugin/main.c.orig	2008-03-15 23:38:18.000000000 +0100
++++ ./panel-plugin/main.c	2010-11-07 11:28:17.000000000 +0100
+@@ -32,6 +32,7 @@
+ 
+ #include <libxfce4util/libxfce4util.h>
+ #include <libxfcegui4/dialogs.h>
++#include <libxfcegui4/xfce-exec.h>
+ #include <libxfce4panel/xfce-panel-plugin.h>
+ #include <libxfce4panel/xfce-panel-convenience.h>
+ 
+@@ -94,10 +95,18 @@
+ {
+     struct genmon_t *poPlugin = (genmon_t *) p_pvPlugin;
+     struct monitor_t *poMonitor = &(poPlugin->oMonitor);
+-    char result[256];
++    GError *error = NULL;
++
++	xfce_exec(poMonitor->onClickCmd, 0, 0, &error);
++    if (error) {
++        char first[256];
++        g_snprintf (first, sizeof(first), _("Could not run \"%s\""), poMonitor->onClickCmd);
++        xfce_message_dialog (NULL, _("Xfce Panel"), 
++                             GTK_STOCK_DIALOG_ERROR, first, error->message,
++                             GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL);
++        g_error_free (error);
++    }
+ 
+-    genmon_SpawnCmd (poMonitor->onClickCmd, result,
+-        sizeof (poMonitor->onClickCmd), 0);
+ }
+ 
+ /**************************************************************/
--- xfce4-genmon-plugin.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011071428.oA7ESmW4094976>