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