]> git.lizzy.rs Git - plan9front.git/blob - sys/include/ape/plumb.h
ape: make libplumb available under ape.
[plan9front.git] / sys / include / ape / plumb.h
1 #ifndef _PLAN9_SOURCE
2   This header file is an extension to ANSI/POSIX
3 #endif
4
5 #ifndef __PLUMB_H_
6 #define __PLUMB_H_
7 #pragma src "/sys/src/ape/lib/plumb"
8 #pragma lib "/$M/lib/ape/libplumb.a"
9
10 /*
11  * Message format:
12  *      source application\n
13  *      destination port\n
14  *      working directory\n
15  *      type\n
16  *      attributes\n
17  *      nbytes\n
18  *      n bytes of data
19  */
20
21 typedef struct Plumbattr Plumbattr;
22 typedef struct Plumbmsg Plumbmsg;
23
24 struct Plumbmsg
25 {
26         char            *src;
27         char            *dst;
28         char            *wdir;
29         char            *type;
30         Plumbattr       *attr;
31         int             ndata;
32         char            *data;
33 };
34
35 struct Plumbattr
36 {
37         char            *name;
38         char            *value;
39         Plumbattr       *next;
40 };
41
42 int                     plumbsend(int, Plumbmsg*);
43 int                     plumbsendtext(int, char*, char*, char*, char*);
44 Plumbmsg*       plumbrecv(int);
45 char*           plumbpack(Plumbmsg*, int*);
46 Plumbmsg*       plumbunpack(char*, int);
47 Plumbmsg*       plumbunpackpartial(char*, int, int*);
48 char*           plumbpackattr(Plumbattr*);
49 Plumbattr*      plumbunpackattr(char*);
50 Plumbattr*      plumbaddattr(Plumbattr*, Plumbattr*);
51 Plumbattr*      plumbdelattr(Plumbattr*, char*);
52 void                    plumbfree(Plumbmsg*);
53 char*           plumblookup(Plumbattr*, char*);
54 int                     plumbopen(char*, int);
55 int                     eplumb(int, char*);
56
57 #endif