home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Utilities / uupc 3.1 / Files in common / dcp.h next >
Encoding:
C/C++ Source or Header  |  1994-09-01  |  6.7 KB  |  220 lines  |  [TEXT/KAHL]

  1. /* DCP a uucp clone. Copyright Richard H. Lamb 1985,1986,1987 */
  2. #include <stdio.h>        /* Standard UNIX  definitions */
  3.  
  4. #include "host.h"        /* Host specific definitions */
  5. #include "pcmail.h"        /* Differentiates pcmail from uupc */
  6.  
  7.  
  8. /* FILE * FOPEN(); */
  9. /* int CREAT(); */
  10.  
  11. #define SYSTEMS        "systems"
  12. #define LOGFILE        "LOGFILE"
  13. #define SYSLOG        "SYSLOG"
  14. #define SCHEDULE    "schedule"
  15.  
  16. #define MSGTIME         20
  17. #define MAXPACK         4096
  18. #define MAXPACKCODE     8
  19. #define DFLPACK            64
  20.  
  21. #define PORTBUFSIZ        5120
  22. #define CMDBUFSIZE        4096
  23.  
  24. #define NFLDS            60
  25.  
  26. #define MAX_XFER_RETRIES 3
  27.  
  28. #define ERROR    100
  29. #define EMPTY    101
  30.  
  31. #define    SLAVE    0
  32. #define    MASTER    1
  33.  
  34. #ifndef TRUE
  35. #define TRUE   (-1)
  36. #define FALSE   0
  37. #endif
  38.  
  39. /*#define SAME    0*/
  40. #define RETRY    -2
  41. #define FAILED    -1
  42. #define OK        0
  43. #define EQUAL    0
  44.  
  45.  
  46. /* L.sys field defines */
  47.  
  48. #define    FLD_REMOTE    0
  49. #define    FLD_CCTIME    1
  50. #define    FLD_DEVICE    2
  51. #define    FLD_TYPE    3
  52. #define    FLD_SPEED    4
  53. #define    FLD_PHONE    5
  54. #define    FLD_PROTO    6
  55. #define    FLD_EXPECT    7
  56. #define FLD_SEND    8
  57.  
  58. /**/
  59. typedef int    (*procref)();
  60.  
  61. typedef struct {
  62.     char    type;
  63.     procref a;
  64.     procref b;
  65.     procref c;
  66.     procref d;
  67.     procref e;
  68.     procref f;
  69.     procref g;
  70.     procref h;
  71.     procref i;
  72. } Proto;
  73.  
  74. /* the various protocols available. Add here for others */
  75. extern procref          getpkt, sendpkt, openpk, closepk, filepkt, eofpkt,
  76.                         getmsg, sendmsg, sendresp;
  77.  
  78. extern int    ggetpkt(), gsendpkt(), gopenpk(), gclosepk(), gfilepkt(), geofpkt(),
  79.                         gwrmsg(), grdmsg(), gsendresp();
  80. extern int    fgetpkt(), fsendpkt(), fopenpk(), fclosepk(), ffilepkt(), feofpkt(),
  81.                         fwrmsg(), frdmsg(), fsendresp();
  82. /*
  83. extern int    kgetpkt(), ksendpkt(), kopenpk(), kclosepk();
  84. extern int    rgetpkt(), rsendpkt(), ropenpk(), rclosepk();
  85. extern int    tgetpkt(), tsendpkt(), topenpk(), tclosepk();
  86. */
  87.  
  88. typedef enum
  89.                 { phantom,          /* Entry not fully initialized      */
  90.                   localhost,        /* This entry is for ourselves      */
  91.                   routed,           /* This entry is actually a path    */
  92.                   gatewayed,        /* This entry is delivered to via   */
  93.                                     /* an external program on local sys */
  94.                   aliasof,          /* This entry is alias of VIA system*/
  95.                   nocall,           /* real host, never called          */
  96.                   inprogress,       /* Call now active                  */
  97.                   callback_req,     /* System must call us back         */
  98.                   dial_failed,      /* Hardcoded auto-dial failed       */
  99.                   script_failed,    /* script in L.SYS failed           */
  100.                   max_retry,        /* Have given up calling this sys   */
  101.                   too_soon,         /* In retry mode, too soon to call  */
  102.                   succeeded,        /* self-explanatory                 */
  103.                   wrong_host,       /* Call out failed, wrong system    */
  104.                   unknown_host,     /* Call in cailed, unknown system   */
  105.                   wrong_time,       /* Unable to call because of time   */
  106.                   last_status }
  107.                         hostatus;
  108.  
  109. struct HostStats {
  110.       time_t ltime;              /* Last time this host was called      */
  111.       time_t lconnect;           /* Last time we actually connected     */
  112.       unsigned long calls;       /* Total number of calls to host       */
  113.       unsigned long connect;     /* Total length of connections to host */
  114.       unsigned long fsent;       /* Total files sent to this host       */
  115.       unsigned long freceived;   /* Total files received from this host */
  116.       unsigned long bsent;       /* Total bytes sent to this host       */
  117.       unsigned long breceived;   /* Total bytes received from this host */
  118.       unsigned long errors;      /* Total transmission errors noted     */
  119.       unsigned long packets;     /* Total packets exchanged             */
  120.       unsigned long bstart;      /* Bytes sent/rcvd at beginning of file*/
  121.       hostatus save_hstatus;     /* host status, as defined by hostatus */
  122.    };
  123.  
  124. typedef struct {
  125.     time_t time_secs;
  126.     char   name[40];
  127.     char   status[40];
  128.     int    failures;
  129. } status_record;
  130.  
  131. typedef struct {
  132.     int (*Init) (char * whichport, char * speed, char * phone);
  133.     int (*InBuffer) (char * buf, int size);
  134.     int (*OutBuffer) (char * buf, int size);
  135.     int (*Speed) (char *speed);
  136.     int (*Handshake) (int fInx, int fXOn, int fCTS, int xOn, int xOff);
  137.     int (*Setting) (char *speed, int parity, int stopbits, int databits);
  138.     int (*Close) (int dtr);
  139.     int (*SetFlowCtl) (int software, int hardware);
  140.     int (*AllowInterrupts) (int flag);
  141.     int (*Interrupt) (void);
  142.     int (*Purge) (void);
  143.     int (*PutChar) (char ch);
  144.     int (*Write) (char *buf, int count);
  145.     int (*Avail) (void);
  146.     int (*WStr) (char *st);
  147.     int (*Read) (char *byt, int mincount, int maxcount, long int tenths);
  148.     int (*Idle) (void);
  149.     int (*Event) (EventRecord *anEvent);
  150.     int (*Break) (int tenths);
  151.     int (*SetParity) (int dataBits, int parityCode);
  152. } ConnectionHandler;
  153.  
  154. /**/
  155. extern int    pktsize;                /* packet size for this pro*/
  156. extern FILE    *logfile;                /* system log file */
  157. extern FILE    *syslog;                /* system log file */
  158. extern FILE    *fw;                   /* cfile pointer */
  159. extern char    cfile[80];              /* work file pointer */
  160. extern int    remote;                 /* -1 means we're remote*/
  161. extern int maxhops;
  162. extern int sync_timeout;
  163. extern int xfer_retries_left;
  164. extern int PacketTimeout;
  165. extern int MaxErr;
  166. extern int msgtime;
  167. extern int pktsize;         /* packet size for this protocol*/
  168. extern int xfer_bufsize;
  169. extern int    findwork;
  170. extern int xfer_problems;
  171. extern int    del_file_flag;
  172. extern char    fromfile[132];
  173. extern char    rmtfname[132];
  174. extern char    hostfile[132];        /* host version of fromfile */
  175. extern char    tofile[132];
  176. extern char    state;                  /* present state */
  177. extern int    fp;                     /* current disk file ptr */
  178. extern int    size;                   /* nbytes in buff */
  179. extern int  useHardwareFlowControl;
  180. extern FILE    *fsys;
  181. extern char    Rmtname[20];
  182. extern char    rmtname[20];
  183. extern char gotname[20];
  184. extern char gotitfrom[BUFSIZ];
  185. extern char gotfromuser[BUFSIZ];
  186. extern char callcause[64];
  187. extern char    *cctime;
  188. extern char    proto[5];
  189. extern time_t runStartSecs;
  190. extern int        settingsFileRefNum;
  191. extern int    failureCount;
  192. extern ConnectionHandler *currentConnection;
  193. extern long int connectionManagerGestalt;
  194.  
  195.  
  196. extern char sysline[BUFSIZ*2];
  197. extern char s_systems[64];
  198. extern char s_logfile[64];
  199. extern char s_syslog[64];
  200. extern char s_schedule[64];
  201. extern char s_statfile[64];
  202. extern char *flds[NFLDS];
  203. extern int  kflds;
  204.  
  205. extern int    debuglevel;        /* debugging flag */
  206. extern unsigned int    checksum();
  207. extern void zzz(int secs);
  208. extern char *index();
  209. extern char *rindex();
  210.  
  211. extern    char *curdir;
  212.  
  213. #ifdef Upgrade
  214. extern long int systimeout;
  215. #endif Upgrade
  216.  
  217. extern struct HostStats remote_stats;
  218. extern status_record Last;
  219.  
  220.