1 #pragma lib "libplumb.a" 2 #pragma src "/sys/src/libplumb" 3 4 /* 5 * Message format: 6 * source application\n 7 * destination port\n 8 * working directory\n 9 * type\n 10 * attributes\n 11 * nbytes\n 12 * n bytes of data 13 */ 14 15 typedef struct Plumbattr Plumbattr; 16 typedef struct Plumbmsg Plumbmsg; 17 18 struct Plumbmsg 19 { 20 char *src; 21 char *dst; 22 char *wdir; 23 char *type; 24 Plumbattr *attr; 25 int ndata; 26 char *data; 27 }; 28 29 struct Plumbattr 30 { 31 char *name; 32 char *value; 33 Plumbattr *next; 34 }; 35 36 int plumbsend(int, Plumbmsg*); 37 int plumbsendtext(int, char*, char*, char*, char*); 38 Plumbmsg* plumbrecv(int); 39 char* plumbpack(Plumbmsg*, int*); 40 Plumbmsg* plumbunpack(char*, int); 41 Plumbmsg* plumbunpackpartial(char*, int, int*); 42 char* plumbpackattr(Plumbattr*); 43 Plumbattr* plumbunpackattr(char*); 44 Plumbattr* plumbaddattr(Plumbattr*, Plumbattr*); 45 Plumbattr* plumbdelattr(Plumbattr*, char*); 46 void plumbfree(Plumbmsg*); 47 char* plumblookup(Plumbattr*, char*); 48 int plumbopen(char*, int); 49 int eplumb(int, char*); 50