1 /* G K E R M I T . H -- GNU Kermit header */ 2 /* 3 Author: 4 Frank da Cruz 5 The Kermit Project 6 Columbia University 7 612 West 115th Street 8 New York NY 10025-7799 USA 9 http://www.columbia.edu/kermit/ 10 kermit@columbia.edu 11 12 Copyright (C) 1999, 13 The Trustees of Columbia University in the City of New York. 14 15 This program is free software; you can redistribute it and/or modify 16 it under the terms of the GNU General Public License as published by 17 the Free Software Foundation; either version 2 of the License, or 18 (at your option) any later version. 19 20 This program is distributed in the hope that it will be useful, 21 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 GNU General Public License for more details. 24 25 You should have received a copy of the GNU General Public License 26 along with this program; if not, write to the Free Software 27 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 28 */ 29 30 #ifndef _GKERMIT_H 31 #define _GKERMIT_H 32 33 #include <stdio.h> 34 35 /* Kermit protocol definitions */ 36 37 #define MAXTRY 10 /* Packet retry limit */ 38 39 #ifndef SMALL /* Define small systems here */ 40 #ifdef pdp11 /* PDP-11 (64K address space) */ 41 #define SMALL 42 #endif /* pdp11 */ 43 #endif /* SMALL */ 44 45 #ifdef SMALL /* Buffer sizes for small systems */ 46 47 #define MAXSP 4000 48 #define MAXRP 4000 49 #define DEFRP 1000 50 #define MAXPATHLEN 255 51 #define DEVNAMLEN 64 52 #define MAXRECORD 255 53 54 #else /* 32-bit and 64-bit platforms... */ 55 56 #ifndef MAXSP 57 #define MAXSP 9000 /* Maximum send packet size */ 58 #endif /* MAXSP */ 59 60 #ifndef MAXRP /* Maximum receive packet size */ 61 #define MAXRP 9000 62 #endif /* MAXRP */ 63 64 #ifndef DEFRP /* Default receive packet size */ 65 #define DEFRP 4000 66 #endif /* DEFRP */ 67 68 #endif /* SMALL */ 69 70 #define CTTNAM "/dev/tty" /* Default terminal name */ 71 72 /* Sizes for file/device-name and file i/o buffers */ 73 74 #ifndef MAXPATHLEN /* Maximum file specification length */ 75 #define MAXPATHLEN 1024 76 #endif /* MAXPATHLEN */ 77 78 #ifndef MAXNAMLEN /* Maximum file name length */ 79 #define MAXNAMLEN 256 80 #endif /* MAXNAMLEN */ 81 82 #ifndef DEVNAMLEN /* Maximum device name length */ 83 #define DEVNAMLEN 1024 84 #endif /* DEVNAMLEN */ 85 86 #ifndef MAXRECORD /* Text file input buffer length */ 87 #define MAXRECORD 4080 88 #endif /* MAXRECORD */ 89 90 #ifdef __STDC__ 91 #define VOID void 92 #else 93 #define VOID int 94 #endif /* __STDC__ */ 95 96 /* SVORPOSIX = System V or POSIX */ 97 98 #ifndef SVORPOSIX 99 #ifdef POSIX 100 #define SVORPOSIX 101 #else 102 #ifdef SYSV 103 #define SVORPOSIX 104 #endif /* SYSV */ 105 #endif /* POSIX */ 106 #endif /* SVORPOSIX */ 107 108 /* Signal type */ 109 110 #ifndef SIG_V 111 #ifndef SIG_I 112 #ifdef SVORPOSIX 113 #define SIG_V 114 #else 115 #define SIG_I 116 #endif /* SVORPOSIX */ 117 #endif /* SIG_I */ 118 #endif /* SIG_V */ 119 120 #ifdef SIG_I 121 #define SIGRETURN return(0) 122 #ifndef SIGTYP 123 #define SIGTYP int 124 #endif /* SIGTYP */ 125 #else 126 #ifdef SIG_V 127 #define SIGRETURN return 128 #ifndef SIGTYP 129 #define SIGTYP void 130 #endif /* SIGTYP */ 131 #endif /* SIG_V */ 132 #endif /* SIG_I */ 133 134 /* WHATAMI bit definitions */ 135 136 #define WMI_FMODE 2 /* File transfer mode */ 137 #define WMI_FNAME 4 /* File name conversion */ 138 #define WMI_STREAM 8 /* I have a reliable transport */ 139 #define WMI_CLEAR 16 /* I have a clear channel */ 140 #define WMI_FLAG 32 /* Flag that WHATAMI field is valid */ 141 #define WMI2_XMODE 1 /* Transfer mode auto(0)/manual(1) */ 142 #define WMI2_RECU 2 /* Transfer is recursive */ 143 #define WMI2_FLAG 32 /* Flag that WHATAMI2 field is valid */ 144 145 /* Data types */ 146 147 #ifndef CHAR 148 #define CHAR unsigned char 149 #endif /* CHAR */ 150 151 #ifndef ULONG 152 #define ULONG unsigned long 153 #endif /* ULONG */ 154 155 /* Pointer and character constants */ 156 157 #ifndef NULL 158 #define NULL 0 /* NULL pointer */ 159 #endif /* NULL */ 160 161 #define NUL '\000' /* ASCII NUL character */ 162 #define LF '\012' /* ASCII Linefeed */ 163 #define CR '\015' /* ASCII Carriage Return */ 164 #define SP '\040' /* ASCII space character */ 165 #define DEL 127 /* ASCII DEL */ 166 167 /* Macros */ 168 169 #define tochar(ch) ((ch) + SP ) /* Number to character */ 170 #define xunchar(ch) ((ch) - SP ) /* Character to number */ 171 #define ctl(ch) ((ch) ^ 64 ) /* Controllify/Uncontrollify */ 172 #define zgetc(a) (((--zincnt)>=0) ? ((int)(*zinptr++) & 0xff) : zfillbuf(a)) 173 174 /* Function prototype macro works for both ANSI and K&R C */ 175 176 #ifdef __STDC__ 177 #define _MYPROTOTYPE( func, parms ) func parms 178 #else 179 #define _MYPROTOTYPE( func, parms ) func() 180 #endif /* __STDC__ */ 181 182 /* Function prototypes */ 183 184 _MYPROTOTYPE( SIGTYP doexit, (int) ); 185 _MYPROTOTYPE( VOID sysinit, (void) ); 186 _MYPROTOTYPE( char dopar, (char) ); 187 _MYPROTOTYPE( VOID tmsg, (char *) ); 188 _MYPROTOTYPE( VOID tmsgl, (char *) ); 189 _MYPROTOTYPE( int ttopen, (char *) ); 190 _MYPROTOTYPE( int ttpkt, (int) ); 191 _MYPROTOTYPE( int ttres, (void) ); 192 _MYPROTOTYPE( int ttinl, (char *, int, int, char, char, int) ); 193 _MYPROTOTYPE( int ttol, (char *, int) ); 194 _MYPROTOTYPE( int ttchk, (void) ); 195 _MYPROTOTYPE( int ttflui, (void) ); 196 _MYPROTOTYPE( long zchki, (char *) ); 197 _MYPROTOTYPE( int zchko, (char *) ); 198 _MYPROTOTYPE( int zopeni, (char *) ); 199 _MYPROTOTYPE( int zopeno, (char *) ); 200 _MYPROTOTYPE( int zclosi, (void) ); 201 _MYPROTOTYPE( int zcloso, (int) ); 202 _MYPROTOTYPE( int zfillbuf, (int) ); 203 _MYPROTOTYPE( VOID zltor, (char *, char *, int) ); 204 _MYPROTOTYPE( int zrtol, (char *, char *, int, int) ); 205 _MYPROTOTYPE( int zbackup, (char *) ); 206 207 _MYPROTOTYPE( int input, (void) ); /* Input to state machine (like lex) */ 208 _MYPROTOTYPE( VOID nxtpkt, (void) ); /* Increment packet number */ 209 _MYPROTOTYPE( int ack, (void) ); /* Send empty Acknowledgment */ 210 _MYPROTOTYPE( int ack1, (char *) ); /* Send data-bearing Acknowledgment */ 211 _MYPROTOTYPE( int nak, (void) ); /* Send Negative acknowledgement */ 212 _MYPROTOTYPE( VOID tinit, (void) ); /* Transaction initialization */ 213 _MYPROTOTYPE( VOID errpkt, (char *) ); /* Send error packet */ 214 _MYPROTOTYPE( int sinit, (char) ); /* Send S packet */ 215 _MYPROTOTYPE( int sfile, (void) ); /* Send File header packet */ 216 _MYPROTOTYPE( int sdata, (void) ); /* Send Data packet */ 217 _MYPROTOTYPE( int seof, (char *) ); /* Send EOF packet */ 218 _MYPROTOTYPE( int seot, (void) ); /* Send EOT packet */ 219 _MYPROTOTYPE( int resend, (void) ); /* Resend a packet */ 220 _MYPROTOTYPE( int decode, (int) ); /* Decode packet data field */ 221 _MYPROTOTYPE( int encstr, (char *) ); /* Encode a memory string */ 222 _MYPROTOTYPE( int gattr, (char *) ); /* Get incoming file attributes */ 223 _MYPROTOTYPE( int sattr, (void) ); /* Send file attributes */ 224 _MYPROTOTYPE( VOID ginit, (void) ); /* Transaction initialization */ 225 _MYPROTOTYPE( int scmd, (char, char *) ); /* Send command to Kermit server */ 226 _MYPROTOTYPE( VOID rinit, (void) ); /* Receive initialization */ 227 _MYPROTOTYPE( int gnfile, (void) ); /* Get next filename */ 228 _MYPROTOTYPE( int rcvfil, (void) ); /* Receive incoming file */ 229 _MYPROTOTYPE( VOID spar, (char *) ); /* Set parameters from other Kermit */ 230 _MYPROTOTYPE( char *rpar, (void) ); /* Tell parameters to other Kermit */ 231 _MYPROTOTYPE( VOID usage, (void) ); /* Give usage message */ 232 _MYPROTOTYPE( int gwart, (void) ); /* State table switcher */ 233 234 /* Externs */ 235 236 #ifdef ERRNO_H 237 #include <errno.h> 238 #else 239 extern int errno; 240 #endif /* ERRNO_H */ 241 #ifndef _GKERMIT_C 242 extern int debug; 243 #endif /* _GKERMIT_C */ 244 245 #endif /* _GKERMIT_H */ 246 247 /* End gkermit.h */ 248