4 * Copyright (C) 2012-2014 Ali Gholami Rudi <ali at rudi dot ir>
6 * This program is released under the Modified BSD license.
14 void errmsg(char *fmt
, ...)
18 vfprintf(stderr
, fmt
, ap
);
22 void errdie(char *msg
)
28 void *mextend(void *old
, long oldsz
, long newsz
, int memsz
)
30 void *new = xmalloc(newsz
* memsz
);
31 memcpy(new, old
, oldsz
* memsz
);
32 memset(new + oldsz
* memsz
, 0, (newsz
- oldsz
) * memsz
);
37 void *xmalloc(long len
)
39 void *m
= malloc(len
);
41 errdie("neatroff: malloc() failed\n");
45 static int xopens(char *path
)
47 FILE *filp
= fopen(path
, "r");
54 "Usage: neatroff [options] input\n\n"
56 " -mx \tinclude macro x\n"
57 " -C \tenable compatibility mode\n"
58 " -Tdev \tset output device\n"
59 " -Fdir \tset font directory (" TROFFFDIR
")\n"
60 " -Mdir \tset macro directory (" TROFFMDIR
")\n";
62 int main(int argc
, char **argv
)
65 char *fontdir
= TROFFFDIR
;
66 char *macrodir
= TROFFMDIR
;
70 for (i
= 1; i
< argc
; i
++) {
71 if (argv
[i
][0] != '-' || !argv
[i
][1])
78 snprintf(path
, sizeof(path
), "%s/%s.tmac",
79 macrodir
, argv
[i
] + 2);
81 snprintf(path
, sizeof(path
), "%s/tmac.%s",
82 macrodir
, argv
[i
] + 2);
84 snprintf(path
, sizeof(path
), "%s/%s",
85 macrodir
, argv
[i
] + 2);
89 fontdir
= argv
[i
][2] ? argv
[i
] + 2 : argv
[++i
];
92 macrodir
= argv
[i
][2] ? argv
[i
] + 2 : argv
[++i
];
95 dev
= argv
[i
][2] ? argv
[i
] + 2 : argv
[++i
];
102 if (dev_open(fontdir
, dev
)) {
103 fprintf(stderr
, "neatroff: cannot open device %s\n", dev
);
110 in_queue(NULL
); /* reading from standard input */
111 for (; i
< argc
; i
++)
112 in_queue(!strcmp("-", argv
[i
]) ? NULL
: argv
[i
]);