ren: output \x request only once in diversions
[neatroff.git] / xroff.c
blobed4ec68b38b7398cc633f7cb529760777707bd7a
1 /*
2 * neatroff troff clone
4 * Copyright (C) 2012-2013 Ali Gholami Rudi <ali at rudi dot ir>
6 * This program is released under the modified BSD license.
7 */
8 #include <stdarg.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include "xroff.h"
13 static void g_init(void)
15 n_o = SC_IN;
16 n_p = SC_IN * 11;
19 static void compile(void)
21 out("s%d\n", n_s);
22 out("f%d\n", n_f);
23 render();
24 out("V%d\n", n_p);
27 void errmsg(char *fmt, ...)
29 va_list ap;
30 va_start(ap, fmt);
31 vfprintf(stderr, fmt, ap);
32 va_end(ap);
35 int main(int argc, char **argv)
37 int i;
38 char path[PATHLEN];
39 dev_open(TROFFROOT "/font/devutf");
40 env_init();
41 tr_init();
42 g_init();
43 for (i = 1; i < argc; i++) {
44 if (argv[i][0] != '-' || !argv[i][0])
45 break;
46 if (argv[i][1] == 'm') {
47 sprintf(path, TROFFROOT "/tmac/tmac.%s", argv[i] + 2);
48 in_queue(path);
51 if (i == argc)
52 in_queue(NULL); /* reading from standard input */
53 for (; i < argc; i++)
54 in_queue(!strcmp("-", argv[i]) ? NULL : argv[i]);
55 str_set(REG('.', 'P'), TROFFROOT);
56 compile();
57 env_free();
58 dev_close();
59 return 0;