1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*b30d1939SAndy Fiddaman * Copyright (c) 1982-2012 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html * 11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 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 */ 26*b30d1939SAndy Fiddaman /* 27*b30d1939SAndy Fiddaman * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. 28*b30d1939SAndy Fiddaman */ 29da2e3ebdSchin 30da2e3ebdSchin #include <ast.h> 31da2e3ebdSchin #include <sfio.h> 32da2e3ebdSchin 33da2e3ebdSchin #ifndef IOBSIZE 34*b30d1939SAndy Fiddaman # define IOBSIZE (SF_BUFSIZE*sizeof(char*)) 35da2e3ebdSchin #endif /* IOBSIZE */ 36da2e3ebdSchin #define IOMAXTRY 20 37da2e3ebdSchin 38da2e3ebdSchin #ifndef SF_CLOSING 39da2e3ebdSchin #define SF_CLOSING SF_CLOSE 40da2e3ebdSchin #endif 41da2e3ebdSchin #ifndef SF_APPENDWR 42da2e3ebdSchin #define SF_APPENDWR SF_APPEND 43da2e3ebdSchin #endif 44da2e3ebdSchin 45da2e3ebdSchin /* used for output of shell errors */ 46da2e3ebdSchin #define ERRIO 2 47da2e3ebdSchin 48da2e3ebdSchin #define IOREAD 001 49da2e3ebdSchin #define IOWRITE 002 50da2e3ebdSchin #define IODUP 004 51da2e3ebdSchin #define IOSEEK 010 52da2e3ebdSchin #define IONOSEEK 020 53da2e3ebdSchin #define IOTTY 040 54da2e3ebdSchin #define IOCLEX 0100 55da2e3ebdSchin #define IOCLOSE (IOSEEK|IONOSEEK) 56da2e3ebdSchin 57da2e3ebdSchin #define IOSUBSHELL 0x8000 /* must be larger than any file descriptor */ 58*b30d1939SAndy Fiddaman #define IOPICKFD 0x10000 /* file descriptor number was selected automatically */ 59*b30d1939SAndy Fiddaman #define IOHERESTRING 0x20000 /* allow here documents to be string streams */ 60da2e3ebdSchin 61da2e3ebdSchin /* 62da2e3ebdSchin * The remainder of this file is only used when compiled with shell 63da2e3ebdSchin */ 64da2e3ebdSchin 65da2e3ebdSchin #if KSHELL 66da2e3ebdSchin 67da2e3ebdSchin #ifndef ARG_RAW 68da2e3ebdSchin struct ionod; 69da2e3ebdSchin #endif /* !ARG_RAW */ 70da2e3ebdSchin 717c2fbfb3SApril Chin extern int sh_iocheckfd(Shell_t*,int); 727c2fbfb3SApril Chin extern void sh_ioinit(Shell_t*); 73da2e3ebdSchin extern int sh_iomovefd(int); 747c2fbfb3SApril Chin extern int sh_iorenumber(Shell_t*,int,int); 75da2e3ebdSchin extern void sh_pclose(int[]); 76*b30d1939SAndy Fiddaman extern int sh_rpipe(int[]); 777c2fbfb3SApril Chin extern void sh_iorestore(Shell_t*,int,int); 78da2e3ebdSchin #if defined(__EXPORT__) && defined(_BLD_DLL) && defined(_BLD_shell) 79da2e3ebdSchin __EXPORT__ 80da2e3ebdSchin #endif 817c2fbfb3SApril Chin extern Sfio_t *sh_iostream(Shell_t*,int); 827c2fbfb3SApril Chin extern int sh_redirect(Shell_t*,struct ionod*,int); 837c2fbfb3SApril Chin extern void sh_iosave(Shell_t *, int,int,char*); 84*b30d1939SAndy Fiddaman extern int sh_get_unused_fd(Shell_t* shp, int min_fd); 85*b30d1939SAndy Fiddaman extern int sh_iovalidfd(Shell_t*, int); 86*b30d1939SAndy Fiddaman extern int sh_inuse(Shell_t*, int); 877c2fbfb3SApril Chin extern void sh_iounsave(Shell_t*); 88da2e3ebdSchin extern int sh_chkopen(const char*); 89da2e3ebdSchin extern int sh_ioaccess(int,int); 90da2e3ebdSchin extern int sh_devtofd(const char*); 91*b30d1939SAndy Fiddaman extern int sh_isdevfd(const char*); 92da2e3ebdSchin extern int sh_source(Shell_t*, Sfio_t*, const char*); 93da2e3ebdSchin 94*b30d1939SAndy Fiddaman extern int VALIDATE_FD(Shell_t *, int); 95*b30d1939SAndy Fiddaman 96*b30d1939SAndy Fiddaman #define VALIDATE_FD(shp, fd) \ 97*b30d1939SAndy Fiddaman (((fd) >= (shp)->gd->lim.open_max) ? sh_iovalidfd(shp, fd) : 1) 98*b30d1939SAndy Fiddaman 99*b30d1939SAndy Fiddaman 100da2e3ebdSchin /* the following are readonly */ 101da2e3ebdSchin extern const char e_pexists[]; 102da2e3ebdSchin extern const char e_query[]; 103da2e3ebdSchin extern const char e_history[]; 104da2e3ebdSchin extern const char e_argtype[]; 105da2e3ebdSchin extern const char e_create[]; 106da2e3ebdSchin extern const char e_tmpcreate[]; 107da2e3ebdSchin extern const char e_exists[]; 108da2e3ebdSchin extern const char e_file[]; 10934f9b3eeSRoland Mainz extern const char e_redirect[]; 110da2e3ebdSchin extern const char e_formspec[]; 111da2e3ebdSchin extern const char e_badregexp[]; 112da2e3ebdSchin extern const char e_open[]; 113da2e3ebdSchin extern const char e_notseek[]; 114da2e3ebdSchin extern const char e_noread[]; 115da2e3ebdSchin extern const char e_badseek[]; 1167c2fbfb3SApril Chin extern const char e_badwrite[]; 117da2e3ebdSchin extern const char e_badpattern[]; 118da2e3ebdSchin extern const char e_toomany[]; 119da2e3ebdSchin extern const char e_pipe[]; 120da2e3ebdSchin extern const char e_unknown[]; 121da2e3ebdSchin extern const char e_devnull[]; 122da2e3ebdSchin extern const char e_profile[]; 123da2e3ebdSchin extern const char e_sysprofile[]; 124da2e3ebdSchin #if SHOPT_SYSRC 125da2e3ebdSchin extern const char e_sysrc[]; 126da2e3ebdSchin #endif 127da2e3ebdSchin #if SHOPT_BASH 128da2e3ebdSchin #if SHOPT_SYSRC 129da2e3ebdSchin extern const char e_bash_sysrc[]; 130da2e3ebdSchin #endif 131da2e3ebdSchin extern const char e_bash_rc[]; 132da2e3ebdSchin extern const char e_bash_login[]; 133da2e3ebdSchin extern const char e_bash_logout[]; 134da2e3ebdSchin extern const char e_bash_profile[]; 135da2e3ebdSchin #endif 136da2e3ebdSchin extern const char e_stdprompt[]; 137da2e3ebdSchin extern const char e_supprompt[]; 138da2e3ebdSchin extern const char e_ambiguous[]; 139*b30d1939SAndy Fiddaman 140da2e3ebdSchin #endif /* KSHELL */ 141