?RCS: $Id: d_uwait.U 167 2013-05-08 17:58:00Z rmanfredi $ ?RCS: ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi ?RCS: ?RCS: You may redistribute only under the terms of the Artistic License, ?RCS: as specified in the README file that comes with the distribution. ?RCS: You may reuse parts of this distribution only within the terms of ?RCS: that same Artistic License; a copy of which may be found at the root ?RCS: of the source tree for dist 4.0. ?RCS: ?RCS: $Log: d_uwait.U,v $ ?RCS: Revision 3.0.1.1 1994/01/24 14:10:49 ram ?RCS: patch16: added knowledge about wait3() ?RCS: patch16: revised 'union wait' look-up algorithm ?RCS: patch16: fixed make dependency line accordingly ?RCS: ?RCS: Revision 3.0 1993/08/18 12:07:54 ram ?RCS: Baseline for dist 3.0 netwide release. ?RCS: ?MAKE:d_uwait d_uwait3: cat contains cppstdin cppminus +cppflags rm \ Setvar Findhdr ?MAKE: -pick add $@ %< ?S:d_uwait: ?S: This symbol conditionally defines UNION_WAIT which indicates to the C ?S: program that argument for the wait() system call should be declared as ?S: 'union wait status' instead of 'int status'. ?S:. ?S:d_uwait3: ?S: This symbol conditionally defines UNION_WAIT3 which indicates to the C ?S: program that the first argument for the wait3() system call should be ?S: declared as 'union wait status' instead of 'int status'. ?S:. ?C:UNION_WAIT: ?C: This symbol if defined indicates to the C program that the argument ?C: for the wait() system call should be declared as 'union wait status' ?C: instead of 'int status'. You probably need to include ?C: in the former case (see I_SYSWAIT). ?C:. ?C:UNION_WAIT3: ?C: This symbol if defined indicates to the C program that the first argument ?C: for the wait3() system call should be declared as 'union wait status' ?C: instead of 'int status'. You probably need to include ?C: in the former case (see I_SYSWAIT). It seems safe to assume that the ?C: same rule applies to the second parameter of wait4(). ?C:. ?H:#$d_uwait UNION_WAIT /**/ ?H:#$d_uwait3 UNION_WAIT3 /**/ ?H:. ?T:val2 flags f also ?LINT:set d_uwait d_uwait3 : see if union wait is available echo " " ?X: ?X: Unfortunately, we can't just grep for "union wait" because ?X: some weird systems (did I hear HP-UX?) define union wait only when _BSD ?X: is defined. The same thing happens on OSF/1, who is pushing weirdness to ?X: its limits by requiring wait() to use (int *) but wait3() to use ?X: (union wait *), unless _BSD is defined and -lbsd is used, in which case ?X: wait() also expects (union wait *). Aaargh!!--RAM ?X: set X $cppflags shift flags='' also='' for f in $*; do case "$f" in *NO_PROTO*) ;; *) flags="$flags $f";; esac done $cat `./findhdr sys/wait.h` /dev/null | \ $cppstdin $flags $cppminus >wait.out 2>/dev/null if $contains 'union.*wait.*{' wait.out >/dev/null 2>&1 ; then echo "Looks like your knows about 'union wait'..." >&4 val="$define" @if UNION_WAIT also='also ' if $contains 'extern.*wait[ ]*([ ]*int' wait.out >/dev/null 2>&1 then echo "But wait() seems to expect an 'int' pointer (POSIX way)." >&4 val="$undef" also='' elif $contains 'extern.*wait[ ]*([ ]*union' wait.out >/dev/null 2>&1 then echo "And indeed wait() expects an 'union wait' pointer (BSD way)." >&4 else echo "So we'll use that for wait()." >&4 fi @end @if UNION_WAIT3 || d_uwait3 val2="$define" @end @if UNION_WAIT3 if $contains 'extern.*wait3[ ]*([ ]*int' wait.out >/dev/null 2>&1 then echo "However wait3() seems to expect an 'int' pointer, weird." >&4 val2="$undef" elif $contains 'extern.*wait3[ ]*([ ]*union' wait.out >/dev/null 2>&1 then echo "And wait3() ${also}expects an 'union wait' pointer, fine." >&4 else echo "As expected, wait3() ${also}uses an 'union wait' pointer." >&4 fi @end else echo "No trace of 'union wait' in ..." >&4 val="$undef" @if UNION_WAIT && UNION_WAIT3 echo "Both wait() and wait3() will use a plain 'int' pointer then." >&4 @elsif UNION_WAIT echo "Your wait() should be happy with a plain 'int' pointer." >&4 @elsif UNION_WAIT3 echo "Your wait3() should be happy with a plain 'int' pointer." >&4 @end fi set d_uwait eval $setvar @if UNION_WAIT3 || d_uwait3 val="$val2"; set d_uwait3 eval $setvar @end $rm -f wait.out