xref: /plan9/sys/src/cmd/wikifs/wiki.h (revision 13ec27127e6fa2d1a530af3cca3d8494602f7465)
1 typedef struct Map Map;
2 typedef struct Mapel Mapel;
3 typedef struct Sub Sub;
4 typedef struct Wdoc Wdoc;
5 typedef struct Whist Whist;
6 typedef struct Wpage Wpage;
7 
8 enum {
9 	Tcache = 5,	/* seconds */
10 	Maxmap = 10*1024*1024,
11 	Maxfile = 100*1024,
12 };
13 enum {
14 	Wpara,
15 	Wheading,
16 	Wbullet,
17 	Wlink,
18 	Wman,
19 	Wplain,
20 	Wpre,
21 	Whr,
22 	Nwtxt,
23 };
24 
25 struct Wpage {
26 	int type;
27 	char *text;
28 	int section;	/* Wman */
29 	char *url;		/* Wlink */
30 	Wpage *next;
31 };
32 
33 struct Whist {
34 	Ref;
35 	int n;
36 	char *title;
37 	Wdoc *doc;
38 	int ndoc;
39 	int current;
40 };
41 
42 struct Wdoc {
43 	char *author;
44 	char *comment;
45 	int conflict;
46 	ulong time;
47 	Wpage *wtxt;
48 };
49 
50 enum {
51 	Tpage,
52 	Tedit,
53 	Tdiff,
54 	Thistory,
55 	Tnew,
56 	Toldpage,
57 	Twerror,
58 	Ntemplate,
59 };
60 
61 struct Sub {
62 	char *match;
63 	char *sub;
64 };
65 
66 struct Mapel {
67 	char *s;
68 	int n;
69 };
70 
71 struct Map {
72 	Ref;
73 	Mapel *el;
74 	int nel;
75 	ulong t;
76 	char *buf;
77 	Qid qid;
78 };
79 
80 void *erealloc(void*, ulong);
81 void *emalloc(ulong);
82 char *estrdup(char*);
83 char *estrdupn(char*, int);
84 char *strcondense(char*, int);
85 char *strlower(char*);
86 
87 String *s_appendsub(String*, char*, int, Sub*, int);
88 String *s_appendlist(String*, ...);
89 Whist *Brdwhist(Biobuf*);
90 Wpage *Brdpage(char*(*)(void*,int), void*);
91 
92 void printpage(Wpage*);
93 String *pagehtml(String*, Wpage*, int);
94 String *pagetext(String*, Wpage*, int);
95 String *tohtml(Whist*, Wdoc*, int);
96 String *totext(Whist*, Wdoc*, int);
97 String *doctext(String*, Wdoc*);
98 
99 Whist *getcurrent(int);
100 Whist *getcurrentbyname(char*);
101 Whist *gethistory(int);
102 void closewhist(Whist*);
103 int allocnum(char*, int);
104 void freepage(Wpage*);
105 int nametonum(char*);
106 char *numtoname(int);
107 int writepage(int, ulong, String*, char*);
108 void voidcache(int);
109 
110 void closemap(Map*);
111 void currentmap(int);
112 
113 extern Map *map;
114 extern RWLock maplock;
115 extern char *wikidir;
116 Biobuf *wBopen(char*, int);
117 int wopen(char*, int);
118 int wcreate(char*, int, long);
119 int waccess(char*, int);
120 Dir *wdirstat(char*);
121 int opentemp(char*);
122