diff options
Diffstat (limited to 'src/cmd/htmlroff/t6.c')
-rw-r--r-- | src/cmd/htmlroff/t6.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/cmd/htmlroff/t6.c b/src/cmd/htmlroff/t6.c new file mode 100644 index 00000000..88a06954 --- /dev/null +++ b/src/cmd/htmlroff/t6.c @@ -0,0 +1,74 @@ +#include "a.h" + +/* + * Section 6 - line length and indenting. + */ + +/* set line length */ +void +ll(int v) +{ + if(v == 0) + v = getnr(L(".l0")); + nr(L(".l0"), getnr(L(".l"))); + nr(L(".l"), v); +} +void +r_ll(int argc, Rune **argv) +{ + if(argc < 2) + ll(0); + else if(argv[1][0] == '+') + ll(getnr(L(".l"))+evalscale(argv[1]+1, 'v')); + else if(argv[1][0] == '-') + ll(getnr(L(".l"))-evalscale(argv[1]+1, 'v')); + else + ll(evalscale(argv[1], 'm')); + if(argc > 2) + warn("extra arguments to .ll"); +} + +void +in(int v) +{ + nr(L(".i0"), getnr(L(".i"))); + nr(L(".i"), v); + /* XXX */ +} +void +r_in(int argc, Rune **argv) +{ + if(argc < 2) + in(getnr(L(".i0"))); + else if(argv[1][0] == '+') + in(getnr(L(".i"))+evalscale(argv[1]+1, 'm')); + else if(argv[1][0] == '-') + in(getnr(L(".i"))-evalscale(argv[1]+1, 'm')); + else + in(evalscale(argv[1], 'm')); + if(argc > 3) + warn("extra arguments to .in"); +} + +void +ti(int v) +{ + nr(L(".ti"), v); +} +void +r_ti(int argc, Rune **argv) +{ + USED(argc); + ti(evalscale(argv[1], 'm')); +} + +void +t6init(void) +{ + addreq(L("ll"), r_ll, -1); + addreq(L("in"), r_in, -1); + addreq(L("ti"), r_ti, 1); + + nr(L(".l"), eval(L("6.5i"))); +} + |