home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / e20313sr.zip / emacs / 20.3.1 / src / syswait.h < prev    next >
C/C++ Source or Header  |  1999-07-31  |  3KB  |  107 lines

  1. /* Define wait system call interface for Emacs.
  2.    Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21. /* Define the structure that the wait system call stores.
  22.    On many systems, there is a structure defined for this.
  23.    But on vanilla-ish USG systems there is not.  */
  24.  
  25. #ifndef VMS
  26. #ifndef WAITTYPE
  27.  
  28. #ifdef WAIT_USE_INT
  29. /* Some systems have  union wait  in their header, but we should use
  30.    int regardless of that.  */
  31. #include <sys/wait.h>
  32. #define WAITTYPE int
  33. #define WRETCODE(w) WEXITSTATUS (w)
  34.  
  35. #else /* not WAIT_USE_INT */
  36.  
  37. #if (!defined (BSD_SYSTEM) && !defined (UNIPLUS) && !defined (STRIDE) && !(defined (HPUX) && !defined (NOMULTIPLEJOBS)) && !defined (HAVE_WAIT_HEADER))
  38. #define WAITTYPE int
  39. #define WIFSTOPPED(w) ((w&0377) == 0177)
  40. #define WIFSIGNALED(w) ((w&0377) != 0177 && (w&~0377) == 0)
  41. #define WIFEXITED(w) ((w&0377) == 0)
  42. #define WRETCODE(w) (w >> 8)
  43. #define WSTOPSIG(w) (w >> 8)
  44. #define WTERMSIG(w) (w & 0377)
  45. #ifndef WCOREDUMP
  46. #define WCOREDUMP(w) ((w&0200) != 0)
  47. #endif
  48.  
  49. #else 
  50.  
  51. #ifdef BSD4_1
  52. #include <wait.h>
  53. #else
  54. #include <sys/wait.h>
  55. #endif /* not BSD 4.1 */
  56.  
  57. #define WAITTYPE union wait
  58. #define WRETCODE(w) w.w_retcode
  59. #undef WCOREDUMP        /* Later BSDs define this name differently.  */
  60. #define WCOREDUMP(w) w.w_coredump
  61.  
  62. #if defined (HPUX) || defined (convex)
  63. /* HPUX version 7 has broken definitions of these.  */
  64. /* pvogel@convex.com says the convex does too.  */
  65. #undef WTERMSIG
  66. #undef WSTOPSIG
  67. #undef WIFSTOPPED
  68. #undef WIFSIGNALED
  69. #undef WIFEXITED
  70. #endif /* HPUX | convex */
  71.  
  72. #ifndef WTERMSIG
  73. #define WTERMSIG(w) w.w_termsig
  74. #endif
  75. #ifndef WSTOPSIG
  76. #define WSTOPSIG(w) w.w_stopsig
  77. #endif
  78. #ifndef WIFSTOPPED
  79. #define WIFSTOPPED(w) (WTERMSIG (w) == 0177)
  80. #endif
  81. #ifndef WIFSIGNALED
  82. #define WIFSIGNALED(w) (WTERMSIG (w) != 0177 && (WSTOPSIG (w)) == 0)
  83. #endif
  84. #ifndef WIFEXITED
  85. #define WIFEXITED(w) (WTERMSIG (w) == 0)
  86. #endif
  87. #endif /* BSD_SYSTEM || UNIPLUS || STRIDE || HPUX */
  88. #endif /* not WAIT_USE_INT */
  89. #endif /* no WAITTYPE */
  90.  
  91. #else /* VMS */
  92.  
  93. #define WAITTYPE int
  94. #define WIFSTOPPED(w) 0
  95. #define WIFSIGNALED(w) 0
  96. #define WIFEXITED(w) ((w) != -1)
  97. #define WRETCODE(w) (w)
  98. #define WSTOPSIG(w) (w)
  99. #define WCOREDUMP(w) 0
  100. #define WTERMSIG(w) (w)
  101. #include <ssdef.h>
  102. #include <iodef.h>
  103. #include <clidef.h>
  104. #include "vmsproc.h"
  105.  
  106. #endif /* VMS */
  107.