xref: /titanic_50/usr/src/lib/libshell/common/include/io.h (revision 3e14f97f673e8a630f076077de35afdd43dc1587)
1da2e3ebdSchin /***********************************************************************
2da2e3ebdSchin *                                                                      *
3da2e3ebdSchin *               This software is part of the ast package               *
4*3e14f97fSRoger A. Faulkner *          Copyright (c) 1982-2010 AT&T Intellectual Property          *
5da2e3ebdSchin *                      and is licensed under the                       *
6da2e3ebdSchin *                  Common Public License, Version 1.0                  *
77c2fbfb3SApril Chin *                    by AT&T Intellectual Property                     *
8da2e3ebdSchin *                                                                      *
9da2e3ebdSchin *                A copy of the License is available at                 *
10da2e3ebdSchin *            http://www.opensource.org/licenses/cpl1.0.txt             *
11da2e3ebdSchin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12da2e3ebdSchin *                                                                      *
13da2e3ebdSchin *              Information and Software Systems Research               *
14da2e3ebdSchin *                            AT&T Research                             *
15da2e3ebdSchin *                           Florham Park NJ                            *
16da2e3ebdSchin *                                                                      *
17da2e3ebdSchin *                  David Korn <dgk@research.att.com>                   *
18da2e3ebdSchin *                                                                      *
19da2e3ebdSchin ***********************************************************************/
20da2e3ebdSchin #pragma prototyped
21da2e3ebdSchin /*
22da2e3ebdSchin  *	UNIX shell
23da2e3ebdSchin  *	David Korn
24da2e3ebdSchin  *
25da2e3ebdSchin  */
26da2e3ebdSchin 
27da2e3ebdSchin #include	<ast.h>
28da2e3ebdSchin #include	<sfio.h>
29da2e3ebdSchin 
30da2e3ebdSchin #ifndef IOBSIZE
31da2e3ebdSchin #   define  IOBSIZE	SF_BUFSIZE
32da2e3ebdSchin #endif /* IOBSIZE */
33da2e3ebdSchin #define IOMAXTRY	20
34da2e3ebdSchin 
35da2e3ebdSchin #ifndef SF_CLOSING
36da2e3ebdSchin #define SF_CLOSING	SF_CLOSE
37da2e3ebdSchin #endif
38da2e3ebdSchin #ifndef SF_APPENDWR
39da2e3ebdSchin #define SF_APPENDWR	SF_APPEND
40da2e3ebdSchin #endif
41da2e3ebdSchin 
42da2e3ebdSchin /* used for output of shell errors */
43da2e3ebdSchin #define ERRIO		2
44da2e3ebdSchin 
45da2e3ebdSchin #define IOREAD		001
46da2e3ebdSchin #define IOWRITE		002
47da2e3ebdSchin #define IODUP 		004
48da2e3ebdSchin #define IOSEEK		010
49da2e3ebdSchin #define IONOSEEK	020
50da2e3ebdSchin #define IOTTY 		040
51da2e3ebdSchin #define IOCLEX 		0100
52da2e3ebdSchin #define IOCLOSE		(IOSEEK|IONOSEEK)
53da2e3ebdSchin 
54da2e3ebdSchin #define IOSUBSHELL	0x8000	/* must be larger than any file descriptor */
55da2e3ebdSchin 
56da2e3ebdSchin /*
57da2e3ebdSchin  * The remainder of this file is only used when compiled with shell
58da2e3ebdSchin  */
59da2e3ebdSchin 
60da2e3ebdSchin #if KSHELL
61da2e3ebdSchin 
62da2e3ebdSchin #ifndef ARG_RAW
63da2e3ebdSchin     struct ionod;
64da2e3ebdSchin #endif /* !ARG_RAW */
65da2e3ebdSchin 
66da2e3ebdSchin #define sh_inuse(f2)	(sh.fdptrs[f2])
67da2e3ebdSchin 
687c2fbfb3SApril Chin extern int	sh_iocheckfd(Shell_t*,int);
697c2fbfb3SApril Chin extern void 	sh_ioinit(Shell_t*);
70da2e3ebdSchin extern int 	sh_iomovefd(int);
717c2fbfb3SApril Chin extern int	sh_iorenumber(Shell_t*,int,int);
72da2e3ebdSchin extern void 	sh_pclose(int[]);
737c2fbfb3SApril Chin extern void 	sh_iorestore(Shell_t*,int,int);
74da2e3ebdSchin #if defined(__EXPORT__) && defined(_BLD_DLL) && defined(_BLD_shell)
75da2e3ebdSchin    __EXPORT__
76da2e3ebdSchin #endif
777c2fbfb3SApril Chin extern Sfio_t 	*sh_iostream(Shell_t*,int);
787c2fbfb3SApril Chin extern int	sh_redirect(Shell_t*,struct ionod*,int);
797c2fbfb3SApril Chin extern void 	sh_iosave(Shell_t *, int,int,char*);
807c2fbfb3SApril Chin extern void 	sh_iounsave(Shell_t*);
81da2e3ebdSchin extern int	sh_chkopen(const char*);
82da2e3ebdSchin extern int	sh_ioaccess(int,int);
83da2e3ebdSchin extern int	sh_devtofd(const char*);
84da2e3ebdSchin extern int	sh_source(Shell_t*, Sfio_t*, const char*);
85da2e3ebdSchin 
86da2e3ebdSchin /* the following are readonly */
87da2e3ebdSchin extern const char	e_pexists[];
88da2e3ebdSchin extern const char	e_query[];
89da2e3ebdSchin extern const char	e_history[];
90da2e3ebdSchin extern const char	e_argtype[];
91da2e3ebdSchin extern const char	e_create[];
92da2e3ebdSchin extern const char	e_tmpcreate[];
93da2e3ebdSchin extern const char	e_exists[];
94da2e3ebdSchin extern const char	e_file[];
9534f9b3eeSRoland Mainz extern const char	e_redirect[];
96da2e3ebdSchin extern const char	e_formspec[];
97da2e3ebdSchin extern const char	e_badregexp[];
98da2e3ebdSchin extern const char	e_open[];
99da2e3ebdSchin extern const char	e_notseek[];
100da2e3ebdSchin extern const char	e_noread[];
101da2e3ebdSchin extern const char	e_badseek[];
1027c2fbfb3SApril Chin extern const char	e_badwrite[];
103da2e3ebdSchin extern const char	e_badpattern[];
104da2e3ebdSchin extern const char	e_toomany[];
105da2e3ebdSchin extern const char	e_pipe[];
106da2e3ebdSchin extern const char	e_unknown[];
107da2e3ebdSchin extern const char	e_devnull[];
108da2e3ebdSchin extern const char	e_profile[];
109da2e3ebdSchin extern const char	e_sysprofile[];
110da2e3ebdSchin #if SHOPT_SYSRC
111da2e3ebdSchin extern const char	e_sysrc[];
112da2e3ebdSchin #endif
113da2e3ebdSchin #if SHOPT_BASH
114da2e3ebdSchin #if SHOPT_SYSRC
115da2e3ebdSchin extern const char	e_bash_sysrc[];
116da2e3ebdSchin #endif
117da2e3ebdSchin extern const char	e_bash_rc[];
118da2e3ebdSchin extern const char	e_bash_login[];
119da2e3ebdSchin extern const char	e_bash_logout[];
120da2e3ebdSchin extern const char	e_bash_profile[];
121da2e3ebdSchin #endif
122da2e3ebdSchin extern const char	e_stdprompt[];
123da2e3ebdSchin extern const char	e_supprompt[];
124da2e3ebdSchin extern const char	e_ambiguous[];
125da2e3ebdSchin #endif /* KSHELL */
126