diff -crN ./libgnome/help-converters/gnome-vfs-module/Makefile.am /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/gnome-vfs-module/Makefile.am
*** ./libgnome/help-converters/gnome-vfs-module/Makefile.am	Fri Jul 12 14:44:06 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/gnome-vfs-module/Makefile.am	Mon Nov 18 17:06:15 2002
***************
*** 12,18 ****
  	help-method.c		help-method.h		
  
  libvfs_help_la_LDFLAGS = $(module_flags)
! libvfs_help_la_LIBADD = $(HELP_VFS_MODULE_LIBS)
  
  modulesconfdir=$(sysconfdir)/gnome-vfs-2.0/modules
  modulesconf_DATA = help-methods.conf
--- 12,18 ----
  	help-method.c		help-method.h		
  
  libvfs_help_la_LDFLAGS = $(module_flags)
! libvfs_help_la_LIBADD = ../../libgnome/libgnome-2.la $(HELP_VFS_MODULE_LIBS)
  
  modulesconfdir=$(sysconfdir)/gnome-vfs-2.0/modules
  modulesconf_DATA = help-methods.conf
diff -crN ./libgnome/help-converters/gnome-vfs-module/help-methods.conf /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/gnome-vfs-module/help-methods.conf
*** ./libgnome/help-converters/gnome-vfs-module/help-methods.conf	Fri Jan 11 23:18:25 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/gnome-vfs-module/help-methods.conf	Thu Aug 29 09:38:54 2002
***************
*** 1,5 ****
! help: libvfs-help.so
! ghelp: libvfs-help.so
! gnome-help: libvfs-help.so
! info: libvfs-translate.so -default-mime-type text/html -real-method pipe -pattern "gnome2-info2html %s"
! man: libvfs-translate.so -default-mime-type text/html -real-method pipe -pattern "gnome2-man2html %s"
--- 1,5 ----
! help: vfs-help
! ghelp: vfs-help
! gnome-help: vfs-help
! info: vfs-translate -default-mime-type text/html -real-method pipe -pattern "gnome2-info2html %s"
! man: vfs-translate -default-mime-type text/html -real-method pipe -pattern "gnome2-man2html %s"
diff -crN ./libgnome/help-converters/man/gnome-man2html.c /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/man/gnome-man2html.c
*** ./libgnome/help-converters/man/gnome-man2html.c	Fri Sep 27 08:08:42 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/help-converters/man/gnome-man2html.c	Mon Nov 18 17:08:40 2002
***************
*** 3696,3701 ****
--- 3696,3705 ----
  #define MAN_CAN_FIND_SOURCE
     const char *man_source_locator = "man -d %s | sed -n 's,^[ \t]*unformatted[ \t]*=[ \t]*,,p'";
     const char *man_source_locator_with_section = "man -d -s %c %s | sed -n 's,^[ \t]*unformatted[ \t]*=[ \t]*,,p'";
+ #else
+ #define MAN_CAN_FIND_SOURCE
+    const char *man_source_locator = "for p in `echo $MANPATH | sed 's/:/ /g'`; do find $p -name \"%s.*\" -print; done | sed '1!d'";
+    const char *man_source_locator_with_section = "for p in `echo $MANPATH | sed 's/:/ /g'`; do find $p/man%c -name \"%s.*\" -print; done | sed '1!d'";
  #endif
  
  	/* see if they gave us a basename for the URL references */
diff -crN ./libgnome/libgnome/gnome-exec.c /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/libgnome/gnome-exec.c
*** ./libgnome/libgnome/gnome-exec.c	Fri Sep 27 08:08:43 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/libgnome/gnome-exec.c	Tue Jan 28 10:03:29 2003
***************
*** 65,70 ****
--- 65,185 ----
    return n;
  }
  
