aboutsummaryrefslogtreecommitdiffstats
path: root/src/syswait.h
diff options
context:
space:
mode:
authorRichard M. Stallman1993-08-14 09:38:56 +0000
committerRichard M. Stallman1993-08-14 09:38:56 +0000
commit43626ea48d524e02863127fad847e1e4a771cded (patch)
treeba6e273a222f0f79a8a6b603f33f595adbcbb99e /src/syswait.h
parent88bb5793b5f89b68eec849e5278c2aea7c096896 (diff)
downloademacs-43626ea48d524e02863127fad847e1e4a771cded.tar.gz
emacs-43626ea48d524e02863127fad847e1e4a771cded.zip
entered into RCS
Diffstat (limited to 'src/syswait.h')
-rw-r--r--src/syswait.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/syswait.h b/src/syswait.h
new file mode 100644
index 00000000000..41214ea54cf
--- /dev/null
+++ b/src/syswait.h
@@ -0,0 +1,87 @@
1/* Define wait system call interface for Emacs.
2 Copyright (C) 1993 Free Software Foundation, Inc.
3
4This file is part of GNU Emacs.
5
6GNU Emacs is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU Emacs is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Emacs; see the file COPYING. If not, write to
18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20/* Define the structure that the wait system call stores.
21 On many systems, there is a structure defined for this.
22 But on vanilla-ish USG systems there is not. */
23
24#ifndef VMS
25#ifndef WAITTYPE
26#if (!defined (BSD) && !defined (UNIPLUS) && !defined (STRIDE) && !(defined (HPUX) && !defined (NOMULTIPLEJOBS)) && !defined (HAVE_WAIT_HEADER)) || defined (LINUX)
27#define WAITTYPE int
28#define WIFSTOPPED(w) ((w&0377) == 0177)
29#define WIFSIGNALED(w) ((w&0377) != 0177 && (w&~0377) == 0)
30#define WIFEXITED(w) ((w&0377) == 0)
31#define WRETCODE(w) (w >> 8)
32#define WSTOPSIG(w) (w >> 8)
33#define WTERMSIG(w) (w & 0377)
34#ifndef WCOREDUMP
35#define WCOREDUMP(w) ((w&0200) != 0)
36#endif
37#else
38#ifdef BSD4_1
39#include <wait.h>
40#else
41#include <sys/wait.h>
42#endif /* not BSD 4.1 */
43
44#define WAITTYPE union wait
45#define WRETCODE(w) w.w_retcode
46#define WCOREDUMP(w) w.w_coredump
47
48#ifdef HPUX
49/* HPUX version 7 has broken definitions of these. */
50#undef WTERMSIG
51#undef WSTOPSIG
52#undef WIFSTOPPED
53#undef WIFSIGNALED
54#undef WIFEXITED
55#endif
56
57#ifndef WTERMSIG
58#define WTERMSIG(w) w.w_termsig
59#endif
60#ifndef WSTOPSIG
61#define WSTOPSIG(w) w.w_stopsig
62#endif
63#ifndef WIFSTOPPED
64#define WIFSTOPPED(w) (WTERMSIG (w) == 0177)
65#endif
66#ifndef WIFSIGNALED
67#define WIFSIGNALED(w) (WTERMSIG (w) != 0177 && (WSTOPSIG (w)) == 0)
68#endif
69#ifndef WIFEXITED
70#define WIFEXITED(w) (WTERMSIG (w) == 0)
71#endif
72#endif /* BSD or UNIPLUS or STRIDE */
73#endif /* no WAITTYPE */
74#else /* VMS */
75#define WAITTYPE int
76#define WIFSTOPPED(w) 0
77#define WIFSIGNALED(w) 0
78#define WIFEXITED(w) ((w) != -1)
79#define WRETCODE(w) (w)
80#define WSTOPSIG(w) (w)
81#define WCOREDUMP(w) 0
82#define WTERMSIG(w) (w)
83#include <ssdef.h>
84#include <iodef.h>
85#include <clidef.h>
86#include "vmsproc.h"
87#endif /* VMS */