Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <ctype.h>
6 enum
7 {
8 Unbsp = 0x00A0,
9 Uprivate = 0xF000,
10 Uempty, /* \& */
11 Uamp, /* raw & */
12 Ult, /* raw < */
13 Ugt, /* raw > */
14 Utick, /* raw ' */
15 Ubtick, /* raw ` */
16 Uminus, /* raw - */
17 Uspace, /* raw space */
18 Upl, /* symbol + */
19 Ueq, /* symbol = */
20 Umi, /* symbol - */
21 Uformatted, /* start diverted output */
22 Uunformatted, /* end diverted output */
24 UPI = 720, /* units per inch */
25 UPX = 10, /* units per pixel */
27 /* special input modes */
28 CopyMode = 1<<1,
29 ExpandMode = 1<<2,
30 ArgMode = 1<<3,
31 HtmlMode = 1<<4,
33 MaxLine = 1024
34 };
36 Rune* L(char*);
38 void addesc(Rune, int (*)(void), int);
39 void addraw(Rune*, void(*)(Rune*));
40 void addreq(Rune*, void(*)(int, Rune**), int);
41 void af(Rune*, Rune*);
42 void as(Rune*, Rune*);
43 void br(void);
44 void closehtml(void);
45 Rune* copyarg(void);
46 void delraw(Rune*);
47 void delreq(Rune*);
48 void ds(Rune*, Rune*);
49 int dv(int);
50 int e_nop(void);
51 int e_warn(void);
52 void* emalloc(uint);
53 void* erealloc(void*, uint);
54 Rune* erunesmprint(char*, ...);
55 Rune* erunestrdup(Rune*);
56 char* esmprint(char*, ...);
57 char* estrdup(char*);
58 int eval(Rune*);
59 int evalscale(Rune*, int);
60 Rune* getname(void);
61 int getnext(void);
62 Rune* getds(Rune*);
63 Rune* _getnr(Rune*);
64 int getnr(Rune*);
65 int getnrr(Rune*);
66 int getrune(void);
67 Rune* getqarg(void);
68 Rune* getline(void);
69 void hideihtml(void);
70 void html(Rune*, Rune*);
71 void htmlinit(void);
72 void ihtml(Rune*, Rune*);
73 void inputnotify(void(*)(void));
74 void itrap(void);
75 void itrapset(void);
76 int linefmt(Fmt*);
77 void nr(Rune*, int);
78 void _nr(Rune*, Rune*);
79 void out(Rune*);
80 void (*outcb)(Rune);
81 void outhtml(Rune*);
82 void outrune(Rune);
83 void outtrap(void);
84 int popinput(void);
85 void printds(int);
86 int pushinputfile(Rune*);
87 void pushinputstring(Rune*);
88 int pushstdin(void);
89 int queueinputfile(Rune*);
90 int queuestdin(void);
91 void r_nop(int, Rune**);
92 void r_warn(int, Rune**);
93 Rune *readline(int);
94 void reitag(void);
95 void renraw(Rune*, Rune*);
96 void renreq(Rune*, Rune*);
97 void run(void);
98 void runinput(void);
99 int runmacro(int, int, Rune**);
100 void runmacro1(Rune*);
101 Rune* rune2html(Rune);
102 void setlinenumber(Rune*, int);
103 void showihtml(void);
104 void sp(int);
105 void t1init(void);
106 void t2init(void);
107 void t3init(void);
108 void t4init(void);
109 void t5init(void);
110 void t6init(void);
111 void t7init(void);
112 void t8init(void);
113 void t9init(void);
114 void t10init(void);
115 void t11init(void);
116 void t12init(void);
117 void t13init(void);
118 void t14init(void);
119 void t15init(void);
120 void t16init(void);
121 void t17init(void);
122 void t18init(void);
123 void t19init(void);
124 void t20init(void);
125 Rune troff2rune(Rune*);
126 void unfont(void);
127 void ungetnext(Rune);
128 void ungetrune(Rune);
129 void unitag(void);
130 void warn(char*, ...);
132 extern int backslash;
133 extern int bol;
134 extern Biobuf bout;
135 extern int broke;
136 extern int dot;
137 extern int inputmode;
138 extern int inrequest;
139 extern int tick;
140 extern int utf8;
141 extern int verbose;
142 extern int linepos;
144 #define runemalloc(n) (Rune*)emalloc((n)*sizeof(Rune))
145 #define runerealloc(r, n) (Rune*)erealloc(r, (n)*sizeof(Rune))
146 #define runemove(a, b, n) memmove(a, b, (n)*sizeof(Rune))
148 #pragma varargck type "L" void