Commit | Line | Data |
---|---|---|
58ac8f52 CH |
1 | /* Copyright (c) 1979 Regents of the University of California */ |
2 | # | |
3 | /* | |
4 | * pi - Pascal interpreter code translator | |
5 | * | |
6 | * Charles Haley, Bill Joy UCB | |
7 | * Version 1.1 February 1978 | |
8 | */ | |
9 | ||
10 | #include "whoami" | |
11 | #include "0.h" | |
12 | #include "yy.h" | |
13 | ||
14 | /* | |
15 | * Options processes the option | |
16 | * strings which can appear in | |
17 | * comments and returns the next character. | |
18 | */ | |
19 | options() | |
20 | { | |
21 | register c, ch; | |
22 | register char *optp; | |
23 | int ok; | |
24 | ||
25 | c = readch(); | |
26 | if (c != '$') | |
27 | return (c); | |
28 | do { | |
29 | ch = c = readch(); | |
30 | switch (c) { | |
31 | case 'b': | |
32 | optp = &opts['b'-'a']; | |
33 | goto optdig; | |
34 | case 'x': | |
35 | optp = &opts['x'-'a']; | |
36 | goto optdig; | |
37 | optdig: | |
38 | c = readch(); | |
39 | if (!digit(c)) | |
40 | return (c); | |
41 | *optp = c - '0'; | |
42 | c = readch(); | |
43 | break; | |
44 | default: | |
45 | if (c < 'a' || c > 'z') | |
46 | return (c); | |
47 | optp = &opts[c-'a']; | |
48 | c = readch(); | |
49 | if (c == '+') { | |
50 | *optp = 1; | |
51 | c = readch(); | |
52 | } else if (c == '-') { | |
53 | *optp = 0; | |
54 | c = readch(); | |
55 | } else | |
56 | return (c); | |
57 | break; | |
58 | } | |
59 | #ifdef PI0 | |
60 | send(ROSET, ch, *optp); | |
61 | #endif | |
62 | } while (c == ','); | |
63 | if (opts['u'-'a']) | |
64 | setuflg(); | |
65 | return (c); | |
66 | } |