BSD 3 development
[unix-history] / usr / src / cmd / pi / yyoptions.c
CommitLineData
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 */
19options()
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}