I installed this minor change to port genfile.c to Solaris 8.
2005-06-21 Paul Eggert <[EMAIL PROTECTED]>
* tests/genfile.c: Port to Solaris 8.
Include <signal.h>, for 'signal'.
(SIGCHLD) [! defined SIGCHLD && defined SIGCLD]: Define.
(child_exited, sig_child): Remove; not needed.
(exec_command): Use a prototype.
(main): Set SIGCHLD handler to default, not to sig_child.
And do this only if SIGCHLD is defined. This uses the
same pattern that src/tar.c uses.
--- genfile.c.~1.7.~ 2005-05-14 23:34:49 -0700
+++ genfile.c 2005-06-21 10:36:53 -0700
@@ -23,6 +23,7 @@
*/
#include <system.h>
+#include <signal.h>
#include <stdarg.h>
#include <argmatch.h>
#include <argp.h>
@@ -35,6 +36,10 @@
# define EXIT_FAILURE 1
#endif
+#if ! defined SIGCHLD && defined SIGCLD
+# define SIGCHLD SIGCLD
+#endif
+
#if HAVE_UTIME_H
# include <utime.h>
#else
@@ -575,18 +580,10 @@ process_checkpoint (size_t n)
}
}
-static int child_exited = 0;
-
-RETSIGTYPE
-sig_child (int sig)
-{
- child_exited = 1;
-}
-
#define CHECKPOINT_TEXT "Write checkpoint"
void
-exec_command ()
+exec_command (void)
{
int i, status;
pid_t pid;
@@ -603,7 +600,10 @@ exec_command ()
memmove (exec_argv+2, exec_argv+1, (exec_argc-1)*sizeof (*exec_argv));
exec_argv[1] = "--checkpoint";
- signal (SIGCHLD, sig_child);
+#ifdef SIGCHLD
+ /* System V fork+wait does not work if SIGCHLD is ignored. */
+ signal (SIGCHLD, SIG_DFL);
+#endif
pipe (fd);
_______________________________________________
Bug-tar mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-tar