Hello,

I would like to propose the attached patch to fix the problem described in 
message 996.

This patch has been created against fvwm-snap-20030313.


Kind regards

Carsten

-- 
Carsten Prescher
EADS Deutschland GmbH
NGO22
Bontekai 55
26382 Wilhelmshaven

Tel.: +49-4421-1543-284
Fax: +49-4421-1543-560
[EMAIL PROTECTED]

diff -ur modules/ChangeLog modules.patch/ChangeLog
--- modules/ChangeLog   2003-03-12 13:30:02.000000000 +0100
+++ modules.patch/ChangeLog     2003-03-17 14:51:55.000000000 +0100
@@ -1,3 +1,8 @@
+2003-03-17  Carsten Prescher (EADS)  <[EMAIL PROTECTED]>
+
+       * FvwmCommand/FvwmCommand.c (main): FvwmCommand adds now missing
+       screen numbers of the display to the display string.
+
 2003-03-12  Dominik Vogt  <[EMAIL PROTECTED]>
 
        * FvwmButtons/parse.c (ParseButton):
diff -ur modules/FvwmCommand/FvwmCommand.c 
modules.patch/FvwmCommand/FvwmCommand.c
--- modules/FvwmCommand/FvwmCommand.c   2002-12-08 14:03:51.000000000 +0100
+++ modules.patch/FvwmCommand/FvwmCommand.c     2003-03-14 12:27:15.000000000 
+0100
@@ -202,6 +202,11 @@
   if( f_stem == NULL )
   {
     char *dpy_name;
+    char *dpy_name_local; /* strtok() modifies the string. */
+    char *dpy_hostname;
+    char *dpy_display_no;
+    char *dpy_screen_no;
+    
 
     /* default name */
     dpy_name = getenv("DISPLAY");
@@ -209,6 +214,41 @@
       dpy_name = ":0";
     if (strncmp(dpy_name, "unix:", 5) == 0)
       dpy_name += 4;
+
+    /* parse display string */
+    dpy_name_local = safestrdup (dpy_name);
+    if (dpy_name_local[0] == ':')
+    {    
+      dpy_hostname = 0;
+      dpy_display_no = strtok (dpy_name_local, ":.");
+    }
+    else
+    {
+      dpy_hostname   = strtok (dpy_name_local, ":");
+      dpy_display_no = strtok (0, ".");
+    }
+    dpy_screen_no  = strtok (0, "");
+  
+    // Reassemble display string.
+    dpy_name = safemalloc (3 +
+                           (dpy_hostname ? strlen (dpy_hostname) : 0) +
+                           (dpy_display_no ? strlen (dpy_display_no) : 1) +
+                           (dpy_screen_no ? strlen (dpy_screen_no) : 1));
+    dpy_name[0] = 0;
+    if (dpy_hostname)
+      strcat (dpy_name, dpy_hostname);
+    strcat (dpy_name, ":");
+    if (dpy_display_no)
+      strcat (dpy_name, dpy_display_no);
+    else
+      strcat (dpy_name, "0");
+    strcat (dpy_name, ".");
+    if (dpy_screen_no)
+      strcat (dpy_name, dpy_screen_no);
+    else
+      strcat (dpy_name, "0");
+    free (dpy_name_local);
+
     f_stem = safemalloc(11 + strlen(F_NAME) + MAXHOSTNAME + strlen(dpy_name));
 
     if ((stat("/var/tmp", &stat_buf) == 0) && (stat_buf.st_mode & S_IFDIR))

Reply via email to