summaryrefslogtreecommitdiff
path: root/include/waitdefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/waitdefs.h')
-rw-r--r--include/waitdefs.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/include/waitdefs.h b/include/waitdefs.h
new file mode 100644
index 0000000..d363b4f
--- /dev/null
+++ b/include/waitdefs.h
@@ -0,0 +1,152 @@
+/*
+ * This file has been modified for the cdrkit suite.
+ *
+ * The behaviour and appearence of the program code below can differ to a major
+ * extent from the version distributed by the original author(s).
+ *
+ * For details, see Changelog file distributed with the cdrkit package. If you
+ * received this file from another source then ask the distributing person for
+ * a log of modifications.
+ *
+ */
+
+/* @(#)waitdefs.h 1.10 03/02/25 Copyright 1995-2003 J. Schilling */
+/*
+ * Definitions to deal with various kinds of wait flavour
+ *
+ * Copyright (c) 1995-2003 J. Schilling
+ */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program 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 program; see the file COPYING. If not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _WAITDEFS_H
+#define _WAITDEFS_H
+
+#ifndef _MCONFIG_H
+#include <mconfig.h>
+#endif
+
+/*
+ * Needed for SysVr4
+ */
+#ifndef _INCL_SYS_TYPES_H
+#include <sys/types.h>
+#define _INCL_SYS_TYPES_H
+#endif
+
+#if defined(HAVE_WAIT_H)
+# ifndef _INCL_WAIT_H
+# include <wait.h>
+# define _INCL_WAIT_H
+# endif
+#else
+/*
+ * K&R Compiler doesn't like #elif
+ */
+# if defined(HAVE_SYS_WAIT_H) /* POSIX.1 compl. sys/wait.h */
+# undef HAVE_UNION_WAIT /* POSIX.1 doesn't use U_W */
+# ifndef _INCL_SYS_WAIT_H
+# include <sys/wait.h>
+# define _INCL_SYS_WAIT_H
+# endif
+# else
+# if defined(HAVE_UNION_WAIT) /* Pure BSD U_W / sys/wait.h */
+# ifndef _INCL_SYS_WAIT_H
+# include <sys/wait.h>
+# define _INCL_SYS_WAIT_H
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef HAVE_UNION_WAIT
+# define WAIT_T union wait
+# ifndef WSTOPPED
+# define WSTOPPED 0x7F
+# endif
+# ifndef WTERMSIG
+# define WTERMSIG(status) ((status).w_termsig)
+# endif
+# ifndef WCOREDUMP
+# define WCOREDUMP(status) ((status).w_coredump)
+# endif
+# ifndef WEXITSTATUS
+# define WEXITSTATUS(status) ((status).w_retcode)
+# endif
+# ifndef WSTOPSIG
+# define WSTOPSIG(status) ((status).w_stopsig)
+# endif
+# ifndef WIFSTOPPED
+# define WIFSTOPPED(status) ((status).w_stopval == \
+ WSTOPPED)
+# endif
+# ifndef WIFSIGNALED
+# define WIFSIGNALED(status) ((status).w_stopval != \
+ WSTOPPED && \
+ (status).w_termsig != 0)
+# endif
+# ifndef WIFEXITED
+# define WIFEXITED(status) ((status).w_stopval != \
+ WSTOPPED && \
+ (status).w_termsig == 0)
+# endif
+#else
+# define WAIT_T int
+# ifndef WTERMSIG
+# define WTERMSIG(status) ((status) & 0x7F)
+# endif
+# ifndef WCOREDUMP
+# define WCOREDUMP(status) ((status) & 0x80)
+# endif
+# ifndef WEXITSTATUS
+# define WEXITSTATUS(status) (((status) >> 8) & 0xFF)
+# endif
+# ifndef WSTOPSIG
+# define WSTOPSIG(status) (((status) >> 8) & 0xFF)
+# endif
+# ifndef WIFSTOPPED
+# define WIFSTOPPED(status) (((status) & 0xFF) == 0x7F)
+# endif
+# ifndef WIFSIGNALED
+# define WIFSIGNALED(status) (((status) & 0xFF) != 0x7F && \
+ WTERMSIG(status) != 0)
+# endif
+# ifndef WIFEXITED
+# define WIFEXITED(status) (((status) & 0xFF) == 0)
+# endif
+#endif
+
+
+#ifndef WCOREFLG
+#define WCOREFLG 0x80
+#endif
+
+#ifndef WSTOPFLG
+#define WSTOPFLG 0x7F
+#endif
+
+#ifndef WCONTFLG
+#define WCONTFLG 0xFFFF
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WAITDEFS_H */