typedef struct Map Map;
typedef struct Mapel Mapel;
typedef struct Sub Sub;
typedef struct Wdoc Wdoc;
typedef struct Whist Whist;
typedef struct Wpage Wpage;
enum {
Tcache = 5, /* seconds */
Maxmap = 10*1024*1024,
Maxfile = 100*1024,
};
enum {
Wpara,
Wheading,
Wbullet,
Wlink,
Wman,
Wplain,
Wpre,
Whr,
Nwtxt,
};
struct Wpage {
int type;
char *text;
int section; /* Wman */
char *url; /* Wlink */
Wpage *next;
};
struct Whist {
Ref;
int n;
char *title;
Wdoc *doc;
int ndoc;
int current;
};
struct Wdoc {
char *author;
char *comment;
int conflict;
ulong time;
Wpage *wtxt;
};
enum {
Tpage,
Tedit,
Tdiff,
Thistory,
Tnew,
Toldpage,
Twerror,
Ntemplate,
};
struct Sub {
char *match;
char *sub;
};
struct Mapel {
char *s;
int n;
};
struct Map {
Ref;
Mapel *el;
int nel;
ulong t;
char *buf;
Qid qid;
};
void *erealloc(void*, ulong);
void *emalloc(ulong);
char *estrdup(char*);
char *estrdupn(char*, int);
char *strcondense(char*, int);
char *strlower(char*);
String *s_appendsub(String*, char*, int, Sub*, int);
String *s_appendlist(String*, ...);
Whist *Brdwhist(Biobuf*);
Wpage *Brdpage(char*(*)(void*,int), void*);
void printpage(Wpage*);
String *pagehtml(String*, Wpage*, int);
String *pagetext(String*, Wpage*, int);
String *tohtml(Whist*, Wdoc*, int);
String *totext(Whist*, Wdoc*, int);
String *doctext(String*, Wdoc*);
Whist *getcurrent(int);
Whist *getcurrentbyname(char*);
Whist *gethistory(int);
void closewhist(Whist*);
int allocnum(char*, int);
void freepage(Wpage*);
int nametonum(char*);
char *numtoname(int);
int writepage(int, ulong, String*, char*);
void voidcache(int);
void closemap(Map*);
void currentmap(int);
extern Map *map;
extern RWLock maplock;
extern char *wikidir;
Biobuf *wBopen(char*, int);
int wopen(char*, int);
int wcreate(char*, int, long);
int waccess(char*, int);
Dir *wdirstat(char*);
int opentemp(char*);
|