Blame lib/sys_wait.in.h

Packit 33f14e
/* A POSIX-like <sys/wait.h>.
Packit 33f14e
   Copyright (C) 2001-2003, 2005-2017 Free Software Foundation, Inc.
Packit 33f14e
Packit 33f14e
   This program is free software; you can redistribute it and/or modify
Packit 33f14e
   it under the terms of the GNU General Public License as published by
Packit 33f14e
   the Free Software Foundation; either version 3, or (at your option)
Packit 33f14e
   any later version.
Packit 33f14e
Packit 33f14e
   This program is distributed in the hope that it will be useful,
Packit 33f14e
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 33f14e
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 33f14e
   GNU General Public License for more details.
Packit 33f14e
Packit 33f14e
   You should have received a copy of the GNU General Public License
Packit 33f14e
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit 33f14e
Packit 33f14e
Packit 33f14e
#ifndef _@GUARD_PREFIX@_SYS_WAIT_H
Packit 33f14e
Packit 33f14e
#if __GNUC__ >= 3
Packit 33f14e
@PRAGMA_SYSTEM_HEADER@
Packit 33f14e
#endif
Packit 33f14e
@PRAGMA_COLUMNS@
Packit 33f14e
Packit 33f14e
/* The include_next requires a split double-inclusion guard.  */
Packit 33f14e
#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
Packit 33f14e
# @INCLUDE_NEXT@ @NEXT_SYS_WAIT_H@
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
#ifndef _@GUARD_PREFIX@_SYS_WAIT_H
Packit 33f14e
#define _@GUARD_PREFIX@_SYS_WAIT_H
Packit 33f14e
Packit 33f14e
/* Get pid_t.  */
Packit 33f14e
#include <sys/types.h>
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 33f14e
Packit 33f14e
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 33f14e
Packit 33f14e
Packit 33f14e
#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
Packit 33f14e
/* Unix API.  */
Packit 33f14e
Packit 33f14e
/* The following macros apply to an argument x, that is a status of a process,
Packit 33f14e
   as returned by waitpid().
Packit 33f14e
   On nearly all systems, including Linux/x86, WEXITSTATUS are bits 15..8 and
Packit 33f14e
   WTERMSIG are bits 7..0, while BeOS uses the opposite.  Therefore programs
Packit 33f14e
   have to use the abstract macros.  */
Packit 33f14e
Packit 33f14e
/* For valid x, exactly one of WIFSIGNALED(x), WIFEXITED(x), WIFSTOPPED(x)
Packit 33f14e
   is true.  */
Packit 33f14e
# ifndef WIFSIGNALED
Packit 33f14e
#  define WIFSIGNALED(x) (WTERMSIG (x) != 0 && WTERMSIG(x) != 0x7f)
Packit 33f14e
# endif
Packit 33f14e
# ifndef WIFEXITED
Packit 33f14e
#  define WIFEXITED(x) (WTERMSIG (x) == 0)
Packit 33f14e
# endif
Packit 33f14e
# ifndef WIFSTOPPED
Packit 33f14e
#  define WIFSTOPPED(x) (WTERMSIG (x) == 0x7f)
Packit 33f14e
# endif
Packit 33f14e
Packit 33f14e
/* The termination signal. Only to be accessed if WIFSIGNALED(x) is true.  */
Packit 33f14e
# ifndef WTERMSIG
Packit 33f14e
#  define WTERMSIG(x) ((x) & 0x7f)
Packit 33f14e
# endif
Packit 33f14e
Packit 33f14e
/* The exit status. Only to be accessed if WIFEXITED(x) is true.  */
Packit 33f14e
# ifndef WEXITSTATUS
Packit 33f14e
#  define WEXITSTATUS(x) (((x) >> 8) & 0xff)
Packit 33f14e
# endif
Packit 33f14e
Packit 33f14e
/* The stopping signal. Only to be accessed if WIFSTOPPED(x) is true.  */
Packit 33f14e
# ifndef WSTOPSIG
Packit 33f14e
#  define WSTOPSIG(x) (((x) >> 8) & 0x7f)
Packit 33f14e
# endif
Packit 33f14e
Packit 33f14e
/* True if the process dumped core.  Not standardized by POSIX.  */
Packit 33f14e
# ifndef WCOREDUMP
Packit 33f14e
#  define WCOREDUMP(x) ((x) & 0x80)
Packit 33f14e
# endif
Packit 33f14e
Packit 33f14e
#else
Packit 33f14e
/* Native Windows API.  */
Packit 33f14e
Packit 33f14e
# include <signal.h> /* for SIGTERM */
Packit 33f14e
Packit 33f14e
/* The following macros apply to an argument x, that is a status of a process,
Packit 33f14e
   as returned by waitpid() or, equivalently, _cwait() or GetExitCodeProcess().
Packit 33f14e
   This value is simply an 'int', not composed of bit fields.  */
Packit 33f14e
Packit 33f14e
/* When an unhandled fatal signal terminates a process, the exit code is 3.  */
Packit 33f14e
# define WIFSIGNALED(x) ((x) == 3)
Packit 33f14e
# define WIFEXITED(x) ((x) != 3)
Packit 33f14e
# define WIFSTOPPED(x) 0
Packit 33f14e
Packit 33f14e
/* The signal that terminated a process is not known posthum.  */
Packit 33f14e
# define WTERMSIG(x) SIGTERM
Packit 33f14e
Packit 33f14e
# define WEXITSTATUS(x) (x)
Packit 33f14e
Packit 33f14e
/* There are no stopping signals.  */
Packit 33f14e
# define WSTOPSIG(x) 0
Packit 33f14e
Packit 33f14e
/* There are no core dumps.  */
Packit 33f14e
# define WCOREDUMP(x) 0
Packit 33f14e
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
/* Declarations of functions.  */
Packit 33f14e
Packit 33f14e
#if @GNULIB_WAITPID@
Packit 33f14e
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
Packit 33f14e
_GL_FUNCDECL_SYS (waitpid, pid_t, (pid_t pid, int *statusp, int options));
Packit 33f14e
# endif
Packit 33f14e
_GL_CXXALIAS_SYS (waitpid, pid_t, (pid_t pid, int *statusp, int options));
Packit 33f14e
_GL_CXXALIASWARN (waitpid);
Packit 33f14e
#elif defined GNULIB_POSIXCHECK
Packit 33f14e
# undef waitpid
Packit 33f14e
# if HAVE_RAW_DECL_WAITPID
Packit 33f14e
_GL_WARN_ON_USE (waitpid, "waitpid is unportable - "
Packit 33f14e
                 "use gnulib module sys_wait for portability");
Packit 33f14e
# endif
Packit 33f14e
#endif
Packit 33f14e
Packit 33f14e
Packit 33f14e
#endif /* _@GUARD_PREFIX@_SYS_WAIT_H */
Packit 33f14e
#endif /* _@GUARD_PREFIX@_SYS_WAIT_H */