xref: /csrg-svn/local/toolchest/ksh/sh/io.h (revision 35147)
1*35147Smarc /*
2*35147Smarc 
3*35147Smarc  *      Copyright (c) 1984, 1985, 1986 AT&T
4*35147Smarc  *      All Rights Reserved
5*35147Smarc 
6*35147Smarc  *      THIS IS UNPUBLISHED PROPRIETARY SOURCE
7*35147Smarc  *      CODE OF AT&T.
8*35147Smarc  *      The copyright notice above does not
9*35147Smarc  *      evidence any actual or intended
10*35147Smarc  *      publication of such source code.
11*35147Smarc 
12*35147Smarc  */
13*35147Smarc /* @(#)io.h	1.1 */
14*35147Smarc 
15*35147Smarc /*
16*35147Smarc  *	UNIX shell
17*35147Smarc  *	S. R. Bourne
18*35147Smarc  *	rewritten by David Korn
19*35147Smarc  *
20*35147Smarc  */
21*35147Smarc 
22*35147Smarc #ifndef _NFILE		/* This is true for BSD 4.3 */
23*35147Smarc #define _NFILE	20
24*35147Smarc #define _N_STATIC_IOBS	3
25*35147Smarc #endif	/* _NFILE */
26*35147Smarc 
27*35147Smarc /* used for input and output of shell */
28*35147Smarc #define FCIO	19	/* history file */
29*35147Smarc #define INIO	18	/* saved standard ioput */
30*35147Smarc #define TMPIO	17	/* used for command substitution */
31*35147Smarc #define CINPIPE 16	/* inpipe for cooperating process */
32*35147Smarc #define COTPIPE 15	/* outpipe for cooperating process */
33*35147Smarc #define MAXFILES 10	/* maximum number of saved open files */
34*35147Smarc 
35*35147Smarc /*io nodes*/
36*35147Smarc #define USERIO	10
37*35147Smarc #define IOUFD	15
38*35147Smarc #define IODOC	16
39*35147Smarc #define IOPUT	32
40*35147Smarc #define IOAPP	64
41*35147Smarc #define IOMOV	128
42*35147Smarc #define IORDW	256
43*35147Smarc #define IOSTRIP 512
44*35147Smarc #define INPIPE	0
45*35147Smarc #define OTPIPE	1
46*35147Smarc #define DUPFLG	0100
47*35147Smarc 
48*35147Smarc #define TMPSIZ		20
49*35147Smarc #define F_STRING	((unsigned char)_NFILE)	/* file number for incore files */
50*35147Smarc #define F_INFINITE	0x7fff			/* effectively infinite */
51*35147Smarc 
52*35147Smarc /* temp files and io */
53*35147Smarc /* SHELL file structure */
54*35147Smarc struct fileblk
55*35147Smarc {
56*35147Smarc 	FILE		*fdes;
57*35147Smarc 	unsigned	flin;
58*35147Smarc 	char		**feval;
59*35147Smarc 	SHFILE		fstak;
60*35147Smarc };
61*35147Smarc 
62*35147Smarc #ifdef _N_STATIC_IOBS
63*35147Smarc extern FILE	*file_fd();
64*35147Smarc extern FILE	_myiob[];
65*35147Smarc #else
66*35147Smarc #define	file_fd(n)	(&_iob[n])
67*35147Smarc #endif /* _N_STATIC_IOBS */
68*35147Smarc #define input	(standin->fdes)
69*35147Smarc #define fisopen(fd)	((fd)->_flag)
70*35147Smarc #define fiswrite(fd)	((fd)->_flag&(_IOWRT|_IORW))
71*35147Smarc #define fisread(fd)	((fd)->_flag&(_IOREAD|_IORW))
72*35147Smarc #define fnobuff(fd)	(((fd)->_flag&_IONBF)||(fd)->_base==NULL)
73*35147Smarc #define nextchar(fd)	(*((fd)->_ptr))
74*35147Smarc #ifndef clearerr
75*35147Smarc #define clearerr(fd)	((fd)->_flag &= ~(_IOERR|_IOEOF))
76*35147Smarc #endif
77*35147Smarc 
78*35147Smarc struct ionod
79*35147Smarc {
80*35147Smarc 	int	iofile;
81*35147Smarc 	char	*ioname;
82*35147Smarc 	char	*iolink;
83*35147Smarc 	IOPTR	ionxt;
84*35147Smarc 	IOPTR	iolst;
85*35147Smarc };
86*35147Smarc 
87*35147Smarc #define	IOTYPE	(sizeof(struct ionod))
88*35147Smarc 
89*35147Smarc struct filesave
90*35147Smarc {
91*35147Smarc 	short	org_fd;
92*35147Smarc 	short	dup_fd;
93*35147Smarc };
94*35147Smarc 
95*35147Smarc 
96*35147Smarc extern void	rmtemp();
97*35147Smarc extern FILE	*frenumber();
98*35147Smarc extern unsigned char _sibuf[];
99*35147Smarc extern unsigned char _sobuf[];
100*35147Smarc extern FILEBLK	stdfile;
101*35147Smarc extern char	tmpout[];
102*35147Smarc 
103*35147Smarc /* the following are readonly */
104*35147Smarc extern MSG	badcreate;
105*35147Smarc extern MSG	badfile;
106*35147Smarc extern MSG	badopen;
107*35147Smarc extern MSG	devnull;
108*35147Smarc extern MSG	endoffile;
109*35147Smarc extern MSG	nomorefiles;
110*35147Smarc extern MSG	piperr;
111*35147Smarc extern MSG	profile;
112*35147Smarc #ifdef BSD_4_2
113*35147Smarc extern MSG	prohibited;
114*35147Smarc #endif /* BSD_4_2 */
115*35147Smarc extern MSG	sysprofile;
116*35147Smarc extern MSG	unknown;
117*35147Smarc #ifdef SUID_EXEC
118*35147Smarc extern MSG	devfdNN;
119*35147Smarc extern MSG	suid_exec;
120*35147Smarc #endif /* SUID_EXEC */
121*35147Smarc 
122*35147Smarc #ifdef apollo
123*35147Smarc /* only a fool would have changed these names */
124*35147Smarc #define	_IOREAD		_SIRD
125*35147Smarc #define _IOWRT		_SIWR
126*35147Smarc #define	_IOLBF		_SINLB
127*35147Smarc #define	_IONBF		_SIUNB
128*35147Smarc #define	_IOMYBUF	_SIBIG
129*35147Smarc #define _IORW		_SIUP
130*35147Smarc #define _IOEOF		_SIEOF
131*35147Smarc #define	_IOERR		_SIERR
132*35147Smarc #define	_flsbuf		_flshbuf
133*35147Smarc #define	_file		_fd
134*35147Smarc #endif	/* apollo */
135