Annotation of embedaddon/lrzsz/src/zglobal.h, revision 1.1.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>