blob: 484042e36e93dee953d1cf489385caa5e9e2ea04 [file] [log] [blame]
#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