xref: /rk3399_rockchip-uboot/common/zglobal.h (revision a1b93f02ebd48103fc78ead6796463f81657c3a7)
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