Annotation of embedaddon/lrzsz/src/zglobal.h, revision 1.1
1.1 ! misho 1: #ifndef ZMODEM_GLOBAL_H
! 2: #define ZMODEM_GLOBAL_H
! 3:
! 4: /* zglobal.h - prototypes etcetera for lrzsz
! 5:
! 6: Copyright (C) until 1998 Chuck Forsberg (OMEN Technology Inc)
! 7: Copyright (C) 1994 Matt Porter
! 8: Copyright (C) 1996, 1997 Uwe Ohse
! 9:
! 10: This program is free software; you can redistribute it and/or modify
! 11: it under the terms of the GNU General Public License as published by
! 12: the Free Software Foundation; either version 2, or (at your option)
! 13: any later version.
! 14:
! 15: This program is distributed in the hope that it will be useful,
! 16: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 17: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 18: GNU General Public License for more details.
! 19:
! 20: You should have received a copy of the GNU General Public License
! 21: along with this program; if not, write to the Free Software
! 22: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
! 23: 02111-1307, USA.
! 24: */
! 25:
! 26: #include "config.h"
! 27: #include <sys/types.h>
! 28:
! 29: #ifdef __GNUC__
! 30: # define alloca __builtin_alloca
! 31: # define HAVE_ALLOCA 1
! 32: #else
! 33: # if defined HAVE_ALLOCA_H || defined _LIBC
! 34: # include <alloca.h>
! 35: # else
! 36: # ifdef _AIX
! 37: #pragma alloca
! 38: # else
! 39: # ifndef alloca
! 40: # ifndef __GLIBC__
! 41: char *alloca ();
! 42: # endif
! 43: # endif
! 44: # endif
! 45: # endif
! 46: #endif
! 47:
! 48: #ifndef __P
! 49: #if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
! 50: #define __P(args) args
! 51: #else
! 52: #define __P(args) ()
! 53: #endif /* GCC. */
! 54: #endif /* Not __P. */
! 55:
! 56: #ifdef __STDC__
! 57: #include <stdarg.h>
! 58: #else
! 59: #include <varargs.h>
! 60: #endif
! 61:
! 62: #ifdef TIME_WITH_SYS_TIME
! 63: # include <sys/time.h>
! 64: # include <time.h>
! 65: # define INCLUDED_SYS_TIME
! 66: #else
! 67: # ifdef HAVE_SYS_TIME_H
! 68: # include <sys/time.h>
! 69: # define INCLUDED_SYS_TIME
! 70: # else
! 71: # include <time.h>
! 72: # endif
! 73: #endif
! 74: #ifdef SYS_TIME_WITHOUT_SYS_SELECT
! 75: # ifdef INCLUDED_SYS_TIME
! 76: # undef HAVE_SYS_SELECT_H
! 77: # endif
! 78: #endif
! 79:
! 80:
! 81: #ifdef HAVE_SYS_SELECT_H
! 82: # include <sys/select.h>
! 83: #endif
! 84: #ifdef __BEOS__
! 85: /* BeOS 4.0: sys/select.h is almost completely #ifdefd out */
! 86: #define HAVE_SOCKET_H
! 87: #ifdef HAVE_SOCKET_H
! 88: #include <socket.h>
! 89: #endif
! 90: #endif
! 91:
! 92: #if STDC_HEADERS
! 93: # include <string.h>
! 94: #else
! 95: # ifdef HAVE_STRINGS_H
! 96: # include <strings.h>
! 97: # endif
! 98: # ifndef HAVE_STRCHR
! 99: # define strchr index
! 100: # define strrchr rindex
! 101: # endif
! 102: char *strchr (), *strrchr ();
! 103: # ifndef HAVE_MEMCPY
! 104: # define memcpy(d, s, n) bcopy ((s), (d), (n))
! 105: # define memmove(d, s, n) bcopy ((s), (d), (n))
! 106: # endif
! 107: #endif
! 108:
! 109: #include <sys/stat.h>
! 110:
! 111: /* we need to decide whether readcheck is possible */
! 112: #ifdef HAVE_FCNTL_H
! 113: # include <fcntl.h>
! 114: #endif
! 115: #ifdef HAVE_SYS_IOCTL_H
! 116: # include <sys/ioctl.h>
! 117: #endif
! 118: #ifdef HAVE_RDCHK
! 119: # define READCHECK
! 120: #else
! 121: # ifdef FIONREAD
! 122: # define READCHECK_FIONREAD
! 123: # define READCHECK
! 124: # else
! 125: # ifdef F_GETFL
! 126: # define READCHECK
! 127: # define READCHECK_READS
! 128: # define READCHECK_GETFL
! 129: # endif
! 130: # endif
! 131: #endif
! 132:
! 133: /* used to use #elif, but native braindead hpux 9.00 c compiler didn't
! 134: * understand it */
! 135: #ifdef HAVE_TERMIOS_H
! 136: /* get rid of warnings on SCO ODT 3.2 */
! 137: struct termios;
! 138: # include <termios.h>
! 139: # define USE_TERMIOS
! 140: #else
! 141: # if defined(HAVE_SYS_TERMIOS_H)
! 142: # include <sys/termios.h>
! 143: # define USE_TERMIOS
! 144: # else
! 145: # if defined(HAVE_TERMIO_H)
! 146: # include <termio.h>
! 147: # define USE_TERMIO
! 148: # else
! 149: # if defined(HAVE_SYS_TERMIO_H)
! 150: # include <sys/termio.h>
! 151: # define USE_TERMIO
! 152: # else
! 153: # if defined(HAVE_SGTTY_H)
! 154: # include <sgtty.h>
! 155: # define USE_SGTTY
! 156: # ifdef LLITOUT
! 157: extern long Locmode; /* Saved "local mode" for 4.x BSD "new driver" */
! 158: extern long Locbit; /* Bit SUPPOSED to disable output translations */
! 159: # endif
! 160: # else
! 161: # error neither termio.h nor sgtty.h found. Cannot continue.
! 162: # endif
! 163: # endif
! 164: # endif
! 165: # endif
! 166: #endif
! 167:
! 168: #ifdef USE_SGTTY
! 169: # ifdef TIOCSBRK
! 170: # define CANBREAK
! 171: # endif
! 172: #endif
! 173: #ifdef USE_TERMIO
! 174: # define CANBREAK
! 175: #endif
! 176:
! 177:
! 178:
! 179: /* Take care of NLS matters. */
! 180: #if HAVE_LOCALE_H
! 181: # include <locale.h>
! 182: #endif
! 183: #if !HAVE_SETLOCALE
! 184: # define setlocale(Category, Locale) /* empty */
! 185: #endif
! 186:
! 187: #if ENABLE_NLS
! 188: # include <libintl.h>
! 189: # define _(Text) gettext (Text)
! 190: #else
! 191: # define bindtextdomain(Domain, Directory) /* empty */
! 192: # define textdomain(Domain) /* empty */
! 193: # define _(Text) Text
! 194: #endif
! 195:
! 196: #ifndef ENABLE_SYSLOG
! 197: # undef HAVE_SYSLOG
! 198: #else
! 199: # ifdef HAVE_SYSLOG_H
! 200: # include <syslog.h>
! 201: # else
! 202: # if defined(HAVE_SYS_SYSLOG_H)
! 203: # include <sys/syslog.h>
! 204: # else
! 205: # undef HAVE_SYSLOG
! 206: # endif
! 207: # endif
! 208: #endif
! 209: #ifndef ENABLE_SYSLOG
! 210: # define openlog(name,pid,facility) /* void it */
! 211: # define setlogmask(x) /* void it */
! 212: #else
! 213: extern int enable_syslog;
! 214: #endif
! 215:
! 216: #if defined HAVE_UNISTD_H
! 217: # include <unistd.h>
! 218: #endif
! 219: /* The following is from pathmax.h. */
! 220: /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
! 221: PATH_MAX but might cause redefinition warnings when sys/param.h is
! 222: later included (as on MORE/BSD 4.3). */
! 223: #if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
! 224: # include <limits.h>
! 225: #endif
! 226:
! 227: #ifndef _POSIX_PATH_MAX
! 228: # define _POSIX_PATH_MAX 255
! 229: #endif
! 230:
! 231: #if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
! 232: # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
! 233: #endif
! 234:
! 235: /* Don't include sys/param.h if it already has been. */
! 236: #if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
! 237: # include <sys/param.h>
! 238: #endif
! 239:
! 240: #if !defined(PATH_MAX) && defined(MAXPATHLEN)
! 241: # define PATH_MAX MAXPATHLEN
! 242: #endif
! 243:
! 244: #if !defined(LONG_MAX) && defined(HAVE_LIMITS_H)
! 245: # include <limits.h>
! 246: #endif
! 247:
! 248: #ifndef PATH_MAX
! 249: # define PATH_MAX _POSIX_PATH_MAX
! 250: #endif
! 251:
! 252: #ifdef __GNUC__
! 253:
! 254: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 5)
! 255: # define LRZSZ_ATTRIB_SECTION(x) __attribute__((section(#x)))
! 256: #endif
! 257:
! 258: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
! 259: # define LRZSZ_ATTRIB_CONST __attribute__((__const__))
! 260: #endif
! 261:
! 262: /* gcc.info sagt, noreturn wäre ab 2.5 verfügbar. HPUX-gcc 2.5.8
! 263: * kann es noch nicht - what's this?
! 264: */
! 265: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 5)
! 266: # define LRZSZ_ATTRIB_NORET __attribute__((__noreturn__))
! 267: #endif
! 268:
! 269: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 5)
! 270: # define LRZSZ_ATTRIB_PRINTF(formatnr,firstargnr) \
! 271: __attribute__((__format__ (printf,formatnr,firstargnr)))
! 272: #endif
! 273:
! 274: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 6)
! 275: #define LRZSZ_ATTRIB_UNUSED __attribute__((__unused__))
! 276: #endif
! 277:
! 278: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
! 279: # define LRZSZ_ATTRIB_REGPARM(n) \
! 280: __attribute__((__regparm__ (n)))
! 281: #endif
! 282: #endif /* __GNUC__ */
! 283: #ifndef LRZSZ_ATTRIB_REGPARM
! 284: #define LRZSZ_ATTRIB_REGPARM(n)
! 285: #endif
! 286: #ifndef LRZSZ_ATTRIB_UNUSED
! 287: #define LRZSZ_ATTRIB_UNUSED
! 288: #endif
! 289: #ifndef LRZSZ_ATTRIB_NORET
! 290: #define LRZSZ_ATTRIB_NORET
! 291: #endif
! 292: #ifndef LRZSZ_ATTRIB_CONST
! 293: #define LRZSZ_ATTRIB_CONST
! 294: #endif
! 295: #ifndef LRZSZ_ATTRIB_PRINTF
! 296: #define LRZSZ_ATTRIB_PRINTF(x,y)
! 297: #endif
! 298: #ifndef LRZSZ_ATTRIB_SECTION
! 299: #define LRZSZ_ATTRIB_SECTION(n)
! 300: #endif
! 301: #undef LRZSZ_ATTRIB_SECTION
! 302: #define LRZSZ_ATTRIB_SECTION(x)
! 303: #undef LRZSZ_ATTRIB_REGPARM
! 304: #define LRZSZ_ATTRIB_REGPARM(x)
! 305:
! 306:
! 307: #define OK 0
! 308: #define FALSE 0
! 309: #define TRUE 1
! 310: #define ERROR (-1)
! 311:
! 312: /* Ward Christensen / CP/M parameters - Don't change these! */
! 313: #define ENQ 005
! 314: #define CAN ('X'&037)
! 315: #define XOFF ('s'&037)
! 316: #define XON ('q'&037)
! 317: #define SOH 1
! 318: #define STX 2
! 319: #define EOT 4
! 320: #define ACK 6
! 321: #define NAK 025
! 322: #define CPMEOF 032
! 323: #define WANTCRC 0103 /* send C not NAK to get crc not checksum */
! 324: #define WANTG 0107 /* Send G not NAK to get nonstop batch xmsn */
! 325: #define TIMEOUT (-2)
! 326: #define RCDO (-3)
! 327: #define WCEOT (-10)
! 328:
! 329: #define RETRYMAX 10
! 330:
! 331: #define UNIXFILE 0xF000 /* The S_IFMT file mask bit for stat */
! 332:
! 333: #define DEFBYTL 2000000000L /* default rx file size */
! 334:
! 335: enum zm_type_enum {
! 336: ZM_XMODEM,
! 337: ZM_YMODEM,
! 338: ZM_ZMODEM
! 339: };
! 340:
! 341: struct zm_fileinfo {
! 342: char *fname;
! 343: time_t modtime;
! 344: mode_t mode;
! 345: size_t bytes_total;
! 346: size_t bytes_sent;
! 347: size_t bytes_received;
! 348: size_t bytes_skipped; /* crash recovery */
! 349: int eof_seen;
! 350: };
! 351:
! 352: #define R_BYTESLEFT(x) ((x)->bytes_total-(x)->bytes_received)
! 353:
! 354: extern enum zm_type_enum protocol;
! 355:
! 356: extern const char *program_name; /* the name by which we were called */
! 357: extern int Verbose;
! 358: extern int errors;
! 359: extern int no_timeout;
! 360: extern int Zctlesc; /* Encode control characters */
! 361: extern int under_rsh;
! 362:
! 363: RETSIGTYPE bibi __P ((int n));
! 364:
! 365: #define sendline(c) putchar((c) & 0377)
! 366: #define xsendline(c) putchar(c)
! 367:
! 368: /* zreadline.c */
! 369: extern char *readline_ptr; /* pointer for removing chars from linbuf */
! 370: extern int readline_left; /* number of buffered chars left to read */
! 371: #define READLINE_PF(timeout) \
! 372: (--readline_left >= 0? (*readline_ptr++ & 0377) : readline_internal(timeout))
! 373:
! 374: int readline_internal __P ((unsigned int timeout));
! 375: void readline_purge __P ((void));
! 376: void readline_setup __P ((int fd, size_t readnum,
! 377: size_t buffer_size)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 378:
! 379:
! 380: /* rbsb.c */
! 381: extern int Fromcu;
! 382: extern int Twostop;
! 383: #ifdef READCHECK_READS
! 384: extern unsigned char checked;
! 385: #endif
! 386: extern int iofd;
! 387: extern unsigned Baudrate;
! 388:
! 389: void zperr __P ((const char *fmt, ...));
! 390: void zpfatal __P ((const char *fmt, ...));
! 391: void vfile __P ((const char *format, ...));
! 392: #define vchar(x) putc(x,stderr)
! 393: #define vstring(x) fputs(x,stderr)
! 394:
! 395: #ifdef __GNUC__
! 396: #if __GNUC__ > 1
! 397: #define vstringf(format,args...) fprintf(stderr,format, ##args)
! 398: #endif
! 399: #endif
! 400: #ifndef vstringf
! 401: void vstringf __P ((const char *format, ...));
! 402: #endif
! 403: #define VPRINTF(level,format_args) do {if ((Verbose)>=(level)) \
! 404: vstringf format_args ; } while(0)
! 405:
! 406: /* rbsb.c */
! 407: int from_cu __P ((void)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 408: int rdchk __P ((int fd));
! 409: int io_mode __P ((int fd, int n)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 410: void sendbrk __P ((int fd));
! 411: #define flushmo() fflush(stdout)
! 412: void purgeline __P ((int fd));
! 413: void canit __P ((int fd));
! 414:
! 415:
! 416: /* crctab.c */
! 417: extern unsigned short crctab[256];
! 418: #define updcrc(cp, crc) ( crctab[((crc >> 8) & 255)] ^ (crc << 8) ^ cp)
! 419: extern long cr3tab[];
! 420: #define UPDC32(b, c) (cr3tab[((int)c ^ b) & 0xff] ^ ((c >> 8) & 0x00FFFFFF))
! 421:
! 422: /* zm.c */
! 423: #include "zmodem.h"
! 424: extern unsigned int Rxtimeout; /* Tenths of seconds to wait for something */
! 425: extern int bytes_per_error; /* generate one error around every x bytes */
! 426:
! 427: /* Globals used by ZMODEM functions */
! 428: extern int Rxframeind; /* ZBIN ZBIN32, or ZHEX type of frame received */
! 429: extern int Rxtype; /* Type of header received */
! 430: extern int Zrwindow; /* RX window size (controls garbage count) */
! 431: /* extern int Rxcount; */ /* Count of data bytes received */
! 432: extern char Rxhdr[4]; /* Received header */
! 433: extern char Txhdr[4]; /* Transmitted header */
! 434: extern long Txpos; /* Transmitted file position */
! 435: extern int Txfcs32; /* TURE means send binary frames with 32 bit FCS */
! 436: extern int Crc32t; /* Display flag indicating 32 bit CRC being sent */
! 437: extern int Crc32; /* Display flag indicating 32 bit CRC being received */
! 438: extern int Znulls; /* Number of nulls to send at beginning of ZDATA hdr */
! 439: extern char Attn[ZATTNLEN+1]; /* Attention string rx sends to tx on err */
! 440:
! 441: extern void zsendline __P ((int c));
! 442: extern void zsendline_init __P ((void)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 443: void zsbhdr __P ((int type, char *hdr));
! 444: void zshhdr __P ((int type, char *hdr));
! 445: void zsdata __P ((const char *buf, size_t length, int frameend));
! 446: void zsda32 __P ((const char *buf, size_t length, int frameend));
! 447: int zrdata __P ((char *buf, int length, size_t *received));
! 448: int zgethdr __P ((char *hdr, int eflag, size_t *));
! 449: void stohdr __P ((size_t pos)) LRZSZ_ATTRIB_REGPARM(1);
! 450: long rclhdr __P ((char *hdr)) LRZSZ_ATTRIB_REGPARM(1);
! 451:
! 452: int tcp_server __P ((char *buf)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 453: int tcp_connect __P ((char *buf)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 454: int tcp_accept __P ((int d)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 455:
! 456:
! 457: const char * protname __P ((void)) LRZSZ_ATTRIB_SECTION(lrzsz_rare);
! 458: void lsyslog __P ((int, const char *,...));
! 459:
! 460:
! 461:
! 462:
! 463: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>