EXTERN struct exp_f * exp_update_master
_ANSI_ARGS_((Tcl_Interp *,int *,int,int));
EXTERN char * exp_get_var _ANSI_ARGS_((Tcl_Interp *,char *));
EXTERN int exp_default_match_max;
EXTERN int exp_default_parity;
EXTERN int exp_default_rm_nulls;
EXTERN int exp_one_arg_braced _ANSI_ARGS_((char *));
EXTERN int exp_eval_with_one_arg _ANSI_ARGS_((ClientData,
Tcl_Interp *,char **));
EXTERN void exp_lowmemcpy _ANSI_ARGS_((char *,char *,int));
EXTERN int exp_flageq_code _ANSI_ARGS_((char *,char *,int));
#define exp_flageq(flag,string,minlen) \
(((string)[0] == (flag)[0]) && (exp_flageq_code(((flag)+1),((string)+1),((minlen)-1))))
#define exp_flageq1(flag,string) \
((string[0] == flag) && (string[1] == '\0'))
#define WAIT_STATUS_TYPE int
#if 0
#ifdef AIX
# define WAIT_STATUS_TYPE pid_t
#else
#ifndef NO_UNION_WAIT
# define WAIT_STATUS_TYPE union wait
#else
# define WAIT_STATUS_TYPE int
#endif
#endif
#undef WIFEXITED
#ifndef WIFEXITED
# define WIFEXITED(stat) (((*((int *) &(stat))) & 0xff) == 0)
#endif
#undef WEXITSTATUS
#ifndef WEXITSTATUS
# define WEXITSTATUS(stat) (((*((int *) &(stat))) >> 8) & 0xff)
#endif
#undef WIFSIGNALED
#ifndef WIFSIGNALED
# define WIFSIGNALED(stat) (((*((int *) &(stat)))) && ((*((int *) &(stat))) == ((*((int *) &(stat))) & 0x00ff)))
#endif
#undef WTERMSIG
#ifndef WTERMSIG
# define WTERMSIG(stat) ((*((int *) &(stat))) & 0x7f)
#endif
#undef WIFSTOPPED
#ifndef WIFSTOPPED
# define WIFSTOPPED(stat) (((*((int *) &(stat))) & 0xff) == 0177)
#endif
#undef WSTOPSIG
#ifndef WSTOPSIG
# define WSTOPSIG(stat) (((*((int *) &(stat))) >> 8) & 0xff)
#endif
#endif
#undef WIFEXITED
#ifndef WIFEXITED
# define WIFEXITED(stat) (((stat) & 0xff) == 0)
#endif
#undef WEXITSTATUS
#ifndef WEXITSTATUS
# define WEXITSTATUS(stat) (((stat) >> 8) & 0xff)
#endif
#undef WIFSIGNALED
#ifndef WIFSIGNALED
# define WIFSIGNALED(stat) ((stat) && ((stat) == ((stat) & 0x00ff)))
#endif
#undef WTERMSIG
#ifndef WTERMSIG
# define WTERMSIG(stat) ((stat) & 0x7f)
#endif
#undef WIFSTOPPED
#ifndef WIFSTOPPED
# define WIFSTOPPED(stat) (((stat) & 0xff) == 0177)
#endif
#undef WSTOPSIG
#ifndef WSTOPSIG
# define WSTOPSIG(stat) (((stat) >> 8) & 0xff)
#endif
#define EXP_SPAWN_ID_ANY_VARNAME "any_spawn_id"
#define EXP_SPAWN_ID_ANY_LIT "-1"
#define EXP_SPAWN_ID_ANY -1
#define EXP_SPAWN_ID_ERROR_LIT "2"
#define EXP_SPAWN_ID_USER_LIT "0"
#define EXP_SPAWN_ID_USER 0
#define exp_is_stdinfd(x) ((x) == 0)
#define exp_is_devttyfd(x) ((x) == exp_dev_tty)
#define EXP_NOPID 0
#define EXP_NOFD -1
#define EXP_CMD_BEFORE 0
#define EXP_CMD_AFTER 1
#define EXP_CMD_BG 2
#define EXP_CMD_FG 3
struct exp_f {
int *fd_ptr;
#if 0
struct exp_f **ptr;
#endif
int pid;
char *buffer;
char *lower;
int size;
int msize;
int umsize;
int rm_nulls;
int valid;
int user_closed;
int sys_closed;
int user_waited;
int sys_waited;
WAIT_STATUS_TYPE wait;
int parity;
int printed;
int echoed;
int key;
int force_read;
int fg_armed;
#if TCL_MAJOR_VERSION < 8
Tcl_File Master;
Tcl_File Slave;
Tcl_File MasterOutput;
#endif
#ifdef __CYGWIN32__
Tcl_Channel channel;
Tcl_FileProc *fileproc;
ClientData procdata;
#endif
int slave_fd;
#ifdef HAVE_PTYTRAP
char *slave_name;
#endif
char *tcl_handle;
int tcl_output;
int leaveopen;
Tcl_Interp *bg_interp;
int bg_ecount;
enum {
blocked,
armed,
unarmed,
disarm_req_while_blocked
} bg_status;
};
extern int exp_fd_max;
#define EXP_TEMPORARY 1
#define EXP_PERMANENT 2
#define EXP_DIRECT 1
#define EXP_INDIRECT 2
EXTERN struct exp_f *exp_fs;
EXTERN struct exp_f * exp_fd2f _ANSI_ARGS_((Tcl_Interp *,int,int,int,char *));
EXTERN void exp_adjust _ANSI_ARGS_((struct exp_f *));
EXTERN void exp_buffer_shuffle _ANSI_ARGS_((Tcl_Interp *,struct exp_f *,int,char *,char *));
EXTERN int exp_close _ANSI_ARGS_((Tcl_Interp *,int));
EXTERN void exp_close_all _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_ecmd_remove_fd_direct_and_indirect
_ANSI_ARGS_((Tcl_Interp *,int));
EXTERN void exp_trap_on _ANSI_ARGS_((int));
EXTERN int exp_trap_off _ANSI_ARGS_((char *));
EXTERN void exp_strftime();
#define exp_deleteProc (void (*)())0
#define exp_deleteObjProc (void (*)())0
EXTERN int expect_key;
EXTERN int exp_configure_count;
EXTERN int exp_nostack_dump;
EXTERN void exp_init_pty _ANSI_ARGS_((void));
EXTERN void exp_pty_exit _ANSI_ARGS_((void));
EXTERN void exp_init_tty _ANSI_ARGS_((void));
EXTERN void exp_init_stdio _ANSI_ARGS_((void));
EXTERN void exp_init_spawn_ids _ANSI_ARGS_((void));
EXTERN void exp_init_spawn_id_vars _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_trap _ANSI_ARGS_((void));
EXTERN void exp_init_unit_random _ANSI_ARGS_((void));
EXTERN void exp_init_sig _ANSI_ARGS_((void));
EXTERN int exp_tcl2_returnvalue _ANSI_ARGS_((int));
EXTERN int exp_2tcl_returnvalue _ANSI_ARGS_((int));
EXTERN void exp_rearm_sigchld _ANSI_ARGS_((Tcl_Interp *));
EXTERN int exp_string_to_signal _ANSI_ARGS_((Tcl_Interp *,char *));
EXTERN char *exp_onexit_action;
#define exp_new(x) (x *)malloc(sizeof(x))
struct exp_fd_list {
int fd;
struct exp_fd_list *next;
};
struct exp_i {
int cmdtype;
int direct;
int duration;
char *variable;
char *value;
int ecount;
struct exp_fd_list *fd_list;
struct exp_i *next;
};
EXTERN struct exp_i * exp_new_i_complex _ANSI_ARGS_((Tcl_Interp *,
char *, int, Tcl_VarTraceProc *));
EXTERN struct exp_i * exp_new_i_simple _ANSI_ARGS_((int,int));
EXTERN struct exp_fd_list *exp_new_fd _ANSI_ARGS_((int));
EXTERN void exp_free_i _ANSI_ARGS_((Tcl_Interp *,struct exp_i *,
Tcl_VarTraceProc *));
EXTERN void exp_free_fd _ANSI_ARGS_((struct exp_fd_list *));
EXTERN void exp_free_fd_single _ANSI_ARGS_((struct exp_fd_list *));
EXTERN void exp_i_update _ANSI_ARGS_((Tcl_Interp *,
struct exp_i *));
#define EXP_NOPREFIX 1
#define EXP_REDEFINE 2
#if TCL_MAJOR_VERSION < 8
#define exp_proc(cmdproc) cmdproc
#else
#define exp_proc(cmdproc) 0, cmdproc
#endif
struct exp_cmd_data {
char *name;
#if TCL_MAJOR_VERSION >= 8
Tcl_ObjCmdProc *objproc;
#endif
Tcl_CmdProc *proc;
ClientData data;
int flags;
};
EXTERN void exp_create_commands _ANSI_ARGS_((Tcl_Interp *,
struct exp_cmd_data *));
EXTERN void exp_init_main_cmds _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_expect_cmds _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_most_cmds _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_trap_cmds _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_interact_cmds _ANSI_ARGS_((Tcl_Interp *));
EXTERN void exp_init_tty_cmds();