149 lines
3.1 KiB
C
149 lines
3.1 KiB
C
#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
|