X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fprocess.h;h=8e230cf76868b1bd7a81f2b8b51a1fbfeb9d99a7;hb=3890a2e3064a7f562107c58e59d928284ec04741;hp=f2574d8116bef6890d52fe935ef7047bd2c5ade3;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910;p=chise%2Fxemacs-chise.git.1 diff --git a/src/process.h b/src/process.h index f2574d8..8e230cf 100644 --- a/src/process.h +++ b/src/process.h @@ -18,8 +18,8 @@ along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef _XEMACS_PROCESS_H_ -#define _XEMACS_PROCESS_H_ +#ifndef INCLUDED_process_h_ +#define INCLUDED_process_h_ #if defined (NO_SUBPROCESSES) #undef XPROCESS @@ -38,15 +38,19 @@ void wait_without_blocking (void); #else /* not NO_SUBPROCESSES */ /* Only process.c needs to know about the guts of this */ -struct Lisp_Process; -DECLARE_LRECORD (process, struct Lisp_Process); -#define XPROCESS(x) XRECORD (x, process, struct Lisp_Process) +DECLARE_LRECORD (process, Lisp_Process); +#define XPROCESS(x) XRECORD (x, process, 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) (!NILP (XPROCESS(x)->pipe_instream)) +#define PROCESS_LIVE_P(x) (!NILP ((x)->pipe_instream)) + +#define CHECK_LIVE_PROCESS(x) do { \ + CHECK_PROCESS (x); \ + if (! PROCESS_LIVE_P (XPROCESS (x))) \ + dead_wrong_type_argument (Qprocess_live_p, (x)); \ +} while (0) #ifdef emacs @@ -57,7 +61,7 @@ Lisp_Object connect_to_file_descriptor (Lisp_Object name, Lisp_Object buffer, Lisp_Object infd, Lisp_Object outfd); -int connected_via_filedesc_p (struct Lisp_Process *p); +int connected_via_filedesc_p (Lisp_Process *p); void kill_buffer_processes (Lisp_Object buffer); void close_process_descs (void); @@ -69,7 +73,7 @@ void set_process_filter (Lisp_Object proc, extern volatile int synch_process_alive; /* Nonzero => this is a string explaining death of synchronous subprocess. */ -extern CONST char *synch_process_death; +extern const char *synch_process_death; /* If synch_process_death is zero, this is exit code of synchronous subprocess. */ @@ -80,12 +84,12 @@ void update_process_status (Lisp_Object p, Lisp_Object status_symbol, int exit_code, int core_dumped); -void get_process_streams (struct Lisp_Process *p, +void get_process_streams (Lisp_Process *p, Lisp_Object *instr, Lisp_Object *outstr); -int get_process_selected_p (struct Lisp_Process *p); -void set_process_selected_p (struct Lisp_Process *p, int selected_p); +int get_process_selected_p (Lisp_Process *p); +void set_process_selected_p (Lisp_Process *p, int selected_p); -struct Lisp_Process *get_process_from_usid (USID usid); +Lisp_Process *get_process_from_usid (USID usid); #ifdef HAVE_SOCKETS int network_connection_p (Lisp_Object process); @@ -93,7 +97,7 @@ int network_connection_p (Lisp_Object process); #define network_connection_p(x) 0 #endif -extern Lisp_Object Qclosed, Qmulticast, Qopen, Qrun, Qstop, Qtcpip; +extern Lisp_Object Qclosed, Qmulticast, Qopen, Qrun, Qstop, Qtcp, Qudp; extern Lisp_Object Vprocess_connection_type, Vprocess_list; /* Report all recent events of a change in process status @@ -110,11 +114,11 @@ int void #endif child_setup (int in, int out, int err, - char **new_argv, CONST char *current_dir); + char **new_argv, const char *current_dir); Charcount read_process_output (Lisp_Object proc); -CONST char *signal_name (int signum); +const char *signal_name (int signum); Lisp_Object canonicalize_host_name (Lisp_Object host); @@ -134,4 +138,13 @@ Lisp_Object canonicalize_host_name (Lisp_Object host); #endif /* emacs */ -#endif /* _XEMACS_PROCESS_H_ */ +#ifdef HAVE_GETPT +#define PTY_ITERATION +#define PTY_OPEN \ + if ((fd = getpt()) < 0 || grantpt (fd) < 0 || unlockpt (fd) < 0) \ + return -1; +#define PTY_NAME_SPRINTF +#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ptsname (fd)); +#endif + +#endif /* INCLUDED_process_h_ */