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