setgid to group "write" so that terminals need not be world writable
[unix-history] / usr / src / usr.bin / dc / dc.h
CommitLineData
6fbc8861
SL
1/* dc.h 1.2 83/03/30 */
2
0a5802fd
RH
3#define FATAL 0
4#define NFATAL 1
5#define BLK sizeof(struct blk)
6#define PTRSZ sizeof(int *)
7#define HEADSZ 1024
8#define STKSZ 100
9#define RDSKSZ 100
10#define TBLSZ 256
11#define ARRAYST 0241
12#define MAXIND 2048
13#define NL 1
14#define NG 2
15#define NE 3
16#define length(p) ((p)->wt-(p)->beg)
17#define rewind(p) (p)->rd=(p)->beg
18#define create(p) (p)->rd = (p)->wt = (p)->beg
19#define fsfile(p) (p)->rd = (p)->wt
20#define truncate(p) (p)->wt = (p)->rd
21#define sfeof(p) (((p)->rd==(p)->wt)?1:0)
22#define sfbeg(p) (((p)->rd==(p)->beg)?1:0)
23#define sungetc(p,c) *(--(p)->rd)=c
24#ifdef interdata
25#define NEGBYTE 0200
26#define MASK (-1 & ~0377)
27#define sgetc(p) ( ((p)->rd==(p)->wt) ? EOF :( ((*(p)->rd & NEGBYTE) != 0) ? ( *(p)->rd++ | MASK): *(p)->rd++ ))
28#define slookc(p) ( ((p)->rd==(p)->wt) ? EOF :( ((*(p)->rd & NEGBYTE) != 0) ? (*(p)->rd | MASK) : *(p)->rd ))
29#define sbackc(p) ( ((p)->rd==(p)->beg) ? EOF :( ((*(--(p)->rd) & NEGBYTE) != 0) ? (*(p)->rd | MASK): *(p)->rd ))
30#endif
31#ifndef interdata
32#define sgetc(p) (((p)->rd==(p)->wt)?EOF:*(p)->rd++)
33#define slookc(p) (((p)->rd==(p)->wt)?EOF:*(p)->rd)
34#define sbackc(p) (((p)->rd==(p)->beg)?EOF:*(--(p)->rd))
35#endif
36#define sputc(p,c) {if((p)->wt==(p)->last)more(p); *(p)->wt++ = c; }
37#define salterc(p,c) {if((p)->rd==(p)->last)more(p); *(p)->rd++ = c; if((p)->rd>(p)->wt)(p)->wt=(p)->rd;}
38#define sunputc(p) (*( (p)->rd = --(p)->wt))
39#define zero(p) for(pp=(p)->beg;pp<(p)->last;)*pp++='\0'
40#define OUTC(x) {printf("%c",x); if(--count == 0){printf("\\\n"); count=ll;} }
41#define TEST2 {if((count -= 2) <=0){printf("\\\n");count=ll;}}
42#define EMPTY if(stkerr != 0){printf("stack empty\n"); continue; }
43#define EMPTYR(x) if(stkerr!=0){pushp(x);printf("stack empty\n");continue;}
44#define EMPTYS if(stkerr != 0){printf("stack empty\n"); return(1);}
45#define EMPTYSR(x) if(stkerr !=0){printf("stack empty\n");pushp(x);return(1);}
46#define error(p) {printf(p); continue; }
47#define errorrt(p) {printf(p); return(1); }
48struct blk {
49 char *rd;
50 char *wt;
51 char *beg;
52 char *last;
53};
54struct blk *hfree;
55struct blk *getwd();
56struct blk *lookwd();
57struct blk *getdec();
58struct blk *morehd();
59
60struct blk *arg1, *arg2;
61int svargc;
62char savk;
63char **svargv;
64int dbg;
65int ifile;
66FILE *curfile;
67struct blk *scalptr, *basptr, *tenptr, *inbas;
68struct blk *sqtemp, *chptr, *strptr, *divxyz;
69struct blk *stack[STKSZ];
70struct blk **stkptr,**stkbeg;
71struct blk **stkend;
72int stkerr;
73int lastchar;
74struct blk *readstk[RDSKSZ];
75struct blk **readptr;
76struct blk *rem;
77int k;
78struct blk *irem;
79int skd,skr;
80struct blk *pop(),*readin(),*add0(),*mult();
81struct blk *scalint();
82struct blk *removc();
83struct blk *add(),*div(),*removr();
84struct blk *exp();
85struct blk *sqrt();
86struct blk *salloc(),*copy();
87struct blk *scale();
88int neg;
89struct sym {
90 struct sym *next;
91 struct blk *val;
92} symlst[TBLSZ];
93struct sym *stable[TBLSZ];
94struct sym *sptr,*sfree;
95struct wblk {
96 struct blk **rdw;
97 struct blk **wtw;
98 struct blk **begw;
99 struct blk **lastw;
100};
101FILE *fsave;
102long rel;
103long nbytes;
104long all;
105long headmor;
106long obase;
107int fw,fw1,ll;
108int (*outdit)();
109int bigot(),hexot();
110int logo;
111int log10;
112int count;
113char *pp;
114int (*signal())();
115int onintr();
116char *malloc();
117char *nalloc();
118char *realloc();
119char *dummy;