ftp.nice.ch/pub/next/unix/mail/zend.1.0.s.tar.gz#/zend-1.0/include/p-wait.h

This is p-wait.h in view mode; [Download] [Up]

/*+++*
 *  RCS		$Id: p-wait.h,v 1.2 1993/02/02 21:00:42 gerben Exp $
 *  title:	p-wait.h
 *  abstract:	portable Posix-compliant <sys/wait.h>.
 *  author:	T.R.Hageman, Groningen, The Netherlands
 *  created:	September 1992
 *  modified:	(see RCS Log at end)
 *  copyleft:
 *
 *		Copyright (C) 1992  Tom R. Hageman.
 *
 *	This is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *	(at your option) any later version.
 *
 *	This software is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with this software; if not, write to the Free Software
 *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *  description:
 *
 *	This is a Posix-compatible version of <sys/wait.h> for both Posix
 *	and non-Posix systems.
 *
 *	Notes:
 *	  o Some systems (BSD) use `union wait' instead of `int' for the
 *	    child's exit status returned by `wait'.  Use `WAIT_T' to disguise
 *	    this difference.
 *
 *	TODO:
 *	  support vfork() {{here??}}, wait2(), wait3(), wait4()
 *	BUGS:
 *	  usually there is no way to emulate waitpid() on non-Posix systems.
 *---*/

#ifndef _P_WAIT_H_
#define _P_WAIT_H_	0x101

#ifndef _PORTDEFS_H_ 
#   include "portdefs.h"
#endif

#if __STRICT_ANSI__
    #error "You shouldn't use this header in strict ANSI C code"
#endif

#if _I_SYS_WAIT
#   include <sys/wait.h>
#else
#   if _I_WAIT
#	include <wait.h>
#   endif
#endif

#ifndef _P_TYPES_H_
#   include "p-types.h"		/* for pid_t */
#endif

#ifndef HAVE_UNION_WAIT
#   if (!__POSIX__ && _I_SYS_WAIT)	/* assume BSD-style wait */
#	define HAVE_UNION_WAIT	1
#   endif
#endif

#if HAVE_UNION_WAIT
#   define WAIT_T	union wait
#else
#   define WAIT_T	int
#endif

#ifndef HAVE_WAIT3
#   if (WNOHANG && WUNTRACED)		/* educated guess... */
#	define HAVE_WAIT3   1
#   endif
#endif

#if !__STRICT_POSIX__
	/* {{Handle vfork??}} */
#endif

#if !(__POSIX__)

#   ifndef WNOHANG
#	define WNOHANG	1
#   endif
#   ifndef WUNTRACED
#	define WUNTRACED    (WNOHANG<<1)
#   endif

#   if HAVE_UNION_WAIT

#	ifndef WEXITSTATUS
#	    define WEXITSTATUS(w)	((w).w_retcode)
#	endif
#	ifndef WSTOPSIG
#	    ifdef WSTOPPED
#		define WSTOPSIG(w)	((w).w_stopsig)
#	    else
#		define WSTOPSIG(w)	(0)
#	    endif
#	endif
#	ifndef WTERMSIG
#	    define WTERMSIG(w)		((w).w_termsig)
#	endif
#	ifndef WIFEXITED
#	    define WIFEXITED(w)		(WTERMSIG(w)==0)
#	endif
#	ifndef WIFSTOPPED
#	    ifdef WSTOPPED
#		define WIFSTOPPED(w)	((w).w_stopval==WSTOPPED)
#	    else
#		define WIFSTOPPED(w)	(WTERMSIG(w)==0177)
#	    endif
#	endif
#	ifndef WIFSIGNALLED
#	    define WIFSIGNALLED(w)	(!WIFSTOPPED(w)&&!WIFEXITED(w))
#	endif

#   else /* !HAVE_UNION_WAIT */

#	ifndef WEXITSTATUS
#	    if __UNIX__			/* {{should we sign-extend?}} */
#		define WEXITSTATUS(w)	((short)(w)>>8)
#	    else
#		define WEXITSTATUS(w)	(w)
#	    endif
#	endif
#	ifndef WSTOPSIG
#	    define WSTOPSIG(w)		WEXITSTATUS(w)
#	endif
#	ifndef WTERMSIG
#	    if __UNIX__
#		define WTERMSIG(w)	((w)&0177)
#	    else
#		define WTERMSIG(w)	(0)
#	    endif
#	endif
#	ifndef WIFEXITED
#	    define WIFEXITED(w)		(WTERMSIG(w)==0)
#	endif
#	ifndef WIFSTOPPED
#	    define WIFSTOPPED(w)	(WTERMSIG(w)==0177)
#	endif
#	ifndef WIFSIGNALED
#	    define WIFSIGNALED(w)	((unsigned)(WTERMSIG(w)-1)<(0177-1))
#	endif

#   endif /* HAVE_UNION_WAIT */

#   if !__NO_PROTO__
extern pid_t	wait __(( WAIT_T *_(status) ));
#	ifndef waitpid
extern pid_t	waitpid __(( pid_t _(pid), WAIT_T *_(status), int _(flags) ));
#	endif
#   endif

#endif /* !__POSIX__ */

#endif /* _P_WAIT_H_ */

/*======================================================================*
 * $Log: p-wait.h,v $
 * Revision 1.2  1993/02/02  21:00:42  gerben
 * *** empty log message ***
 *
 * Revision 1.2  1993/02/02  15:40:06  tom
 * some changes to facilitate emulation of waitpid().
 *
 * Revision 1.1  1992/10/23  04:32:03  tom
 * add __STRICT_ANSI__ check.
 *
 * Revision 1.0  1992/10/20  16:52:19  tom
 * Initial revision
 *
 *======================================================================*/

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.