Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
#include <bio.h>
4
#include <thread.h>
5
 
6
/* acme */
7
typedef struct Event Event;
8
typedef struct Window Window;
9
 
10
enum
11
{
12
	STACK		= 8192,
13
	EVENTSIZE	= 256,
14
	NEVENT		= 5,
15
};
16
 
17
struct Event
18
{
19
	int	c1;
20
	int	c2;
21
	int	q0;
22
	int	q1;
23
	int	flag;
24
	int	nb;
25
	int	nr;
26
	char	b[EVENTSIZE*UTFmax+1];
27
	Rune	r[EVENTSIZE+1];
28
};
29
 
30
struct Window
31
{
32
	/* file descriptors */
33
	int		ctl;
34
	int		event;
35
	int		addr;
36
	int		data;
37
	Biobuf	*body;
38
 
39
	/* event input */
40
	char		buf[512];
41
	char		*bufp;
42
	int		nbuf;
43
	Event	e[NEVENT];
44
 
45
	int		warned;
46
	int		id;
47
	int		open;
48
	Channel	*cevent;	/* chan(Event*) */
49
};
50
 
51
extern	Window*	newwindow(void);
52
extern	int		winopenfile(Window*, char*);
53
extern	void		winopenbody(Window*, int);
54
extern	void		winclosebody(Window*);
55
extern	void		wintagwrite(Window*, char*, int);
56
extern	void		winname(Window*, char*);
57
extern	void		winwriteevent(Window*, Event*);
58
extern	void		winread(Window*, uint, uint, char*);
59
extern	int		windel(Window*, int);
60
extern	void		wingetevent(Window*, Event*);
61
extern	void		wineventproc(void*);
62
extern	void		winwritebody(Window*, char*, int);
63
extern	void		winclean(Window*);
64
extern	int		winisdirty(Window*);
65
extern	int		winselect(Window*, char*, int);
66
extern	int		winsetaddr(Window*, char*, int);
67
extern	char*	winreadbody(Window*, int*);
68
extern	void		windormant(Window*);
69
extern	void		winsetdump(Window*, char*, char*);
70
 
71
extern	char*	readfile(char*, char*, int*);
72
extern	void		ctlprint(int, char*, ...);
73
extern	void*	emalloc(uint);
74
extern	char*	estrdup(char*);
75
extern	char*	estrstrdup(char*, char*);
76
extern	char*	egrow(char*, char*, char*);
77
extern	char*	eappend(char*, char*, char*);
78
extern	void		error(char*, ...);
79
extern	int		tokenizec(char*, char**, int, char*);
80
 
81
typedef struct Treq Treq;
82
typedef struct Wiki Wiki;
83
 
84
struct Treq {
85
	char *title;
86
	Channel *c;	/* chan(int) */
87
};
88
 
89
struct Wiki {
90
	QLock;
91
	int isnew;
92
	int special;
93
	char *arg;
94
	char *addr;
95
	int n;
96
	int dead;
97
	Window *win;
98
	ulong time;
99
	int linked;
100
	Wiki *next;
101
	Wiki *prev;
102
};
103
 
104
extern int debug;
105
extern int mapfd;
106
extern char *email;
107
extern char *dir;
108
 
109
void wikinew(char*);
110
int wikiopen(char*, char*);
111
int wikiput(Wiki*);
112
void wikiget(Wiki*);
113
int wikidiff(Wiki*);
114