All pastes #738723 Raw Edit

Unbenannt

public text v1 · immutable
·published 2007-10-16 15:57 UTC
rendered paste body
diff --git a/src/screen.c b/src/screen.c
index 41f031e..1051a08 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3282,8 +3283,37 @@ runCommand (CompScreen *s,
 
     if (fork () == 0)
     {
+	/* build a display string that uses the right screen number */
+	int  stringLen;
+	char *delimiter, *screenString;
+	
 	setsid ();
-	putenv (s->display->displayString);
+
+	/* 5 extra chars should be enough for pretty much every situation */
+	stringLen    = strlen (s->display->displayString) + 5;
+	screenString = malloc (sizeof (char) * stringLen);
+
+	if (screenString)
+	{
+	    delimiter = strrchr (s->display->displayString, ':');
+	    if (delimiter)
+	    {
+		delimiter = strchr (delimiter, '.');
+		if (delimiter)
+		    *p = '\0';
+	    }
+
+	    snprintf (screenString, stringLen, "%s.%d",
+		      s->display->displayString, s->screenNum);
+
+	    putenv (screenString);
+	    free (screenString);
+	}
+	else
+	{
+	    putenv (s->display->displayString);
+	}
+
 	execl ("/bin/sh", "/bin/sh", "-c", command, NULL);
 	exit (0);
     }