58 lines
1.2 KiB
Text
58 lines
1.2 KiB
Text
record r, s;
|
|
integer c;
|
|
file f;
|
|
list l;
|
|
text an, d, k;
|
|
|
|
an = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
|
|
f.affix("tmp/config");
|
|
|
|
while ((c = f.peek) ^ -1) {
|
|
integer removed;
|
|
|
|
f.side(" \t\r");
|
|
c = f.peek;
|
|
removed = c == ';';
|
|
if (removed) {
|
|
f.pick;
|
|
f.side(" \t\r");
|
|
c = f.peek;
|
|
}
|
|
c = place(an, c);
|
|
if (-1 < c && c < 52) {
|
|
f.near(an, k);
|
|
if (removed) {
|
|
r[k] = "false";
|
|
} else {
|
|
f.side(" \t\r");
|
|
if (f.peek == '=') {
|
|
f.pick;
|
|
f.side(" \t\r");
|
|
}
|
|
f.ever(",#\n", d);
|
|
d = bb_drop(d, " \r\t");
|
|
if (f.peek != ',') {
|
|
r[k] = ~d ? d : "true";
|
|
} else {
|
|
f.news(l, 0, 0, ",");
|
|
lf_push(l, d);
|
|
for (c, d in l) {
|
|
l[c] = bb_drop(d, " \r\t").bf_drop(" \r\t").string;
|
|
}
|
|
s.put(k, l);
|
|
f.seek(-1, SEEK_CURRENT);
|
|
}
|
|
}
|
|
}
|
|
|
|
f.slip;
|
|
}
|
|
|
|
r.wcall(o_, 0, 2, ": ", "\n");
|
|
|
|
for (k, l in s) {
|
|
o_(k, ": ");
|
|
l.ucall(o_, 0, ", ");
|
|
o_("\n");
|
|
}
|