infcall: refactor 'call_function_by_hand_dummy'
[deliverable/binutils-gdb.git] / readline / examples / rlfe / os.h
CommitLineData
b585a9fa
EZ
1/* Copyright (c) 1993-2002
2 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
3 * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
4 * Copyright (c) 1987 Oliver Laumann
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program (see the file COPYING); if not, write to the
18 * Free Software Foundation, Inc.,
19 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20 *
21 ****************************************************************
775e241e 22 * $Id: os.h,v 1.10 1994/05/31 12:32:22 mlschroe Exp $ FAU
b585a9fa
EZ
23 */
24
25#include <stdio.h>
26#include <errno.h>
27
28#include <sys/param.h>
29
30/* In strict ANSI mode, HP-UX machines define __hpux but not hpux */
31#if defined(__hpux) && !defined(hpux)
32# define hpux
33#endif
34
35#if defined(__bsdi__) || defined(__386BSD__) || defined(_CX_UX) || defined(hpux) || defined(_IBMR2) || defined(linux)
36# include <signal.h>
37#endif /* __bsdi__ || __386BSD__ || _CX_UX || hpux || _IBMR2 || linux */
38
39#ifdef ISC
40# ifdef ENAMETOOLONG
41# undef ENAMETOOLONG
42# endif
43# ifdef ENOTEMPTY
44# undef ENOTEMPTY
45# endif
46# include <sys/bsdtypes.h>
47# include <net/errno.h>
48#endif
49
50#ifdef sun
51# define getpgrp __getpgrp
52# define exit __exit
53#endif
54#ifdef POSIX
55# include <unistd.h>
56# if defined(__STDC__)
57# include <stdlib.h>
58# endif /* __STDC__ */
59#endif /* POSIX */
60#ifdef sun
61# undef getpgrp
62# undef exit
63#endif /* sun */
64
65#ifndef linux /* all done in <errno.h> */
66extern int errno;
67#endif /* linux */
68#ifndef HAVE_STRERROR
69/* No macros, please */
70#undef strerror
71#endif
72
73#if !defined(SYSV) && !defined(linux)
74# ifdef NEWSOS
75# define strlen ___strlen___
76# include <strings.h>
77# undef strlen
78# else /* NEWSOS */
79# include <strings.h>
80# endif /* NEWSOS */
81#else /* SYSV */
82# if defined(SVR4) || defined(NEWSOS)
83# define strlen ___strlen___
84# include <string.h>
85# undef strlen
86# if !defined(NEWSOS) && !defined(__hpux)
87 extern size_t strlen(const char *);
88# endif
89# else /* SVR4 */
90# include <string.h>
91# endif /* SVR4 */
92#endif /* SYSV */
93
94#ifdef USEVARARGS
95# if defined(__STDC__)
96# include <stdarg.h>
97# define VA_LIST(var) va_list var;
98# define VA_DOTS ...
99# define VA_DECL
100# define VA_START(ap, fmt) va_start(ap, fmt)
101# define VA_ARGS(ap) ap
102# define VA_END(ap) va_end(ap)
103# else
104# include <varargs.h>
105# define VA_LIST(var) va_list var;
106# define VA_DOTS va_alist
107# define VA_DECL va_dcl
108# define VA_START(ap, fmt) va_start(ap)
109# define VA_ARGS(ap) ap
110# define VA_END(ap) va_end(ap)
111# endif
112#else
113# define VA_LIST(var)
114# define VA_DOTS p1, p2, p3, p4, p5, p6
115# define VA_DECL unsigned long VA_DOTS;
116# define VA_START(ap, fmt)
117# define VA_ARGS(ap) VA_DOTS
118# define VA_END(ap)
119# undef vsnprintf
120# define vsnprintf xsnprintf
121#endif
122
123#if !defined(sun) && !defined(B43) && !defined(ISC) && !defined(pyr) && !defined(_CX_UX)
124# include <time.h>
125#endif
126#include <sys/time.h>
127
128#ifdef M_UNIX /* SCO */
129# include <sys/stream.h>
130# include <sys/ptem.h>
131# define ftruncate(fd, s) chsize(fd, s)
132#endif
133
134#ifdef SYSV
135# define index strchr
136# define rindex strrchr
137# define bzero(poi,len) memset(poi,0,len)
138# define bcmp memcmp
139# define killpg(pgrp,sig) kill( -(pgrp), sig)
140#endif
141
142#ifndef HAVE_GETCWD
143# define getcwd(b,l) getwd(b)
144#endif
145
146#ifndef USEBCOPY
147# ifdef USEMEMMOVE
148# define bcopy(s,d,len) memmove(d,s,len)
149# else
150# ifdef USEMEMCPY
151# define bcopy(s,d,len) memcpy(d,s,len)
152# else
153# define NEED_OWN_BCOPY
154# define bcopy xbcopy
155# endif
156# endif
157#endif
158
159#ifdef hpux
160# define setreuid(ruid, euid) setresuid(ruid, euid, -1)
161# define setregid(rgid, egid) setresgid(rgid, egid, -1)
162#endif
163
164#if defined(HAVE_SETEUID) || defined(HAVE_SETREUID)
165# define USE_SETEUID
166#endif
167
168#if !defined(HAVE__EXIT) && !defined(_exit)
169#define _exit(x) exit(x)
170#endif
171
172#ifndef HAVE_UTIMES
173# define utimes utime
174#endif
175
176#ifdef BUILTIN_TELNET
177# include <netinet/in.h>
178# include <arpa/inet.h>
179#endif
180
181#if defined(USE_LOCALE) && (!defined(HAVE_SETLOCALE) || !defined(HAVE_STRFTIME))
182# undef USE_LOCALE
183#endif
184
185/*****************************************************************
186 * terminal handling
187 */
188
cc88a640 189#if defined (POSIX) || defined (__FreeBSD__)
b585a9fa
EZ
190# include <termios.h>
191# ifdef hpux
192# include <bsdtty.h>
193# endif /* hpux */
194# ifdef NCCS
195# define MAXCC NCCS
196# else
197# define MAXCC 256
198# endif
199#else /* POSIX */
200# ifdef TERMIO
201# include <termio.h>
202# ifdef NCC
203# define MAXCC NCC
204# else
205# define MAXCC 256
206# endif
207# ifdef CYTERMIO
208# include <cytermio.h>
209# endif
210# else /* TERMIO */
775e241e
TT
211# if defined (HAVE_SGTTY_H)
212# include <sgtty.h>
213# endif
b585a9fa
EZ
214# endif /* TERMIO */
215#endif /* POSIX */
216
217#ifndef VDISABLE
218# ifdef _POSIX_VDISABLE
219# define VDISABLE _POSIX_VDISABLE
220# else
221# define VDISABLE 0377
222# endif /* _POSIX_VDISABLE */
223#endif /* !VDISABLE */
224
225
226/* on sgi, regardless of the stream head's read mode (RNORM/RMSGN/RMSGD)
227 * TIOCPKT mode causes data loss if our buffer is too small (IOSIZE)
228 * to hold the whole packet at first read().
229 * (Marc Boucher)
230 *
231 * matthew green:
232 * TIOCPKT is broken on dgux 5.4.1 generic AViiON mc88100
233 *
234 * Joe Traister: On AIX4, programs like irc won't work if screen
235 * uses TIOCPKT (select fails to return on pty read).
236 */
237#if defined(sgi) || defined(DGUX) || defined(_IBMR2)
238# undef TIOCPKT
239#endif
240
241/* linux ncurses is broken, we have to use our own tputs */
242#if defined(linux) && defined(TERMINFO)
243# define tputs xtputs
244#endif
245
246/* Alexandre Oliva: SVR4 style ptys don't work with osf */
247#ifdef __osf__
248# undef HAVE_SVR4_PTYS
249#endif
250
251/*****************************************************************
252 * utmp handling
253 */
254
255#ifdef GETUTENT
256 typedef char *slot_t;
257#else
258 typedef int slot_t;
259#endif
260
261#if defined(UTMPOK) || defined(BUGGYGETLOGIN)
262# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
263# include <utmpx.h>
264# define UTMPFILE UTMPX_FILE
265# define utmp utmpx
266# define getutent getutxent
267# define getutid getutxid
268# define getutline getutxline
269# define pututline pututxline
270# define setutent setutxent
271# define endutent endutxent
272# define ut_time ut_xtime
273# else /* SVR4 */
274# include <utmp.h>
275# endif /* SVR4 */
276# ifdef apollo
277 /*
278 * We don't have GETUTENT, so we dig into utmp ourselves.
279 * But we save the permanent filedescriptor and
280 * open utmp just when we need to.
281 * This code supports an unsorted utmp. jw.
282 */
283# define UTNOKEEP
284# endif /* apollo */
285
286# ifndef UTMPFILE
287# ifdef UTMP_FILE
288# define UTMPFILE UTMP_FILE
289# else
290# ifdef _PATH_UTMP
291# define UTMPFILE _PATH_UTMP
292# else
293# define UTMPFILE "/etc/utmp"
294# endif /* _PATH_UTMP */
295# endif
296# endif
297
298#endif /* UTMPOK || BUGGYGETLOGIN */
299
300#if !defined(UTMPOK) && defined(USRLIMIT)
301# undef USRLIMIT
302#endif
303
304#ifdef LOGOUTOK
305# ifndef LOGINDEFAULT
306# define LOGINDEFAULT 0
307# endif
308#else
309# ifdef LOGINDEFAULT
310# undef LOGINDEFAULT
311# endif
312# define LOGINDEFAULT 1
313#endif
314
315
316/*****************************************************************
317 * file stuff
318 */
319
320#ifndef F_OK
321#define F_OK 0
322#endif
323#ifndef X_OK
324#define X_OK 1
325#endif
326#ifndef W_OK
327#define W_OK 2
328#endif
329#ifndef R_OK
330#define R_OK 4
331#endif
332
333#ifndef S_IFIFO
334#define S_IFIFO 0010000
335#endif
336#ifndef S_IREAD
337#define S_IREAD 0000400
338#endif
339#ifndef S_IWRITE
340#define S_IWRITE 0000200
341#endif
342#ifndef S_IEXEC
343#define S_IEXEC 0000100
344#endif
345
346#if defined(S_IFIFO) && defined(S_IFMT) && !defined(S_ISFIFO)
347#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
348#endif
349#if defined(S_IFSOCK) && defined(S_IFMT) && !defined(S_ISSOCK)
350#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
351#endif
352#if defined(S_IFCHR) && defined(S_IFMT) && !defined(S_ISCHR)
353#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
354#endif
355#if defined(S_IFDIR) && defined(S_IFMT) && !defined(S_ISDIR)
356#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
357#endif
358#if defined(S_IFLNK) && defined(S_IFMT) && !defined(S_ISLNK)
359#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
360#endif
361
362/*
363 * SunOS 4.1.3: `man 2V open' has only one line that mentions O_NOBLOCK:
364 *
365 * O_NONBLOCK Same as O_NDELAY above.
366 *
367 * on the very same SunOS 4.1.3, I traced the open system call and found
368 * that an open("/dev/ttyy08", O_RDWR|O_NONBLOCK|O_NOCTTY) was blocked,
369 * whereas open("/dev/ttyy08", O_RDWR|O_NDELAY |O_NOCTTY) went through.
370 *
371 * For this simple reason I now favour O_NDELAY. jw. 4.5.95
372 */
373#if defined(sun) && !defined(SVR4)
374# undef O_NONBLOCK
375#endif
376
377#if !defined(O_NONBLOCK) && defined(O_NDELAY)
378# define O_NONBLOCK O_NDELAY
379#endif
380
381#if !defined(FNBLOCK) && defined(FNONBLOCK)
382# define FNBLOCK FNONBLOCK
383#endif
384#if !defined(FNBLOCK) && defined(FNDELAY)
385# define FNBLOCK FNDELAY
386#endif
387#if !defined(FNBLOCK) && defined(O_NONBLOCK)
388# define FNBLOCK O_NONBLOCK
389#endif
390
391#ifndef POSIX
392#undef mkfifo
393#define mkfifo(n,m) mknod(n,S_IFIFO|(m),0)
394#endif
395
396#if !defined(HAVE_LSTAT) && !defined(lstat)
397# define lstat stat
398#endif
399
400/*****************************************************************
401 * signal handling
402 */
403
404#ifdef SIGVOID
405# define SIGRETURN
406# define sigret_t void
407#else
408# define SIGRETURN return 0;
409# define sigret_t int
410#endif
411
412/* Geeeee, reverse it? */
413#if defined(SVR4) || (defined(SYSV) && defined(ISC)) || defined(_AIX) || defined(linux) || defined(ultrix) || defined(__386BSD__) || defined(__bsdi__) || defined(POSIX) || defined(NeXT)
414# define SIGHASARG
415#endif
416
417#ifdef SIGHASARG
418# define SIGPROTOARG (int)
419# define SIGDEFARG (sigsig) int sigsig;
420# define SIGARG 0
421#else
422# define SIGPROTOARG (void)
423# define SIGDEFARG ()
424# define SIGARG
425#endif
426
427#ifndef SIGCHLD
428#define SIGCHLD SIGCLD
429#endif
430
431#if defined(POSIX) || defined(hpux)
432# define signal xsignal
433#else
434# ifdef USESIGSET
435# define signal sigset
436# endif /* USESIGSET */
437#endif
438
439/* used in screen.c and attacher.c */
440#ifndef NSIG /* kbeal needs these w/o SYSV */
441# define NSIG 32
442#endif /* !NSIG */
443
444
445/*****************************************************************
446 * Wait stuff
447 */
448
449#if (!defined(sysV68) && !defined(M_XENIX)) || defined(NeXT) || defined(M_UNIX)
450# include <sys/wait.h>
451#endif
452
453#ifndef WTERMSIG
454# ifndef BSDWAIT /* if wait is NOT a union: */
455# define WTERMSIG(status) (status & 0177)
456# else
457# define WTERMSIG(status) status.w_T.w_Termsig
458# endif
459#endif
460
461#ifndef WSTOPSIG
462# ifndef BSDWAIT /* if wait is NOT a union: */
463# define WSTOPSIG(status) ((status >> 8) & 0377)
464# else
465# define WSTOPSIG(status) status.w_S.w_Stopsig
466# endif
467#endif
468
469/* NET-2 uses WCOREDUMP */
470#if defined(WCOREDUMP) && !defined(WIFCORESIG)
471# define WIFCORESIG(status) WCOREDUMP(status)
472#endif
473
474#ifndef WIFCORESIG
475# ifndef BSDWAIT /* if wait is NOT a union: */
476# define WIFCORESIG(status) (status & 0200)
477# else
478# define WIFCORESIG(status) status.w_T.w_Coredump
479# endif
480#endif
481
482#ifndef WEXITSTATUS
483# ifndef BSDWAIT /* if wait is NOT a union: */
484# define WEXITSTATUS(status) ((status >> 8) & 0377)
485# else
486# define WEXITSTATUS(status) status.w_T.w_Retcode
487# endif
488#endif
489
490
491/*****************************************************************
492 * select stuff
493 */
494
775e241e 495#if defined(M_XENIX) || defined(M_UNIX) || defined(_SEQUENT_) || defined (__INTERIX)
b585a9fa
EZ
496#include <sys/select.h> /* for timeval + FD... */
497#endif
498
499/*
500 * SunOS 3.5 - Tom Schmidt - Micron Semiconductor, Inc - 27-Jul-93
501 * tschmidt@vax.micron.com
502 */
503#ifndef FD_SET
504# ifndef SUNOS3
505typedef struct fd_set { int fds_bits[1]; } fd_set;
506# endif
507# define FD_ZERO(fd) ((fd)->fds_bits[0] = 0)
508# define FD_SET(b, fd) ((fd)->fds_bits[0] |= 1 << (b))
509# define FD_ISSET(b, fd) ((fd)->fds_bits[0] & 1 << (b))
510# define FD_SETSIZE 32
511#endif
512
513
514/*****************************************************************
515 * user defineable stuff
516 */
517
518#ifndef TERMCAP_BUFSIZE
519# define TERMCAP_BUFSIZE 2048
520#endif
521
522#ifndef MAXPATHLEN
523# define MAXPATHLEN 1024
524#endif
525
526/*
527 * you may try to vary this value. Use low values if your (VMS) system
528 * tends to choke when pasting. Use high values if you want to test
529 * how many characters your pty's can buffer.
530 */
531#define IOSIZE 4096
This page took 0.882281 seconds and 4 git commands to generate.