123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include <thread.h>
- /* acme */
- typedef struct Event Event;
- typedef struct Window Window;
- enum
- {
- STACK = 8192,
- EVENTSIZE = 256,
- NEVENT = 5,
- };
- struct Event
- {
- int c1;
- int c2;
- int q0;
- int q1;
- int flag;
- int nb;
- int nr;
- char b[EVENTSIZE*UTFmax+1];
- Rune r[EVENTSIZE+1];
- };
- struct Window
- {
- /* file descriptors */
- int ctl;
- int event;
- int addr;
- int data;
- Biobuf *body;
- /* event input */
- char buf[512];
- char *bufp;
- int nbuf;
- Event e[NEVENT];
- int warned;
- int id;
- int open;
- Channel *cevent; /* chan(Event*) */
- };
- extern Window* newwindow(void);
- extern int winopenfile(Window*, char*);
- extern void winopenbody(Window*, int);
- extern void winclosebody(Window*);
- extern void wintagwrite(Window*, char*, int);
- extern void winname(Window*, char*);
- extern void winwriteevent(Window*, Event*);
- extern void winread(Window*, u32, u32, char*);
- extern int windel(Window*, int);
- extern void wingetevent(Window*, Event*);
- extern void wineventproc(void*);
- extern void winwritebody(Window*, char*, int);
- extern void winclean(Window*);
- extern int winisdirty(Window*);
- extern int winselect(Window*, char*, int);
- extern int winsetaddr(Window*, char*, int);
- extern char* winreadbody(Window*, int*);
- extern void windormant(Window*);
- extern void winsetdump(Window*, char*, char*);
- extern char* readfile(char*, char*, int*);
- extern void ctlprint(int, char*, ...);
- extern void* emalloc(u32);
- extern char* estrdup(char*);
- extern char* estrstrdup(char*, char*);
- extern char* egrow(char*, char*, char*);
- extern char* eappend(char*, char*, char*);
- extern void error(char*, ...);
- extern int tokenizec(char*, char**, int, char*);
- typedef struct Treq Treq;
- typedef struct Wiki Wiki;
- struct Treq {
- char *title;
- Channel *c; /* chan(int) */
- };
- struct Wiki {
- QLock lk;
- int isnew;
- int special;
- char *arg;
- char *addr;
- int n;
- int dead;
- Window *win;
- u32 time;
- int linked;
- Wiki *next;
- Wiki *prev;
- };
- extern int debug;
- extern int mapfd;
- extern char *email;
- extern char *dir;
- void wikinew(char*);
- int wikiopen(char*, char*);
- int wikiput(Wiki*);
- void wikiget(Wiki*);
- int wikidiff(Wiki*);
|