EXTERN
EXTERN struct strings stringdope[NSPACE];
#ifndef EXTERN
EXTERN int msgCount; /* Count of messages read in */
EXTERN int rcvmode; /* True if receiving mail */
EXTERN int sawcom; /* Set after first command */
EXTERN char *Tflag; /* -T temp file for netnews */
EXTERN int senderr; /* An error while checking */
EXTERN int edit; /* Indicates editing a file */
EXTERN int readonly; /* Will be unable to rewrite file */
EXTERN int noreset; /* String resets suspended */
EXTERN int sourcing; /* Currently reading variant file */
EXTERN int loading; /* Loading user definitions */
EXTERN int cond; /* Current state of conditional exc. */
EXTERN FILE *itf; /* Input temp file buffer */
EXTERN FILE *otf; /* Output temp file buffer */
EXTERN int image; /* File descriptor for image of msg */
EXTERN FILE *input; /* Current command input file */
EXTERN char mailname[PATHSIZE]; /* Name of current file */
EXTERN char prevfile[PATHSIZE]; /* Name of previous file */
EXTERN char *homedir; /* Path name of home directory */
EXTERN char *myname; /* My login name */
EXTERN off_t mailsize; /* Size of system mailbox */
EXTERN int lexnumber; /* Number of TNUMBER from scan() */
EXTERN char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
EXTERN int regretp; /* Pointer to TOS of regret tokens */
EXTERN int regretstack[REGDEP]; /* Stack of regretted tokens */
EXTERN char *string_stack[REGDEP]; /* Stack of regretted strings */
EXTERN int numberstack[REGDEP]; /* Stack of regretted numbers */
EXTERN struct message *dot; /* Pointer to current message */
EXTERN struct message *message; /* The actual message structure */
EXTERN struct var *variables[HSHSIZE]; /* Pointer to active var list */
EXTERN struct grouphead *groups[HSHSIZE]; /* Pointer to active groups */
EXTERN struct ignoretab ignore[2]; /* ignored and retained fields
EXTERN struct ignoretab saveignore[2]; /* ignored and retained fields
EXTERN struct ignoretab ignoreall[2]; /* special, ignore all headers */
EXTERN char **altnames; /* List of alternate names for user */
EXTERN int debug; /* Debug flag set */
EXTERN int screenwidth; /* Screen width, or best guess */
EXTERN int screenheight; /* Screen height, or best guess,
EXTERN int realscreenheight; /* the real screen height */
EXTERN jmp_buf srbuf;
EXTERN struct termios otermios;
EXTERN struct termios ctermios;
EXTERN FILE *fscript; /* FILE for scripting */
EXTERN int fildes[2]; /* file transfer synchronization channel */
EXTERN int repdes[2]; /* read process sychronization channel */
EXTERN int FD; /* open file descriptor to remote host */
EXTERN int AC; /* open file descriptor to dialer (v831 only) */
EXTERN int vflag; /* print .tiprc initialization sequence */
EXTERN int sfd; /* for ~< operation */
EXTERN int pid; /* pid of tipout */
EXTERN uid_t uid, euid; /* real and effective user id's */
EXTERN gid_t gid, egid; /* real and effective group id's */
EXTERN int stop; /* stop transfer session flag */
EXTERN int quit; /* same; but on other end */
EXTERN int intflag; /* recognized interrupt */
EXTERN int stoprompt; /* for interrupting a prompt session */
EXTERN int timedout; /* ~> transfer timedout */
EXTERN int cumode; /* simulating the "cu" program */
EXTERN char fname[PATH_MAX]; /* file name buffer for ~< */
EXTERN char copyname[PATH_MAX]; /* file name buffer for ~> */
EXTERN char ccc; /* synchronization character */
EXTERN char ch; /* for tipout */
EXTERN char *uucplock; /* name of lock file for uucp's */
EXTERN int odisc; /* initial tty line discipline */
#ifndef EXTERN
EXTERN char *DV; /* UNIX device(s) to open */
EXTERN char *EL; /* chars marking an EOL */
EXTERN char *CM; /* initial connection message */
EXTERN char *IE; /* EOT to expect on input */
EXTERN char *OE; /* EOT to send to complete FT */
EXTERN char *CU; /* call unit if making a phone call */
EXTERN char *AT; /* acu type */
EXTERN char *PN; /* phone number(s) */
EXTERN char *DI; /* disconnect string */
EXTERN char *PA; /* parity to be generated */
EXTERN char *PH; /* phone number file */
EXTERN char *RM; /* remote file name */
EXTERN char *HO; /* host name */
EXTERN char *LI; /* login script */
EXTERN char *LO; /* logout script */
EXTERN long BR; /* line speed for conversation */
EXTERN long FS; /* frame size for transfers */
EXTERN char DU; /* this host is dialed up */
EXTERN char HW; /* this device is hardwired, see hunt.c */
EXTERN char *ES; /* escape character */
EXTERN char *EX; /* exceptions */
EXTERN char *FO; /* force (literal next) char*/
EXTERN char *RC; /* raise character */
EXTERN char *RE; /* script record file */
EXTERN char *PR; /* remote prompt */
EXTERN long DL; /* line delay for file transfers to remote */
EXTERN long CL; /* char delay for file transfers to remote */
EXTERN long ET; /* echocheck timeout */
EXTERN char HD; /* this host is half duplex - do local echo */
#ifndef EXTERN
EXTERN struct var *alias_head;
#ifndef EXTERN
EXTERN struct context cx; /* the current context */
#ifndef EXTERN
EXTERN struct timeval starttime;
EXTERN struct ww *window[NWINDOW]; /* the windows */
EXTERN struct ww *selwin; /* the selected window */
EXTERN struct ww *lastselwin; /* the last selected window */
EXTERN struct ww *cmdwin; /* the command window */
EXTERN struct ww *framewin; /* the window for framing */
EXTERN struct ww *boxwin; /* the window for the box */
EXTERN struct ww *fgwin; /* the last foreground window */
EXTERN char *default_shell[128]; /* default shell argv */
EXTERN char *default_shellfile; /* default shell program */
EXTERN int default_nline; /* default buffer size for new windows */
EXTERN int default_smooth; /* default "smooth" parameter */
EXTERN char escapec; /* the escape character */
EXTERN char quit; /* quit command issued */
EXTERN char terse; /* terse mode */
EXTERN char debug; /* debug mode */
EXTERN char incmd; /* in command mode */
EXTERN struct tt tt;
EXTERN struct tt_tab tt_tab[];
EXTERN char tt_strings[1024]; /* string buffer */
EXTERN char *tt_strp; /* pointer for it */
EXTERN char *tt_ob;
EXTERN char *tt_obp;
EXTERN char *tt_obe;
#ifndef EXTERN
#ifndef EXTERN
EXTERN struct var *var_head; /* secret, shhh */
#ifndef EXTERN
EXTERN struct string str_head;
EXTERN struct ww wwhead;
EXTERN struct ww *wwindex[NWW + 1]; /* last location is for wwnobody */
EXTERN struct ww wwnobody;
EXTERN struct ww_tty wwoldtty; /* the old (saved) terminal settings */
EXTERN struct ww_tty wwnewtty; /* the new (current) terminal settings */
EXTERN struct ww_tty wwwintty; /* the terminal settings for windows */
EXTERN char *wwterm; /* the terminal name */
EXTERN char wwtermcap[1024]; /* place for the termcap */
EXTERN int wwnrow, wwncol; /* the screen size */
EXTERN char wwavailmodes; /* actually supported modes */
EXTERN char wwcursormodes; /* the modes for the fake cursor */
EXTERN char wwwrap; /* terminal has auto wrap around */
EXTERN int wwdtablesize; /* result of getdtablesize() call */
EXTERN unsigned char **wwsmap; /* the screen map */
EXTERN union ww_char **wwos; /* the old (current) screen */
EXTERN union ww_char **wwns; /* the new (desired) screen */
EXTERN union ww_char **wwcs; /* the checkpointed screen */
EXTERN char *wwtouched; /* wwns changed flags */
EXTERN struct ww_update *wwupd; /* for display update */
EXTERN int wwospeed; /* output baud rate, copied from wwoldtty */
EXTERN int wwbaud; /* wwospeed converted into actual number */
EXTERN int wwcursorrow, wwcursorcol; /* where we want the cursor to be */
EXTERN int wwerrno; /* error number */
EXTERN int wwnflush, wwnwr, wwnwre, wwnwrz, wwnwrc;
EXTERN int wwnwwr, wwnwwra, wwnwwrc;
EXTERN int wwntokdef, wwntokuse, wwntokbad, wwntoksave, wwntokc;
EXTERN int wwnupdate, wwnupdline, wwnupdmiss;
EXTERN int wwnupdscan, wwnupdclreol, wwnupdclreos, wwnupdclreosmiss, wwnupdclreosline;
EXTERN int wwnread, wwnreade, wwnreadz;
EXTERN int wwnreadc, wwnreadack, wwnreadnack, wwnreadstat, wwnreadec;
EXTERN int wwnwread, wwnwreade, wwnwreadz, wwnwreadd, wwnwreadc, wwnwreadp;
EXTERN int wwnselect, wwnselecte, wwnselectz;
EXTERN struct ww *wwcurwin; /* window to copy input into */
EXTERN char *wwib; /* input (keyboard) buffer */
EXTERN char *wwibe; /* wwib + sizeof buffer */
EXTERN char *wwibp; /* current read position in buffer */
EXTERN char *wwibq; /* current write position in buffer */
EXTERN char wwintr; /* interrupting */
EXTERN char wwsetjmp; /* want a longjmp() from wwrint() and wwchild() */
EXTERN jmp_buf wwjmpbuf; /* jmpbuf for above */
EXTERN int wwdocheckpoint;
EXTERN char wwwintermcap[1024]; /* terminal-specific but window-independent
EXTERN char wwterminfopath[1024];
#ifndef EXTERN
#ifndef EXTERN
EXTERN struct xx *xx_head, *xx_tail;
EXTERN struct xx *xx_freelist;
EXTERN char *xxbuf, *xxbufp, *xxbufe;
EXTERN int xxbufsize;