+ static void exec_subprocess( int* comm_pipes,
+ 			     const char *dir, int argc, 
+ 			     char * const argv[], int envc, 
+ 			     char * const envv[], 
+ 			     gboolean close_fds)
+ {
+   pid_t subchild_pid;
+   int res;
+   int i;
+   int open_max;
+   int suberrno;
+   char **cpargv;
+ 
+   close(comm_pipes[0]);
+ 
+   subchild_pid = fork();
+ 
+   switch(subchild_pid) {
+   case -1:
+ 
+     /* failed to start child of child
+      * send errno to parent
+      */
+ 
+     suberrno = errno;
+ 
+     write(comm_pipes[1], &subchild_pid, sizeof(subchild_pid));
+     write(comm_pipes[1], &suberrno, sizeof(suberrno));
+ 
+     /* child exit */
+ 
+     _exit(0); break;      /* END PROCESS 1: child process dies */
+ 
+   case 0:                 /* START PROCESS 2: child of child */
+ 
+     /* pre-exec setup */
+ 
+     set_cloexec (comm_pipes[1]);
+ 
+     /* send subchild pid */
+ 
+     subchild_pid = getpid();
+ 
+     res = write(comm_pipes[1], &subchild_pid, sizeof(subchild_pid));
+ 
+     /* set additional environment */
+ 
+     if(envv) {
+       for(i = 0; i < envc; i++)
+ 	putenv(envv[i]);
+     }
+ 
+     /* set current dir */
+ 
+     if(dir) {
+       if(chdir(dir)) {
+ 	suberrno = errno;
+ 	write(comm_pipes[1], &suberrno, sizeof(suberrno));
+ 	_exit(-1);  
+       }
+     }
+ 
+     if(close_fds)
+     {
+       int stdinfd;
+ 
+       /* Close all file descriptors but stdin stdout and stderr */
+ 
+       open_max = sysconf (_SC_OPEN_MAX);
+ 
+       for (i = 3; i < open_max; i++)
+ 	set_cloexec (i);
+ 
+       if(comm_pipes[1] != 0) {
+ 	close(0);
+ 
+ 	/* Open stdin as being nothingness, so that if someone tries to
+ 	   read from this they don't hang up the whole GNOME session.
+            BUGFIX #1548 */
+ 
+ 	stdinfd = open("/dev/null", O_RDONLY);
+ 	g_assert(stdinfd >= 0);
+ 
+ 	if(stdinfd != 0) {
+ 	  dup2(stdinfd, 0);
+ 	  close(stdinfd);
+ 	}
+       }
+     }
+ 
+     setsid ();
+     signal (SIGPIPE, SIG_DFL);
+ 
+     /* doit */
+ 
+     cpargv = g_alloca((argc + 1) * sizeof(char *));
+     memcpy(cpargv, argv, argc * sizeof(char *));
+     cpargv[argc] = NULL;
+ 
+     execvp(cpargv[0], cpargv);
+ 
+     /* failed */
+ 
+     suberrno = errno;
+     write(comm_pipes[1], &suberrno, sizeof(suberrno));
+ 
+     _exit(1); break;      /* END PROCESS 2 : child of child */
+ 
+   default:
+       /* we don't need child process, it is here only to create subchild and die */
+       close(comm_pipes[1]);
+       _exit(0); /* END PROCESS 1: child process dies */
+   }
+ }
+ 
  /**
   * gnome_execute_async_with_env_fds:
   * @dir: Directory in which child should be executed, or %NULL for current
***************
*** 86,224 ****
  				  char * const envv[], 
  				  gboolean close_fds)
  {
!   int parent_comm_pipes[2], child_comm_pipes[2];
!   int child_errno, itmp, i, open_max;
    gssize res;
!   char **cpargv;
!   pid_t child_pid, immediate_child_pid; /* XXX this routine assumes
! 					   pid_t is signed */
  
!   if(pipe(parent_comm_pipes))
      return -1;
  
