/* Definitions for asynchronous process control in XEmacs. Copyright (C) 1985, 1992, 1993, 1994 Free Software Foundation, Inc.This file is part of XEmacs.XEmacs is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation; either version 2, or (at your option) anylater version.XEmacs is distributed in the hope that it will be useful, but WITHOUTANY WARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public Licensealong with XEmacs; see the file COPYING. If not, write tothe Free Software Foundation, Inc., 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA. *//* Synched up with: FSF 19.30. */#ifndef _XEMACS_PROCESS_H_#define _XEMACS_PROCESS_H_#if defined (NO_SUBPROCESSES)#undef XPROCESS#undef CHECK_PROCESS#undef XSETPROCESS#define PROCESSP(x) 0#define PROCESS_LIVE_P(x) 0#define Fprocess_status(x) Qnil#define Fget_process(x) Qnil#define Fget_buffer_process(x) Qnil#define kill_buffer_processes(x) 0#define close_process_descs() 0#define init_xemacs_process() 0externvoidwait_without_blocking(void);#else /* not NO_SUBPROCESSES *//* Only process.c needs to know about the guts of this */structLisp_Process;DECLARE_LRECORD(process,structLisp_Process);#define XPROCESS(x) XRECORD (x, process, struct Lisp_Process)#define XSETPROCESS(x, p) XSETRECORD (x, p, process)#define PROCESSP(x) RECORDP (x, process)#define GC_PROCESSP(x) GC_RECORDP (x, process)#define CHECK_PROCESS(x) CHECK_RECORD (x, process)#define PROCESS_LIVE_P(x) (XPROCESS(x)->infd >= 0)#ifdef emacsLisp_ObjectFget_process(Lisp_Objectname);Lisp_ObjectFget_buffer_process(Lisp_Objectname);Lisp_ObjectFprocessp(Lisp_Objectobject);Lisp_ObjectFprocess_status(Lisp_Objectprocess);Lisp_ObjectFkill_process(Lisp_Objectprocess,Lisp_Objectcurrent_group);Lisp_ObjectFdelete_process(Lisp_Objectprocess);Lisp_ObjectFopen_network_stream_internal(Lisp_Objectname,Lisp_Objectbuffer,Lisp_Objecthost,Lisp_Objectservice);Lisp_ObjectFprocess_kill_without_query(Lisp_Object,Lisp_Object);Lisp_Objectconnect_to_file_descriptor(Lisp_Objectname,Lisp_Objectbuffer,Lisp_Objectinfd,Lisp_Objectoutfd);intconnected_via_filedesc_p(structLisp_Process*p);voidkill_buffer_processes(Lisp_Objectbuffer);voidclose_process_descs(void);voidset_process_filter(Lisp_Objectproc,Lisp_Objectfilter,intfilter_does_read);/* True iff we are about to fork off a synchronous process or if we are waiting for it. */externvolatileintsynch_process_alive;/* Nonzero => this is a string explaining death of synchronous subprocess. */externCONSTchar*synch_process_death;/* If synch_process_death is zero, this is exit code of synchronous subprocess. */externintsynch_process_retcode;voidupdate_process_status(Lisp_Objectp,Lisp_Objectstatus_symbol,intexit_code,intcore_dumped);voidget_process_file_descriptors(structLisp_Process*p,int*infd,int*outfd);intget_process_selected_p(structLisp_Process*p);voidset_process_selected_p(structLisp_Process*p,intselected_p);structLisp_Process*get_process_from_input_descriptor(intinfd);#ifdef HAVE_SOCKETSintnetwork_connection_p(Lisp_Objectprocess);#else#define network_connection_p(x) 0#endifexternLisp_ObjectQrun,Qexit,Qopen,Qclosed;/* Report all recent events of a change in process status (either run the sentinel or output a message). This is done while Emacs is waiting for keyboard input. */voidstatus_notify(void);voidkick_status_notify(void);voiddeactivate_process(Lisp_Objectproc);#ifdef VMSvoidcreate_process(Lisp_Objectprocess,char**new_argv,CONSTchar*current_dir);#endifvoidchild_setup(intin,intout,interr,char**new_argv,CONSTchar*current_dir);Charcountread_process_output(Lisp_Objectproc);CONSTchar*signal_name(intsignum);Lisp_Objectcanonicalize_host_name(Lisp_Objecthost);#endif /* not NO_SUBPROCESSES *//* The name of the file open to get a null file, or a data sink. VMS, MS-DOS, and OS/2 redefine this. */#ifndef NULL_DEVICE#define NULL_DEVICE "/dev/null"#endif/* A string listing the possible suffixes used for executable files, separated by colons. VMS, MS-DOS, and OS/2 redefine this. */#ifndef EXEC_SUFFIXES#define EXEC_SUFFIXES ""#endif#endif /* emacs */#endif /* _XEMACS_PROCESS_H_ */