* Bill Joy UCB September 1977
char shellname
[30] "/bin/sh";
char ttytype
[30] "unknown";
"autoindent", "ai", ONOFF
, 0, 0,
"autoprint", "ap", ONOFF
, 1, 1,
"beautify", NONAME
, ONOFF
, 0, 0,
"directory", "dir", STRING
, 0, direct
,
"editany", "ea", ONOFF
, 0, 0,
"edited", NONAME
, ONOFF
, 1, 0,
"errorbells", "eb", ONOFF
, 1, 1,
"fork", NONAME
, ONOFF
, 1, 1,
"home", NONAME
, STRING
, 0, home
,
"hush", NONAME
, ONOFF
, 0, 0,
"ignorecase", "ic", ONOFF
, 0, 0,
"indicateul", "iu", ONOFF
, 0, 0,
"list", NONAME
, ONOFF
, 0, 0,
"magic", NONAME
, ONOFF
, 1, 1,
"mode", NONAME
, NUMERIC
, 0644, 0644,
NOTify
, NONAME
, NUMERIC
, 5, 5,
"number", NONAME
, ONOFF
, 0, 0,
"open", NONAME
, ONOFF
, 1, 1,
"optimize", NONAME
, ONOFF
, 1, 1,
"printall", "pa", ONOFF
, 0, 0,
"prompt", NONAME
, ONOFF
, 1, 1,
"scroll", NONAME
, NUMERIC
, 12, 12,
"shell", "sh", STRING
, 0, shellname
,
"shiftwidth", "sw", NUMERIC
, 8, 8,
"sticky", NONAME
, ONOFF
, 0, 0,
"ttytype", "tty", TERM
, 0, ttytype
,
"terse", NONAME
, ONOFF
, 0, 0,
"visualmessage","vm", ONOFF
, 0, 0,
"window", NONAME
, NUMERIC
, 23, 23,
"wrap", NONAME
, ONOFF
, 1, 1,
register struct varbl
*vp
;
if (endcmd(peekchar())) {
error("Blank required@before options in set");
error("No previous command");
error("No alternate filename");
error("No current filename");
error("Can't assign@to %c with set", c
);
lprintf("%c=%s\n", c
, op
);
error("Unexpected %c|Expected option name, found %c", c
);
if (op
>= &optname
[ONMSZ
])
error("No such option|Ridiculously long option name");
if (!eq(op
, NOTify
) && op
[0] == 'n' && op
[1] == 'o') {
for (vp
= varbls
; vp
->vname
[0]; vp
++)
if (eq(vp
->vname
[0], op
) || eq(vp
->vname
[1], op
))
error("%s: No such option@- 'set all' gives all option values", op
);
if (no
&& vp
->vtype
!= ONOFF
)
error("Option %s is not a toggle", vp
->vname
[0]);
error("= expected@before number for numeric option %s", vp
->vname
[0]);
error("Digits required@after = when assigning numeric option");
if (peekchar() == '0' || vp
== &varbls
[MODE
])
c
= c
* base
+ getchar() - '0';
while (digit(peekchar()));
error("Missing =@in assignment to option %s", vp
->vname
[0]);
if (op
>= &optname
[ONMSZ
])
error("String too long@in option assignment");
strcpy(vp
->vvalue
, optname
);
} while (!endcmd(peekchar()));
return (white(peekchar()) || endcmd(peekchar()));
register struct varbl
*vp
;
for (vp
= varbls
; vp
->vname
[0] != NIL
; vp
++) {
if (!all
) switch (vp
->vtype
) {
if (vp
->vvalue
== vp
->vdefault
)
register struct varbl
*vp
;
printf("%s%s\n", vp
->vvalue
? "" : "no", vp
->vname
[0]);
if (vp
== &varbls
[MODE
]) {
printf("%s=%d\n", vp
->vname
[0], vp
->vvalue
);
printf("%s=%s\n", vp
->vname
[0], vp
->vvalue
);
register struct varbl
*vp
;
for (vp
= varbls
; vp
->vname
[0]; vp
++)
if (vp
->vtype
== NUMERIC
|| vp
->vtype
== ONOFF
)
vp
->vvalue
= vp
->vdefault
;