!   child_pid = immediate_child_pid = fork();
  
    switch(child_pid) {
    case -1:
!     close(parent_comm_pipes[0]);
!     close(parent_comm_pipes[1]);
      return -1;
  
    case 0: /* START PROCESS 1: child */
-     child_pid = -1;
-     res = pipe(child_comm_pipes);
-     close(parent_comm_pipes[0]);
-     if(!res)
-       child_pid = fork();
- 
-     switch(child_pid) {
-     case -1:
-       itmp = errno;
-       child_pid = -1; /* simplify parent code */
-       write(parent_comm_pipes[1], &child_pid, sizeof(child_pid));
-       write(parent_comm_pipes[1], &itmp, sizeof(itmp));
-       close(child_comm_pipes[0]);
-       close(child_comm_pipes[1]);
-       _exit(0); break;      /* END PROCESS 1: monkey in the middle dies */
- 
-     default:
-       {
- 	char buf[16];
- 	
- 	close(child_comm_pipes[1]);
- 	while((res = safe_read(child_comm_pipes[0], buf, sizeof(buf))) > 0)
- 	  write(parent_comm_pipes[1], buf, res);
- 	close(child_comm_pipes[0]);
- 	_exit(0); /* END PROCESS 1: monkey in the middle dies */
-       }
-       break;
  
!     case 0:                 /* START PROCESS 2: child of child */
!       close(parent_comm_pipes[1]);
!       /* pre-exec setup */
!       close (child_comm_pipes[0]);
!       set_cloexec (child_comm_pipes[1]);
!       child_pid = getpid();
!       res = write(child_comm_pipes[1], &child_pid, sizeof(child_pid));
! 
!       if(envv) {
! 	for(itmp = 0; itmp < envc; itmp++)
! 	  putenv(envv[itmp]);
!       }
  
!       if(dir) {
!         if(chdir(dir))
!           _exit(-1);  
!       }
!       
!       cpargv = g_alloca((argc + 1) * sizeof(char *));
!       memcpy(cpargv, argv, argc * sizeof(char *));
!       cpargv[argc] = NULL;
! 
!       if(close_fds)
! 	{
! 	  int stdinfd;
! 	  /* Close all file descriptors but stdin stdout and stderr */
! 	  open_max = sysconf (_SC_OPEN_MAX);
! 	  for (i = 3; i < open_max; i++)
! 	    set_cloexec (i);
! 
! 	  if(child_comm_pipes[1] != 0) {
! 	    close(0);
! 	    /* Open stdin as being nothingness, so that if someone tries to
! 	       read from this they don't hang up the whole GNOME session. BUGFIX #1548 */
! 	    stdinfd = open("/dev/null", O_RDONLY);
! 	    g_assert(stdinfd >= 0);
! 	    if(stdinfd != 0)
! 	      {
! 		dup2(stdinfd, 0);
! 		close(stdinfd);
! 	      }
! 	  }
! 	}
!       setsid ();
!       signal (SIGPIPE, SIG_DFL);
!       /* doit */
!       execvp(cpargv[0], cpargv);
! 
!       /* failed */
!       itmp = errno;
!       write(child_comm_pipes[1], &itmp, sizeof(itmp));
!       _exit(1); break;      /* END PROCESS 2 */
!     }
!     break;
  
!   default: /* parent process */
!     /* do nothing */
!     break;
    }
  
!   close(parent_comm_pipes[1]);
  
!   res = safe_read (parent_comm_pipes[0], &child_pid, sizeof(child_pid));
!   if (res != sizeof(child_pid))
!     {
!       g_message("res is %ld instead of %d",
! 		(long)res, (int)sizeof(child_pid));
!       child_pid = -1; /* really weird things happened */
!     }
!   else if (safe_read (parent_comm_pipes[0], &child_errno, sizeof(child_errno))
! 	  == sizeof(child_errno))
!     {
!       errno = child_errno;
!       child_pid = -1;
!     }
  
!   /* do this after the read's in case some OS's handle blocking on pipe writes
!      differently */
!   waitpid(immediate_child_pid, &itmp, 0); /* eat zombies */
  
!   close(parent_comm_pipes[0]);
  
!   if(child_pid < 0)
!     g_message("gnome_execute_async_with_env_fds: returning %d", child_pid);
  
!   return child_pid;
  }
  
  /**
--- 201,270 ----
  				  char * const envv[], 
  				  gboolean close_fds)
  {
!   int comm_pipes[2];
!   int subchild_errno, itmp;
    gssize res;
!   pid_t child_pid, subchild_pid; /* XXX this routine assumes pid_t is signed */
  
!   if(pipe(comm_pipes))
      return -1;
  
!   child_pid = fork();
  
    switch(child_pid) {
    case -1:
!     close(comm_pipes[0]);
!     close(comm_pipes[1]);
      return -1;
  
    case 0: /* START PROCESS 1: child */
  
!     /* creating a child of a child allows to avoid creation of defunct process
!      * if we don't wait it with waitpid()
!      */
  
!     exec_subprocess(comm_pipes, dir, argc, argv, envc, envv, close_fds);
  
!     /* never come there */
! 
!     return -1;
    }
  
!   /* parent process */
  
