home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / lucid / lemacs-19.6 / src / process.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-13  |  3.6 KB  |  101 lines

  1. /* Definitions for asynchronous process control in GNU Emacs.
  2.    Copyright (C) 1985-1993 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. #ifndef _EMACS_PROCESS_H_
  21. #define _EMACS_PROCESS_H_
  22.  
  23. /*
  24.  * Structure records pertinent information about open channels.
  25.  * There is one channel associated with each process.
  26.  */
  27.  
  28. struct Lisp_Process
  29.   {
  30.     int size;
  31.     struct Lisp_Vector *v_next;
  32.     /* Descriptor by which we read from this process */
  33.     Lisp_Object infd;
  34.     /* Descriptor by which we write to this process */
  35.     Lisp_Object outfd;
  36.     /* Descriptor for the tty which this process is using.
  37.        nil if we didn't record it (on some systems, there's no need).  */
  38.     Lisp_Object subtty;
  39.     /* Name of this process */
  40.     Lisp_Object name;
  41.     /* List of command arguments that this process was run with */
  42.     Lisp_Object command;
  43.     /* (funcall FILTER PROC STRING)  (if FILTER is non-nil)
  44.        to dispose of a bunch of chars from the process all at once */
  45.     Lisp_Object filter;
  46. #ifdef ENERGIZE
  47.     /* if this flag is not NIL, then filter will do the read on the
  48.        channel, rather than having a call to make_string */
  49.     Lisp_Object filter_does_read;
  50. #endif
  51.     /* (funcall SENTINEL PROCESS) when process state changes */
  52.     Lisp_Object sentinel;
  53.     /* Buffer that output is going to */
  54.     Lisp_Object buffer;
  55.     /* Number of this process */
  56.     Lisp_Object pid;
  57.     /* Non-nil if this is really a command channel */
  58.     Lisp_Object command_channel_p;
  59.     /* Non-nil if this is really a child process */
  60.     Lisp_Object childp;
  61.     /* Marker set to end of last buffer-inserted output from this process */
  62.     Lisp_Object mark;
  63.     /* Non-nil means kill silently if Emacs is exited.  */
  64.     Lisp_Object kill_without_query;
  65.     /* Record the process status in the raw form in which it comes from `wait'.
  66.        This is to avoid consing in a signal handler.  */
  67.     Lisp_Object raw_status_low;
  68.     Lisp_Object raw_status_high;
  69.     /* Symbol indicating status of process.
  70.        This may be a symbol: run, open, or closed.
  71.        Or it may be a list, whose car is stop, exit or signal
  72.        and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG)
  73.        or (SIGNAL_NUMBER . COREDUMP_FLAG).  */
  74.     Lisp_Object status;
  75.     /* Non-nil if communicating through a pty.  */
  76.     Lisp_Object pty_flag;
  77.     /* Event-count of last event in which this process changed status.  */
  78.     Lisp_Object tick;
  79.     /* Event-count of last such event reported.  */
  80.     Lisp_Object update_tick;
  81. };
  82.  
  83. #ifdef emacs
  84.  
  85. #define ChannelMask(n) (1<<(n))
  86.  
  87. /* True iff we are about to fork off a synchronous process or if we
  88.    are waiting for it.  */
  89. /* extern int synch_process_alive; */
  90.  
  91. /* Nonzero => this is a string explaining death of synchronous subprocess.  */
  92. extern char *synch_process_death;
  93.  
  94. /* If synch_process_death is zero,
  95.    this is exit code of synchronous subprocess.  */
  96. extern int synch_process_retcode;
  97.  
  98. #endif /* emacs */
  99.  
  100. #endif /* _EMACS_PROCESS_H_ */
  101.