1 /* U S E R O P T I O N - H A N D L I N G */
17 You fouled up! MINIDFSIZE has to be at least 10 or the compiler will not
18 recognize some keywords!
29 options[text[-1]]++; /* flags, debug options etc. */
32 -i: largest value of set of integer
33 -u, -U: allow underscore in identifier
36 -A: range checks for array references
37 and many more if DEBUG
47 case 'i': { /* largest value of set of integer */
50 max_intset = txt2int(&t);
52 if( max_intset <= (arith) 0 || *t ) {
53 error("bad -i flag : use -i<num>");
59 case 'M': { /* maximum identifier length */
62 idfsize = txt2int(&t);
64 if( idfsize <= 0 || *t ) {
65 fatal("malformed -M option");
68 if( idfsize > IDFSIZE ) {
70 warning("maximum identifier length is %d", IDFSIZE);
72 if( idfsize < MINIDFSIZE ) {
74 warning("minimum identifier length is %d", MINIDFSIZE);
79 /* case 'u': /* underscore allowed in identifiers */
80 /* class('_') = STIDF;
85 case 'V' : { /* set object sizes and alignment requirements */
86 /* syntax : -V[ [w|i|l|f|p] size? [.alignment]? ]* */
92 while( c = *text++ ) {
98 if( *(text = t) == '.' ) {
103 if( !strindex("wilfpS", c) )
104 error("-V: bad type indicator %c\n", c);
119 case 'p': /* pointer */
122 case 'S': /* structure */
141 case 'p': /* pointer */
142 pointer_align = align;
144 case 'S': /* initial record alignment */
145 struct_align = align;
159 /* the integer pointed to by *tp is read, while increasing
160 *tp; the resulting value is yielded.
162 register int val = 0;
165 while( ch = **tp, ch >= '0' && ch <= '9' ) {
166 val = val * 10 + ch - '0';