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