Subject: FVWM: PATCH: to fix fvwm-2.0.42 package: summarize patches

From: まつしたまこと <[email-masked]>
Date: Fri, 19 Apr 1996 02:09:56 +0900

Here is a fix collection for fvwm-2.0.42 to compile more plathomes or
to fix typos, already posted to the list (and my original fix). This
patch includes:

* Typo in a manual of fvwm/FvwmForm
* `make' command of BSD/OS 2.x considers 'C++FLAGS' as a flags of C++.
	It causes problem while compiling FvwmConfig.
* At least SunOS 4.x does not have strerror(). Use sys_errlist[].
* FvwmConfig misses LOCAL_LIBRARIES, to specify libraries.
* ugly modules/FvwmForm/FvwmForm.c fix
	Should include libs/fvwmlib.h.
	Avoid to include <malloc.h> under BSD/OS environment.
	Conflicts `CopyString()' function. Rename to `CopyNString()'.

Of course there are more and more patches for 2.0.42 posted to the list.
Let me summarize...

* Real-time window-moving handling for FvwmPager, etc
	by Henrique Martins <[email-masked]>
* Check $PATH while processing `Exec' built-in function (use execlp())
	by John Williams <[email-masked]>
* New built-in function `DestroyModuleConfig'
	by Toshi Isogai <[email-masked]>
* XSetInputFocus() problem in FvwmPager (is this fix ok?)
	by Nobutaka Suzuki <[email-masked]>

