1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  *
   6:  *	@(#)tip.h	5.3.1 (2.11BSD GTE) 1/1/94
   7:  */
   8: 
   9: /*
  10:  * tip - terminal interface program
  11:  */
  12: 
  13: #include <sys/types.h>
  14: #include <sys/file.h>
  15: 
  16: #include <sgtty.h>
  17: #include <signal.h>
  18: #include <stdio.h>
  19: #include <pwd.h>
  20: #include <ctype.h>
  21: #include <setjmp.h>
  22: #include <errno.h>
  23: 
  24: /*
  25:  * Remote host attributes
  26:  */
  27: char    *DV;            /* UNIX device(s) to open */
  28: char    *EL;            /* chars marking an EOL */
  29: char    *CM;            /* initial connection message */
  30: char    *IE;            /* EOT to expect on input */
  31: char    *OE;            /* EOT to send to complete FT */
  32: char    *CU;            /* call unit if making a phone call */
  33: char    *AT;            /* acu type */
  34: char    *PN;            /* phone number(s) */
  35: char    *DI;            /* disconnect string */
  36: char    *PA;            /* parity to be generated */
  37: 
  38: char    *PH;            /* phone number file */
  39: char    *RM;            /* remote file name */
  40: char    *HO;            /* host name */
  41: 
  42: int BR;         /* line speed for conversation */
  43: int FS;         /* frame size for transfers */
  44: 
  45: char    DU;         /* this host is dialed up */
  46: char    HW;         /* this device is hardwired, see hunt.c */
  47: char    *ES;            /* escape character */
  48: char    *EX;            /* exceptions */
  49: char    *FO;            /* force (literal next) char*/
  50: char    *RC;            /* raise character */
  51: char    *RE;            /* script record file */
  52: char    *PR;            /* remote prompt */
  53: int DL;         /* line delay for file transfers to remote */
  54: int CL;         /* char delay for file transfers to remote */
  55: int ET;         /* echocheck timeout */
  56: char    HD;         /* this host is half duplex - do local echo */
  57: 
  58: /*
  59:  * String value table
  60:  */
  61: typedef
  62:     struct {
  63:         char    *v_name;    /* whose name is it */
  64:         char    v_type;     /* for interpreting set's */
  65:         char    v_access;   /* protection of touchy ones */
  66:         char    *v_abrev;   /* possible abreviation */
  67:         char    *v_value;   /* casted to a union later */
  68:     }
  69:     value_t;
  70: 
  71: #define STRING  01      /* string valued */
  72: #define BOOL    02      /* true-false value */
  73: #define NUMBER  04      /* numeric value */
  74: #define CHAR    010     /* character value */
  75: 
  76: #define WRITE   01      /* write access to variable */
  77: #define READ    02      /* read access */
  78: 
  79: #define CHANGED 01      /* low bit is used to show modification */
  80: #define PUBLIC  1       /* public access rights */
  81: #define PRIVATE 03      /* private to definer */
  82: #define ROOT    05      /* root defined */
  83: 
  84: #define TRUE    1
  85: #define FALSE   0
  86: 
  87: #define ENVIRON 020     /* initialize out of the environment */
  88: #define IREMOTE 040     /* initialize out of remote structure */
  89: #define INIT    0100        /* static data space used for initialization */
  90: #define TMASK   017
  91: 
  92: /*
  93:  * Definition of ACU line description
  94:  */
  95: typedef
  96:     struct {
  97:         char    *acu_name;
  98:         int (*acu_dialer)();
  99:         int (*acu_disconnect)();
 100:         int (*acu_abort)();
 101:     }
 102:     acu_t;
 103: 
 104: #define equal(a, b) (strcmp(a,b)==0)/* A nice function to string compare */
 105: 
 106: /*
 107:  * variable manipulation stuff --
 108:  *   if we defined the value entry in value_t, then we couldn't
 109:  *   initialize it in vars.c, so we cast it as needed to keep lint
 110:  *   happy.
 111:  */
 112: typedef
 113:     union {
 114:         int zz_number;
 115:         short   zz_boolean;
 116:         char    zz_character;
 117:         int *zz_address;
 118:     }
 119:     zzhack;
 120: 
 121: #define value(v)    vtable[v].v_value
 122: 
 123: #define boolean(v)  ((((zzhack *)(&(v))))->zz_boolean)
 124: #define number(v)   ((((zzhack *)(&(v))))->zz_number)
 125: #define character(v)    ((((zzhack *)(&(v))))->zz_character)
 126: #define address(v)  ((((zzhack *)(&(v))))->zz_address)
 127: 
 128: /*
 129:  * Escape command table definitions --
 130:  *   lookup in this table is performed when ``escapec'' is recognized
 131:  *   at the begining of a line (as defined by the eolmarks variable).
 132: */
 133: 
 134: typedef
 135:     struct {
 136:         char    e_char;     /* char to match on */
 137:         char    e_flags;    /* experimental, priviledged */
 138:         char    *e_help;    /* help string */
 139:         int     (*e_func)();    /* command */
 140:     }
 141:     esctable_t;
 142: 
 143: #define NORM    00      /* normal protection, execute anyone */
 144: #define EXP 01      /* experimental, mark it with a `*' on help */
 145: #define PRIV    02      /* priviledged, root execute only */
 146: 
 147: extern int  vflag;      /* verbose during reading of .tiprc file */
 148: extern value_t  vtable[];   /* variable table */
 149: 
 150: #ifndef ACULOG
 151: #define logent(a, b, c, d)
 152: #define loginit()
 153: #endif
 154: 
 155: /*
 156:  * Definition of indices into variable table so
 157:  *  value(DEFINE) turns into a static address.
 158:  */
 159: 
 160: #define BEAUTIFY    0
 161: #define BAUDRATE    1
 162: #define DIALTIMEOUT 2
 163: #define EOFREAD     3
 164: #define EOFWRITE    4
 165: #define EOL     5
 166: #define ESCAPE      6
 167: #define EXCEPTIONS  7
 168: #define FORCE       8
 169: #define FRAMESIZE   9
 170: #define HOST        10
 171: #define LOG     11
 172: #define PHONES      12
 173: #define PROMPT      13
 174: #define RAISE       14
 175: #define RAISECHAR   15
 176: #define RECORD      16
 177: #define REMOTE      17
 178: #define SCRIPT      18
 179: #define TABEXPAND   19
 180: #define VERBOSE     20
 181: #define SHELL       21
 182: #define HOME        22
 183: #define ECHOCHECK   23
 184: #define DISCONNECT  24
 185: #define TAND        25
 186: #define LDELAY      26
 187: #define CDELAY      27
 188: #define ETIMEOUT    28
 189: #define RAWFTP      29
 190: #define HALFDUPLEX  30
 191: #define LECHO       31
 192: #define PARITY      32
 193: 
 194: #define NOVAL   ((value_t *)NULL)
 195: #define NOACU   ((acu_t *)NULL)
 196: #define NOSTR   ((char *)NULL)
 197: #define NOFILE  ((FILE *)NULL)
 198: #define NOPWD   ((struct passwd *)0)
 199: 
 200: struct sgttyb   arg;        /* current mode of local terminal */
 201: struct sgttyb   defarg;     /* initial mode of local terminal */
 202: struct tchars   tchars;     /* current state of terminal */
 203: struct tchars   defchars;   /* initial state of terminal */
 204: struct ltchars  ltchars;    /* current local characters of terminal */
 205: struct ltchars  deflchars;  /* initial local characters of terminal */
 206: 
 207: FILE    *fscript;       /* FILE for scripting */
 208: 
 209: int fildes[2];      /* file transfer synchronization channel */
 210: int repdes[2];      /* read process sychronization channel */
 211: int FD;         /* open file descriptor to remote host */
 212: int AC;         /* open file descriptor to dialer (v831 only) */
 213: int vflag;          /* print .tiprc initialization sequence */
 214: int sfd;            /* for ~< operation */
 215: int pid;            /* pid of tipout */
 216: uid_t   uid, euid;      /* real and effective user id's */
 217: gid_t   gid, egid;      /* real and effective group id's */
 218: int stop;           /* stop transfer session flag */
 219: int quit;           /* same; but on other end */
 220: int intflag;        /* recognized interrupt */
 221: int stoprompt;      /* for interrupting a prompt session */
 222: int timedout;       /* ~> transfer timedout */
 223: int cumode;         /* simulating the "cu" program */
 224: 
 225: char    fname[80];      /* file name buffer for ~< */
 226: char    copyname[80];       /* file name buffer for ~> */
 227: char    ccc;            /* synchronization character */
 228: char    ch;         /* for tipout */
 229: char    *uucplock;      /* name of lock file for uucp's */
 230: 
 231: int odisc;              /* initial tty line discipline */
 232: extern  int disc;           /* current tty discpline */
 233: 
 234: extern  char *ctrl();
 235: extern  char *ctime();
 236: extern  long time();
 237: extern  struct passwd *getpwuid();
 238: extern  char *getlogin();
 239: extern  char *vinterp();
 240: extern  char *getenv();
 241: extern  char *rindex();
 242: extern  char *index();
 243: extern  char *malloc();
 244: extern  char *connect();

Defined variables

AC defined in line 212; never used
AT defined in line 33; used 2 times
BR defined in line 42; used 13 times
CL defined in line 54; used 3 times
CM defined in line 29; used 4 times
CU defined in line 32; used 13 times
DI defined in line 35; used 2 times
DL defined in line 53; used 3 times
DU defined in line 45; used 9 times
DV defined in line 27; used 18 times
EL defined in line 28; used 2 times
ES defined in line 47; used 3 times
ET defined in line 55; used 3 times
EX defined in line 48; used 4 times
FO defined in line 49; used 3 times
FS defined in line 43; used 4 times
HD defined in line 56; used 2 times
HO defined in line 40; used 3 times
IE defined in line 30; used 2 times
OE defined in line 31; used 2 times
PA defined in line 36; used 3 times
PH defined in line 38; used 5 times
PR defined in line 52; used 3 times
RC defined in line 50; used 3 times
RE defined in line 51; used 4 times
RM defined in line 39; used 1 times
arg defined in line 200; used 11 times
ccc defined in line 227; used 10 times
ch defined in line 228; never used
copyname defined in line 226; used 8 times
cumode defined in line 223; used 4 times
defarg defined in line 201; used 3 times
defchars defined in line 203; used 7 times
deflchars defined in line 205; used 3 times
egid defined in line 217; used 3 times
euid defined in line 216; used 3 times
fildes defined in line 209; used 10 times
fname defined in line 225; used 3 times
gid defined in line 217; used 5 times
intflag defined in line 220; never used
ltchars defined in line 204; used 6 times
odisc defined in line 231; used 4 times
pid defined in line 215; used 12 times
quit defined in line 219; used 5 times
sfd defined in line 214; used 2 times
stop defined in line 218; used 8 times
stoprompt defined in line 221; used 4 times
tchars defined in line 202; used 8 times
timedout defined in line 222; used 6 times
uid defined in line 216; used 7 times
vflag declared in line 147; defined in line 213; used 2 times

Defined macros

BAUDRATE defined in line 161; used 2 times
BEAUTIFY defined in line 160; used 7 times
BOOL defined in line 72; used 10 times
CDELAY defined in line 187; used 2 times
CHANGED defined in line 79; used 15 times
CHAR defined in line 74; used 4 times
DIALTIMEOUT defined in line 162; never used
DISCONNECT defined in line 184; used 1 times
ECHOCHECK defined in line 183; used 6 times
ENVIRON defined in line 87; used 5 times
EOFREAD defined in line 163; used 2 times
EOFWRITE defined in line 164; used 1 times
EOL defined in line 165; used 1 times
ESCAPE defined in line 166; used 3 times
ETIMEOUT defined in line 188; used 2 times
EXCEPTIONS defined in line 167; used 2 times
EXP defined in line 144; used 1 times
FORCE defined in line 168; used 1 times
FRAMESIZE defined in line 169; used 1 times
HALFDUPLEX defined in line 190; used 3 times
HOME defined in line 182; used 2 times
HOST defined in line 170; used 11 times
INIT defined in line 89; used 19 times
IREMOTE defined in line 88; used 16 times
LDELAY defined in line 186; used 2 times
LECHO defined in line 191; used 3 times
LOG defined in line 171; used 2 times
NOACU defined in line 195; used 4 times
NOFILE defined in line 197; used 1 times
NOPWD defined in line 198; used 1 times
NORM defined in line 143; used 16 times
NOVAL defined in line 194; used 1 times
NUMBER defined in line 73; used 8 times
PARITY defined in line 192; used 5 times
PHONES defined in line 172; never used
PRIV defined in line 145; used 2 times
PRIVATE defined in line 81; used 1 times
PROMPT defined in line 173; used 1 times
PUBLIC defined in line 80; used 34 times
RAISE defined in line 174; used 4 times
RAISECHAR defined in line 175; used 1 times
RAWFTP defined in line 189; used 8 times
READ defined in line 77; used 35 times
RECORD defined in line 176; used 7 times
REMOTE defined in line 177; never used
ROOT defined in line 82; used 4 times
SHELL defined in line 181; used 7 times
STRING defined in line 71; used 13 times
TABEXPAND defined in line 179; used 2 times
TAND defined in line 185; used 6 times
TMASK defined in line 90; used 2 times
TRUE defined in line 84; used 4 times
WRITE defined in line 76; used 32 times
address defined in line 126; used 1 times
equal defined in line 104; used 11 times
logent defined in line 151; used 10 times
loginit defined in line 152; used 2 times
number defined in line 124; used 13 times
value defined in line 121; used 102 times

Usage of this include

Last modified: 1994-01-11
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 5694
Valid CSS Valid XHTML 1.0 Strict