File: msg.h

package info (click to toggle)
wily 0.13.41-7.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,560 kB
  • ctags: 3,426
  • sloc: ansic: 25,364; perl: 580; makefile: 446; sh: 415; python: 30; exp: 17
file content (123 lines) | stat: -rw-r--r-- 2,948 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* see ../Doc/C.html 
 */

typedef struct Msg Msg;
typedef int Id;		/* Window identifier */
typedef enum Bool {false, true} Bool;
typedef struct Range Range;

/* name of environment variable */
#define WILYFIFO "WILYFIFO"

enum {
	HSIZE= 12,	/* minimum length of a message fragment to be able
				to determine the length of the full message. */
	MAXERRMSG = 1024	/* maximum length of an error message */
};

typedef enum Mtype {

	/* EVENTS:  also used for event masks. */
	WEexec = 1,
	WEgoto = 2,
	WEdestroy = 4,
	WEreplace = 8,

	WEfencepost,

	/* REQUESTS AND RESPONSES */

	WRerror,
	WMlist, WRlist,
	WMnew, WRnew,
	WMattach, WRattach,
	WMsetname, WRsetname,
	WMgetname, WRgetname,
	WMsettools,WRsettools,
	WMgettools,WRgettools,
	WMread, WRread,
	WMreplace, WRreplace,
	WMexec,	 WRexec,
	WMgoto,	 WRgoto,

	WMfencepost	
} Mtype;

struct Range {
	ulong	p0,p1;
};

#define RLEN(r) ((r).p1 -(r).p0)
#define RCONTAINS(r, p) ( ((p)>=(r).p0) && ((p) < (r).p1) )
#define RINTERSECT(r0, r1) ( ((r0).p1 >= (r1).p0) &&  ((r0).p0 <= (r1).p1) )
#define RISSUBSET(q,r) (	((q).p0 >= (r).p0) && ((q).p1 <= (r).p1)	)
#define ROK(r) ((r).p1 >= (r).p0)

struct Msg {
	Mtype	t;
	Id		m;		/* message */	
	Id		w;		/* window */	
	Range	r;
	ushort	flag;
	char	*	s;
};

/* ../libmsg/connect.c */

int		client_connect	(void);
int		wilyfifolisten	(void);
int		wilyfifotalk	(void);
void		fifo_cleanup	(void);
int		wily_connect	(char*,int);

/* ../libmsg/msg.c */

int		msg_size		(Msg *m);
void		msg_flatten	(Msg*, uchar*);
int		msg_init		(Msg*, uchar*);
ulong	msg_bufsize	(uchar*);
void		msg_print	(Msg *);
void		msg_fill		(Msg*, Mtype , Id w, Range r, ushort flag, char*s) ;
#define FULLMSG(ptr,n) ( (n) >= HSIZE && (n) >= msg_bufsize(ptr) )

/* ../libmsg/rpc.c */
typedef struct Handle Handle;
extern Range	nr;		/* null range */

Handle*	rpc_init		(int);
int		rpc_fileno(Handle *h);
Bool		rpc_isconnected(Handle*);
void		rpc_free (Handle*);

char*	rpc_list		(Handle*h, char **bufptr);
char*	rpc_new		(Handle*, char *, Id*, ushort);
char*	rpc_attach	(Handle*, Id, ushort);
char*	rpc_setname	(Handle*, Id, char *);
char*	rpc_getname	(Handle*, Id, char **);
char*	rpc_settools	(Handle*, Id, char *);
char*	rpc_gettools	(Handle*, Id, char **);
char*	rpc_read		(Handle*, Id, Range, char*);
char*	rpc_replace	(Handle*, Id, Range, char*);
char*	rpc_exec		(Handle*, Id , char *);
char*	rpc_goto		(Handle*, Id * , Range*, char*, Bool);

int		rpc_event	(Handle*, Msg *);
int		rpc_bounce	(Handle*, Msg *);
Bool		rpc_wouldblock(Handle*);


#define MAX(a,b)(((a)>(b))?(a):(b))
#define MIN(a,b)(((a)<(b))?(a):(b))
#define NEW(t) ((t*)salloc(sizeof(t)))

/* ../libmsg/util.c */
int		clip(int , int , int );
void		eprintf(char *, ...);
void *	salloc(int );
void *	srealloc(void *, int);
Range		intersect (Range, Range);
Range		rclip (Range, Range);
ulong	pclipr(ulong p, Range r);
Range	range(ulong , ulong );
ulong	ladjust(ulong , Range , int );
ulong	radjust(ulong , Range , int );