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