xref: /plan9/sys/src/cmd/wikifs/wiki.h (revision 13ec27127e6fa2d1a530af3cca3d8494602f7465)
19a747e4fSDavid du Colombier typedef struct Map Map;
29a747e4fSDavid du Colombier typedef struct Mapel Mapel;
39a747e4fSDavid du Colombier typedef struct Sub Sub;
49a747e4fSDavid du Colombier typedef struct Wdoc Wdoc;
59a747e4fSDavid du Colombier typedef struct Whist Whist;
69a747e4fSDavid du Colombier typedef struct Wpage Wpage;
79a747e4fSDavid du Colombier 
89a747e4fSDavid du Colombier enum {
99a747e4fSDavid du Colombier 	Tcache = 5,	/* seconds */
109a747e4fSDavid du Colombier 	Maxmap = 10*1024*1024,
119a747e4fSDavid du Colombier 	Maxfile = 100*1024,
129a747e4fSDavid du Colombier };
139a747e4fSDavid du Colombier enum {
149a747e4fSDavid du Colombier 	Wpara,
159a747e4fSDavid du Colombier 	Wheading,
169a747e4fSDavid du Colombier 	Wbullet,
179a747e4fSDavid du Colombier 	Wlink,
189a747e4fSDavid du Colombier 	Wman,
199a747e4fSDavid du Colombier 	Wplain,
209a747e4fSDavid du Colombier 	Wpre,
21*13ec2712SDavid du Colombier 	Whr,
229a747e4fSDavid du Colombier 	Nwtxt,
239a747e4fSDavid du Colombier };
249a747e4fSDavid du Colombier 
259a747e4fSDavid du Colombier struct Wpage {
269a747e4fSDavid du Colombier 	int type;
279a747e4fSDavid du Colombier 	char *text;
289a747e4fSDavid du Colombier 	int section;	/* Wman */
299a747e4fSDavid du Colombier 	char *url;		/* Wlink */
309a747e4fSDavid du Colombier 	Wpage *next;
319a747e4fSDavid du Colombier };
329a747e4fSDavid du Colombier 
339a747e4fSDavid du Colombier struct Whist {
349a747e4fSDavid du Colombier 	Ref;
359a747e4fSDavid du Colombier 	int n;
369a747e4fSDavid du Colombier 	char *title;
379a747e4fSDavid du Colombier 	Wdoc *doc;
389a747e4fSDavid du Colombier 	int ndoc;
399a747e4fSDavid du Colombier 	int current;
409a747e4fSDavid du Colombier };
419a747e4fSDavid du Colombier 
429a747e4fSDavid du Colombier struct Wdoc {
439a747e4fSDavid du Colombier 	char *author;
449a747e4fSDavid du Colombier 	char *comment;
459a747e4fSDavid du Colombier 	int conflict;
469a747e4fSDavid du Colombier 	ulong time;
479a747e4fSDavid du Colombier 	Wpage *wtxt;
489a747e4fSDavid du Colombier };
499a747e4fSDavid du Colombier 
509a747e4fSDavid du Colombier enum {
519a747e4fSDavid du Colombier 	Tpage,
529a747e4fSDavid du Colombier 	Tedit,
539a747e4fSDavid du Colombier 	Tdiff,
549a747e4fSDavid du Colombier 	Thistory,
559a747e4fSDavid du Colombier 	Tnew,
569a747e4fSDavid du Colombier 	Toldpage,
579a747e4fSDavid du Colombier 	Twerror,
589a747e4fSDavid du Colombier 	Ntemplate,
599a747e4fSDavid du Colombier };
609a747e4fSDavid du Colombier 
619a747e4fSDavid du Colombier struct Sub {
629a747e4fSDavid du Colombier 	char *match;
639a747e4fSDavid du Colombier 	char *sub;
649a747e4fSDavid du Colombier };
659a747e4fSDavid du Colombier 
669a747e4fSDavid du Colombier struct Mapel {
679a747e4fSDavid du Colombier 	char *s;
689a747e4fSDavid du Colombier 	int n;
699a747e4fSDavid du Colombier };
709a747e4fSDavid du Colombier 
719a747e4fSDavid du Colombier struct Map {
729a747e4fSDavid du Colombier 	Ref;
739a747e4fSDavid du Colombier 	Mapel *el;
749a747e4fSDavid du Colombier 	int nel;
759a747e4fSDavid du Colombier 	ulong t;
769a747e4fSDavid du Colombier 	char *buf;
779a747e4fSDavid du Colombier 	Qid qid;
789a747e4fSDavid du Colombier };
799a747e4fSDavid du Colombier 
809a747e4fSDavid du Colombier void *erealloc(void*, ulong);
819a747e4fSDavid du Colombier void *emalloc(ulong);
829a747e4fSDavid du Colombier char *estrdup(char*);
839a747e4fSDavid du Colombier char *estrdupn(char*, int);
849a747e4fSDavid du Colombier char *strcondense(char*, int);
859a747e4fSDavid du Colombier char *strlower(char*);
869a747e4fSDavid du Colombier 
879a747e4fSDavid du Colombier String *s_appendsub(String*, char*, int, Sub*, int);
889a747e4fSDavid du Colombier String *s_appendlist(String*, ...);
899a747e4fSDavid du Colombier Whist *Brdwhist(Biobuf*);
909a747e4fSDavid du Colombier Wpage *Brdpage(char*(*)(void*,int), void*);
919a747e4fSDavid du Colombier 
929a747e4fSDavid du Colombier void printpage(Wpage*);
939a747e4fSDavid du Colombier String *pagehtml(String*, Wpage*, int);
949a747e4fSDavid du Colombier String *pagetext(String*, Wpage*, int);
959a747e4fSDavid du Colombier String *tohtml(Whist*, Wdoc*, int);
969a747e4fSDavid du Colombier String *totext(Whist*, Wdoc*, int);
979a747e4fSDavid du Colombier String *doctext(String*, Wdoc*);
989a747e4fSDavid du Colombier 
999a747e4fSDavid du Colombier Whist *getcurrent(int);
1009a747e4fSDavid du Colombier Whist *getcurrentbyname(char*);
1019a747e4fSDavid du Colombier Whist *gethistory(int);
1029a747e4fSDavid du Colombier void closewhist(Whist*);
1039a747e4fSDavid du Colombier int allocnum(char*, int);
1049a747e4fSDavid du Colombier void freepage(Wpage*);
1059a747e4fSDavid du Colombier int nametonum(char*);
1069a747e4fSDavid du Colombier char *numtoname(int);
1079a747e4fSDavid du Colombier int writepage(int, ulong, String*, char*);
1089a747e4fSDavid du Colombier void voidcache(int);
1099a747e4fSDavid du Colombier 
1109a747e4fSDavid du Colombier void closemap(Map*);
1119a747e4fSDavid du Colombier void currentmap(int);
1129a747e4fSDavid du Colombier 
1139a747e4fSDavid du Colombier extern Map *map;
1149a747e4fSDavid du Colombier extern RWLock maplock;
1159a747e4fSDavid du Colombier extern char *wikidir;
1169a747e4fSDavid du Colombier Biobuf *wBopen(char*, int);
1179a747e4fSDavid du Colombier int wopen(char*, int);
1189a747e4fSDavid du Colombier int wcreate(char*, int, long);
1199a747e4fSDavid du Colombier int waccess(char*, int);
1209a747e4fSDavid du Colombier Dir *wdirstat(char*);
1219a747e4fSDavid du Colombier int opentemp(char*);
122