!   close(comm_pipes[1]);
! 
!   /* read PID of subchild */
! 
!   res = safe_read (comm_pipes[0], &subchild_pid, sizeof(subchild_pid));
!   if (res != sizeof(subchild_pid)) {
! 
!     g_message("res is %ld instead of %d", (long)res, (int)sizeof(subchild_pid));
! 
!     goto exit;
!   }
! 
!   /* read errno  of subchild if needed */
! 
!   if (safe_read (comm_pipes[0], &subchild_errno, sizeof(subchild_errno))
! 	  == sizeof(subchild_errno)) {
! 
!     errno = subchild_errno;
! 
!     goto exit;
!   }
! 
! exit:
  
!   /* we know that child exits immediatly after creating subchild
!    * we can wait it to avoid defunct process
!    */
  
!   waitpid(child_pid, &itmp, 0);
  
!   close(comm_pipes[0]);
  
!   return subchild_pid;
  }
  
  /**
diff -crN ./libgnome/libgnome/gnome-program.c /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/libgnome/gnome-program.c
*** ./libgnome/libgnome/gnome-program.c	Fri Jul 12 14:44:12 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/libgnome/gnome-program.c	Mon Feb 24 18:11:53 2003
***************
*** 1,4 ****
- 
  /*
   * Copyright (C) 1999, 2000 Red Hat, Inc.
   *               2001 SuSE Linux AG.
--- 1,3 ----
***************
*** 210,216 ****
      default: {
  	    GObjectSetPropertyFunc set_func;
  
! 	    set_func = g_param_spec_get_qdata (pspec, quark_set_prop);
  	    if (set_func)
  		set_func (object, param_id, value, pspec);
  	    else
--- 209,215 ----
      default: {
  	    GObjectSetPropertyFunc set_func;
  
! 	    set_func = (GObjectSetPropertyFunc)g_param_spec_get_qdata (pspec, quark_set_prop);
  	    if (set_func)
  		set_func (object, param_id, value, pspec);
  	    else
***************
*** 287,293 ****
      default: {
  	    GObjectSetPropertyFunc get_func;
  
! 	    get_func = g_param_spec_get_qdata (pspec, quark_get_prop);
  	    if (get_func)
  		get_func (object, param_id, value, pspec);
  	    else
--- 286,292 ----
      default: {
  	    GObjectSetPropertyFunc get_func;
  
! 	    get_func = (GObjectSetPropertyFunc)g_param_spec_get_qdata (pspec, quark_get_prop);
  	    if (get_func)
  		get_func (object, param_id, value, pspec);
  	    else
***************
*** 343,349 ****
      GnomeModuleInfo *new_item;
      int i;
  
!     g_assert (new_item_idx >= 0);
  
      new_item = g_ptr_array_index (program_modules, new_item_idx);
      if(!new_item)
--- 342,348 ----
      GnomeModuleInfo *new_item;
      int i;
  
!     g_assert ((int)new_item_idx >= 0);
  
      new_item = g_ptr_array_index (program_modules, new_item_idx);
      if(!new_item)
diff -crN ./libgnome/monikers/GNOME_Moniker_std.server.in.in /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/monikers/GNOME_Moniker_std.server.in.in
*** ./libgnome/monikers/GNOME_Moniker_std.server.in.in	Sun Jan 13 02:01:38 2002
--- /gestconf/project/GNOME_ACL/GNOME/build/sh_build_GNOME/src/./libgnome/monikers/GNOME_Moniker_std.server.in.in	Thu Aug 29 10:01:24 2002
***************
*** 1,7 ****
  <oaf_info>
  
  <oaf_server iid="OAFIID:GNOME_Moniker_std_Factory"
!         type="shlib" location="@MONIKER_LIBDIR@/libmoniker_extra_2.so">
          <oaf_attribute name="repo_ids" type="stringv">
                  <item value="IDL:Bonobo/GenericFactory:1.0"/>
          </oaf_attribute>
--- 1,7 ----
  <oaf_info>
  
  <oaf_server iid="OAFIID:GNOME_Moniker_std_Factory"
!         type="shlib" location="@MONIKER_LIBDIR@/libmoniker_extra_2">
          <oaf_attribute name="repo_ids" type="stringv">
                  <item value="IDL:Bonobo/GenericFactory:1.0"/>
          </oaf_attribute>
