blob: 20bfcd74ba18d08ffe3599520fef5ef518535f55 [file] [log] [blame]
rscf7012582003-11-25 01:40:27 +00001#ifndef _LIBPLUMB_H_
2#define _LIBPLUMB_H_ 1
3#if defined(__cplusplus)
4extern "C" {
5#endif
rsc66ed3212005-01-04 21:17:59 +00006
7AUTOLIB(plumb)
rsc97a5e5f2003-11-23 18:25:35 +00008/*
rsc3d7e9092003-10-14 02:35:00 +00009#pragma lib "libplumb.a"
10#pragma src "/sys/src/libplumb"
rsc97a5e5f2003-11-23 18:25:35 +000011*/
rsc3d7e9092003-10-14 02:35:00 +000012
13/*
14 * Message format:
15 * source application\n
16 * destination port\n
17 * working directory\n
18 * type\n
19 * attributes\n
20 * nbytes\n
21 * n bytes of data
22 */
23
24typedef struct Plumbattr Plumbattr;
25typedef struct Plumbmsg Plumbmsg;
26
27struct Plumbmsg
28{
29 char *src;
30 char *dst;
31 char *wdir;
32 char *type;
33 Plumbattr *attr;
34 int ndata;
35 char *data;
36};
37
38struct Plumbattr
39{
40 char *name;
41 char *value;
42 Plumbattr *next;
43};
44
45int plumbsend(int, Plumbmsg*);
46Plumbmsg* plumbrecv(int);
47char* plumbpack(Plumbmsg*, int*);
48Plumbmsg* plumbunpack(char*, int);
49Plumbmsg* plumbunpackpartial(char*, int, int*);
50char* plumbpackattr(Plumbattr*);
51Plumbattr* plumbunpackattr(char*);
52Plumbattr* plumbaddattr(Plumbattr*, Plumbattr*);
53Plumbattr* plumbdelattr(Plumbattr*, char*);
54void plumbfree(Plumbmsg*);
55char* plumblookup(Plumbattr*, char*);
56int plumbopen(char*, int);
57int eplumb(int, char*);
rscf7012582003-11-25 01:40:27 +000058
rsc66ed3212005-01-04 21:17:59 +000059#ifdef _9PCLIENT_H_
60CFid* plumbopenfid(char*, int);
61Plumbmsg* plumbrecvfid(CFid*);
62Plumbmsg* threadplumbrecvfid(CFid*);
63int plumbsendtofid(CFid*, Plumbmsg*);
rsceacbfb22004-03-15 01:58:31 +000064#endif
65
rscf7012582003-11-25 01:40:27 +000066#if defined(__cplusplus)
67}
68#endif
69#endif