#include <u.h>#include <libc.h>#include <bio.h>#include <ctype.h> enum{ Unbsp = 0x00A0, Uprivate = 0xF000, Uempty, /* \& */ Uamp, /* raw & */ Ult, /* raw < */ Ugt, /* raw > */ Utick, /* raw ' */ Ubtick, /* raw ` */ Uminus, /* raw - */ Uspace, /* raw space */ Upl, /* symbol + */ Ueq, /* symbol = */ Umi, /* symbol - */ Uformatted, /* start diverted output */ Uunformatted, /* end diverted output */ UPI = 720, /* units per inch */ UPX = 10, /* units per pixel */ /* special input modes */ CopyMode = 1<<1, ExpandMode = 1<<2, ArgMode = 1<<3, HtmlMode = 1<<4, MaxLine = 1024,}; Rune* L(char*); void addesc(Rune, int (*)(void), int);void addraw(Rune*, void(*)(Rune*));void addreq(Rune*, void(*)(int, Rune**), int);void af(Rune*, Rune*);void as(Rune*, Rune*);void br(void);void closehtml(void);Rune* copyarg(void);void delraw(Rune*);void delreq(Rune*);void ds(Rune*, Rune*);int dv(int);int e_nop(void);int e_warn(void);void* emalloc(uint);void* erealloc(void*, uint);Rune* erunesmprint(char*, ...);Rune* erunestrdup(Rune*);char* esmprint(char*, ...);char* estrdup(char*);int eval(Rune*);int evalscale(Rune*, int);Rune* getname(void);int getnext(void);Rune* getds(Rune*);Rune* _getnr(Rune*);int getnr(Rune*);int getnrr(Rune*);int getrune(void);Rune* getqarg(void);Rune* getline(void);void hideihtml(void);void html(Rune*, Rune*);void htmlinit(void);void ihtml(Rune*, Rune*);void inputnotify(void(*)(void));void itrap(void);void itrapset(void);int linefmt(Fmt*);void nr(Rune*, int);void _nr(Rune*, Rune*);void out(Rune*);void (*outcb)(Rune);void outhtml(Rune*);void outrune(Rune);void outtrap(void);int popinput(void);void printds(int);int pushinputfile(Rune*);void pushinputstring(Rune*);int pushstdin(void);int queueinputfile(Rune*);int queuestdin(void);void r_nop(int, Rune**);void r_warn(int, Rune**);Rune *readline(int);void reitag(void);void renraw(Rune*, Rune*);void renreq(Rune*, Rune*);void run(void);void runinput(void);int runmacro(int, int, Rune**);void runmacro1(Rune*);Rune* rune2html(Rune);void setlinenumber(Rune*, int);void showihtml(void);void sp(int);void t1init(void);void t2init(void);void t3init(void);void t4init(void);void t5init(void);void t6init(void);void t7init(void);void t8init(void);void t9init(void);void t10init(void);void t11init(void);void t12init(void);void t13init(void);void t14init(void);void t15init(void);void t16init(void);void t17init(void);void t18init(void);void t19init(void);void t20init(void);Rune troff2rune(Rune*);void unfont(void);void ungetnext(Rune);void ungetrune(Rune);void unitag(void);void warn(char*, ...); extern int backslash;extern int bol;extern Biobuf bout;extern int broke;extern int dot;extern int inputmode;extern int inrequest;extern int tick;extern int utf8;extern int verbose;extern int linepos; #define runemalloc(n) (Rune*)emalloc((n)*sizeof(Rune))#define runerealloc(r, n) (Rune*)erealloc(r, (n)*sizeof(Rune))#define runemove(a, b, n) memmove(a, b, (n)*sizeof(Rune)) #pragma varargck type "L" void
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <ctype.h>
enum
{
Unbsp = 0x00A0,
Uprivate = 0xF000,
Uempty, /* \& */
Uamp, /* raw & */
Ult, /* raw < */
Ugt, /* raw > */
Utick, /* raw ' */
Ubtick, /* raw ` */
Uminus, /* raw - */
Uspace, /* raw space */
Upl, /* symbol + */
Ueq, /* symbol = */
Umi, /* symbol - */
Uformatted, /* start diverted output */
Uunformatted, /* end diverted output */
UPI = 720, /* units per inch */
UPX = 10, /* units per pixel */
/* special input modes */
CopyMode = 1<<1,
ExpandMode = 1<<2,
ArgMode = 1<<3,
HtmlMode = 1<<4,
MaxLine = 1024,
};
Rune* L(char*);
void addesc(Rune, int (*)(void), int);
void addraw(Rune*, void(*)(Rune*));
void addreq(Rune*, void(*)(int, Rune**), int);
void af(Rune*, Rune*);
void as(Rune*, Rune*);
void br(void);
void closehtml(void);
Rune* copyarg(void);
void delraw(Rune*);
void delreq(Rune*);
void ds(Rune*, Rune*);
int dv(int);
int e_nop(void);
int e_warn(void);
void* emalloc(uint);
void* erealloc(void*, uint);
Rune* erunesmprint(char*, ...);
Rune* erunestrdup(Rune*);
char* esmprint(char*, ...);
char* estrdup(char*);
int eval(Rune*);
int evalscale(Rune*, int);
Rune* getname(void);
int getnext(void);
Rune* getds(Rune*);
Rune* _getnr(Rune*);
int getnr(Rune*);
int getnrr(Rune*);
int getrune(void);
Rune* getqarg(void);
Rune* getline(void);
void hideihtml(void);
void html(Rune*, Rune*);
void htmlinit(void);
void ihtml(Rune*, Rune*);
void inputnotify(void(*)(void));
void itrap(void);
void itrapset(void);
int linefmt(Fmt*);
void nr(Rune*, int);
void _nr(Rune*, Rune*);
void out(Rune*);
void (*outcb)(Rune);
void outhtml(Rune*);
void outrune(Rune);
void outtrap(void);
int popinput(void);
void printds(int);
int pushinputfile(Rune*);
void pushinputstring(Rune*);
int pushstdin(void);
int queueinputfile(Rune*);
int queuestdin(void);
void r_nop(int, Rune**);
void r_warn(int, Rune**);
Rune *readline(int);
void reitag(void);
void renraw(Rune*, Rune*);
void renreq(Rune*, Rune*);
void run(void);
void runinput(void);
int runmacro(int, int, Rune**);
void runmacro1(Rune*);
Rune* rune2html(Rune);
void setlinenumber(Rune*, int);
void showihtml(void);
void sp(int);
void t1init(void);
void t2init(void);
void t3init(void);
void t4init(void);
void t5init(void);
void t6init(void);
void t7init(void);
void t8init(void);
void t9init(void);
void t10init(void);
void t11init(void);
void t12init(void);
void t13init(void);
void t14init(void);
void t15init(void);
void t16init(void);
void t17init(void);
void t18init(void);
void t19init(void);
void t20init(void);
Rune troff2rune(Rune*);
void unfont(void);
void ungetnext(Rune);
void ungetrune(Rune);
void unitag(void);
void warn(char*, ...);
extern int backslash;
extern int bol;
extern Biobuf bout;
extern int broke;
extern int dot;
extern int inputmode;
extern int inrequest;
extern int tick;
extern int utf8;
extern int verbose;
extern int linepos;
#define runemalloc(n) (Rune*)emalloc((n)*sizeof(Rune))
#define runerealloc(r, n) (Rune*)erealloc(r, (n)*sizeof(Rune))
#define runemove(a, b, n) memmove(a, b, (n)*sizeof(Rune))
#pragma varargck type "L" void