#ifndef _LIBPLUMB_H_ #define _LIBPLUMB_H_ 1 #if defined(__cplusplus) extern "C" { #endif AUTOLIB(plumb) /* #pragma lib "libplumb.a" #pragma src "/sys/src/libplumb" */ /* * Message format: * source application\n * destination port\n * working directory\n * type\n * attributes\n * nbytes\n * n bytes of data */ typedef struct Plumbattr Plumbattr; typedef struct Plumbmsg Plumbmsg; struct Plumbmsg { char *src; char *dst; char *wdir; char *type; Plumbattr *attr; int ndata; char *data; }; struct Plumbattr { char *name; char *value; Plumbattr *next; }; int plumbsend(int, Plumbmsg*); Plumbmsg* plumbrecv(int); char* plumbpack(Plumbmsg*, int*); Plumbmsg* plumbunpack(char*, int); Plumbmsg* plumbunpackpartial(char*, int, int*); char* plumbpackattr(Plumbattr*); Plumbattr* plumbunpackattr(char*); Plumbattr* plumbaddattr(Plumbattr*, Plumbattr*); Plumbattr* plumbdelattr(Plumbattr*, char*); void plumbfree(Plumbmsg*); char* plumblookup(Plumbattr*, char*); int plumbopen(char*, int); int eplumb(int, char*); int plumbunmount(void); #ifdef _9PCLIENT_H_ CFid* plumbopenfid(char*, int); Plumbmsg* plumbrecvfid(CFid*); Plumbmsg* threadplumbrecvfid(CFid*); int plumbsendtofid(CFid*, Plumbmsg*); #endif #if defined(__cplusplus) } #endif #endif