- -
Makoto `MAR_kun' MATSUSHITA
Special Thanks to Masayuki Koba of Hitachi Software.

--- Fvwm.tmpl.dist	Mon Apr  8 23:59:50 1996
+++ Fvwm.tmpl	Thu Apr 18 17:23:48 1996
@@ -390,6 +390,9 @@
 
 #ifndef FvwmCplusplusProgramTargetHelper
 #define	FvwmCplusplusProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\
+#if defined(i386BsdArchitecture) && defined(i386Bsdi)
+        C++FLAGS = $(CXXFLAGS)
+#endif
 ProgramTargetName(program): $(objs) $(deplib)				@@\
 	RemoveTargetProgram($@)						@@\
 	CplusplusLinkRule($@,$(CXXLDOPTIONS),$(objs),locallib $(LDLIBS) syslib) @@\
--- fvwm/builtins.c.dist	Thu Apr 11 02:38:25 1996
+++ fvwm/builtins.c	Thu Apr 18 16:11:55 1996
@@ -663,7 +663,15 @@
   {
     if (execl(exec_shell_name, exec_shell_name, "-c", cmd, NULL)==-1)
     {
+#if defined(sun) && !defined(SVR4)
+      /* XXX: dirty hack for SunOS 4.x */
+      extern char *sys_errlist[];
+
+      /* no strerror() function, see sys_errlist[] instead */
+      fvwm_msg(ERR,"exec_function","execl failed (%s)",sys_errlist[errno]);
+#else
       fvwm_msg(ERR,"exec_function","execl failed (%s)",strerror(errno));
+#endif
       exit(100);
     }
   }
--- fvwm/fvwm2.man.dist	Sat Apr 13 03:05:15 1996
+++ fvwm/fvwm2.man	Thu Apr 18 16:15:31 1996
@@ -621,7 +621,7 @@
 
 .IP "Exec \fIcommand\fP"
 Executes \fIcommand\fP.  Exec doesn't require an additional 'exec' or
-'&' in the command.
+\'&' in the command.
 
 The following example binds function key F1 in the root window, with
 no modifiers, to the exec function.  The program rxvt will be started
--- modules/FvwmConfig/Imakefile.dist	Sat Feb 17 13:47:42 1996
+++ modules/FvwmConfig/Imakefile	Thu Apr 18 17:04:23 1996
@@ -14,6 +14,8 @@
         WinText.o WinRadioButton.o WinInput.o WinSlider.o \
         WinColorSelector.o
 
+LOCAL_LIBRARIES = $(FVWM_LIBS) $(XLIB)
+
 #if ProjectX > 5
 FvwmComplexCplusplusProgramTarget(FvwmConfig)
 #else
--- modules/FvwmForm/FvwmForm.c.dist	Fri Feb 16 22:59:47 1996
+++ modules/FvwmForm/FvwmForm.c	Thu Apr 18 17:20:34 1996
@@ -6,6 +6,7 @@
  * given, provided that this copyright is kept intact.
  */
 #include "../../configure.h"
+#include "../../libs/fvwmlib.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -16,7 +17,9 @@
 #include <X11/cursorfont.h>
 #define XK_MISCELLANY
 #include <X11/keysymdef.h>
+#ifndef	__bsdi__
 #include <malloc.h>
+#endif
 #include <string.h>
 #include <sys/types.h>
 #include <sys/time.h>
@@ -181,7 +184,7 @@
 static int N = 8;
 
 /* copy a string until '\0', or up to n chars, and delete trailing spaces */
-char *CopyString (char *cp, int n)
+char *CopyNString (char *cp, int n)
 {
   char *dp, *bp;
   if (n == 0)
@@ -310,31 +313,31 @@
     else if (strncmp(cp, "Fore", 4) == 0) {
       cp += 4;
       while (isspace(*cp)) cp++;
-      color_names[c_fore] = CopyString(cp, 0);
+      color_names[c_fore] = CopyNString(cp, 0);
       fprintf(fp_err, "ColorFore: %s\n", color_names[c_fore]);
       continue;
     } else if (strncmp(cp, "Back", 4) == 0) {
       cp += 4;
       while (isspace(*cp)) cp++;
-      color_names[c_back] = CopyString(cp, 0);
+      color_names[c_back] = CopyNString(cp, 0);
       fprintf(fp_err, "ColorBack: %s\n", color_names[c_back]);
       continue;
     } else if (strncmp(cp, "ItemFore", 8) == 0) {
       cp += 8;
       while (isspace(*cp)) cp++;
-      color_names[c_itemfore] = CopyString(cp, 0);
+      color_names[c_itemfore] = CopyNString(cp, 0);
       fprintf(fp_err, "ColorItemFore: %s\n", color_names[c_itemfore]);
       continue;
     } else if (strncmp(cp, "ItemBack", 8) == 0) {
       cp += 8;
       while (isspace(*cp)) cp++;
-      color_names[c_itemback] = CopyString(cp, 0);
+      color_names[c_itemback] = CopyNString(cp, 0);
       fprintf(fp_err, "ColorItemBack: %s\n", color_names[c_itemback]);
       continue;
     } else if (strncmp(cp, "Font", 4) == 0) {
       cp += 4;
       while (isspace(*cp)) cp++;
-      font_names[f_text] = CopyString(cp, 0);
+      font_names[f_text] = CopyNString(cp, 0);
       fprintf(fp_err, "Font: %s\n", font_names[f_text]);
       xfs[f_text] = GetFontOrFixed(dpy, font_names[f_text]);
       fonts[f_text] = xfs[f_text]->fid;
@@ -342,7 +345,7 @@
     } else if (strncmp(cp, "ButtonFont", 10) == 0) {
       cp += 10;
       while (isspace(*cp)) cp++;
-      font_names[f_button] = CopyString(cp, 0);
+      font_names[f_button] = CopyNString(cp, 0);
       fprintf(fp_err, "ButtonFont: %s\n", font_names[f_button]);
       xfs[f_button] = GetFontOrFixed(dpy, font_names[f_button]);
       fonts[f_button] = xfs[f_button]->fid;
@@ -350,7 +353,7 @@
     } else if (strncmp(cp, "InputFont", 9) == 0) {
       cp += 9;
       while (isspace(*cp)) cp++;
-      font_names[f_input] = CopyString(cp, 0);
+      font_names[f_input] = CopyNString(cp, 0);
       fprintf(fp_err, "InputFont: %s\n", font_names[f_input]);
       xfs[f_input] = GetFontOrFixed(dpy, font_names[f_input]);
       fonts[f_input] = xfs[f_input]->fid;
@@ -510,7 +513,7 @@
       cp += 7;
       while (isspace(*cp)) cp++;
       cur_button->button.commands[cur_button->button.n++] =
-	CopyString(cp, 0);
+	CopyNString(cp, 0);
     }
   }  /* end of switch() */
   /* get the geometry right */
--- modules/FvwmForm/FvwmForm.man.dist	Wed Sep 27 03:14:57 1995
+++ modules/FvwmForm/FvwmForm.man	Thu Apr 18 16:06:08 1996
@@ -145,7 +145,7 @@
 .B \fImultiple\fP
 This is a multiple-choice selection.
 .TP 4
-.B *FvwmFormChoice \fIname\fP \fIvalue\fP on | off "\fIstring\fP"
+.B *FvwmFormChoice \fIname\fP \fIvalue\fP "on | off" "\fIstring\fP"
 Specifies a choice for a selection.
 The choice item has a \fIname\fP and a \fIvalue\fP.
 The \fIstring\fP will be displayed to the right of the choice button
--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to [email-masked].
To report problems, send mail to [email-masked].