|
|
1.1 ! root 1: /* Definitions for asynchronous process control in GNU Emacs. ! 2: Copyright (C) 1985, 1990 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 1, 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: ! 21: /* ! 22: * Structure records pertinent information about open channels. ! 23: * There is one channel associated with each process. ! 24: */ ! 25: ! 26: struct Lisp_Process ! 27: { ! 28: int size; ! 29: struct Lisp_Vector *v_next; ! 30: /* Descriptor by which we read from this process */ ! 31: Lisp_Object infd; ! 32: /* Descriptor by which we write to this process */ ! 33: Lisp_Object outfd; ! 34: /* Descriptor for the tty which this process is using. ! 35: nil if we didn't record it (on some systems, there's no need). */ ! 36: Lisp_Object subtty; ! 37: /* Name of this process */ ! 38: Lisp_Object name; ! 39: /* List of command arguments that this process was run with */ ! 40: Lisp_Object command; ! 41: /* (funcall FILTER PROC STRING) (if FILTER is non-nil) ! 42: to dispose of a bunch of chars from the process all at once */ ! 43: Lisp_Object filter; ! 44: /* (funcall SENTINEL PROCESS) when process state changes */ ! 45: Lisp_Object sentinel; ! 46: /* Buffer that output is going to */ ! 47: Lisp_Object buffer; ! 48: /* Number of this process */ ! 49: Lisp_Object pid; ! 50: /* Non-nil if this is really a command channel */ ! 51: Lisp_Object command_channel_p; ! 52: /* Non-nil if this is really a child process */ ! 53: Lisp_Object childp; ! 54: /* Marker set to end of last buffer-inserted output from this process */ ! 55: Lisp_Object mark; ! 56: /* Non-nil means kill silently if Emacs is exited. */ ! 57: Lisp_Object kill_without_query; ! 58: /* Record the process status in the raw form in which it comes from `wait'. ! 59: This is to avoid consing in a signal handler. */ ! 60: Lisp_Object raw_status_low; ! 61: Lisp_Object raw_status_high; ! 62: /* Symbol indicating status of process. ! 63: This may be a symbol: run, open, or closed. ! 64: Or it may be a list, whose car is stop, exit or signal ! 65: and whose cdr is a pair (EXIT_CODE . COREDUMP_FLAG) ! 66: or (SIGNAL_NUMBER . COREDUMP_FLAG). */ ! 67: Lisp_Object status; ! 68: /* Non-nil if communicating through a pty. */ ! 69: Lisp_Object pty_flag; ! 70: /* Event-count of last event in which this process changed status. */ ! 71: Lisp_Object tick; ! 72: /* Event-count of last such event reported. */ ! 73: Lisp_Object update_tick; ! 74: }; ! 75: ! 76: #define ChannelMask(n) (1<<(n))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.