libixp

git clone git://oldgit.suckless.org/libixp/
Log | Files | Refs | LICENSE

commit 7accffd86d439e57fdcd45de4448534045516103
parent 567bb41cdb15ba1202918c123c97ec7c8462f6d2
Author: Kris Maglione <jg@suckless.org>
Date:   Tue,  6 Mar 2007 03:50:06 -0500

Added u(v?long|int|short|char) typedefs, and fixed some bugs reported by mauke.

Diffstat:
client.c | 38+++++++++++++++++++-------------------
convert.c | 64++++++++++++++++++++++++++++++++--------------------------------
fcall.h | 32++++++++++++++++----------------
intmap.c | 24++++++++++++------------
ixp.h | 153+++++++++++++++++++++++++++++++++++++++++++------------------------------------
ixpc.c | 46+++++++++++++++++++++++-----------------------
message.c | 42+++++++++++++++++++++---------------------
request.c | 12++++++------
server.c | 8++++----
socket.c | 6+++---
transport.c | 26+++++++++++++-------------
util.c | 18+++++++++---------
12 files changed, 241 insertions(+), 228 deletions(-)

diff --git a/client.c b/client.c @@ -11,8 +11,8 @@ int ixp_client_do_fcall(IXPClient *c) { - static unsigned char msg[IXP_MAX_MSG]; - unsigned int msize = ixp_fcall2msg(msg, &c->ifcall, IXP_MAX_MSG); + static uchar msg[IXP_MAX_MSG]; + uint msize = ixp_fcall2msg(msg, &c->ifcall, IXP_MAX_MSG); c->errstr = 0; if(ixp_send_message(c->fd, msg, msize, &c->errstr) != msize) @@ -31,7 +31,7 @@ ixp_client_do_fcall(IXPClient *c) { } int -ixp_client_dial(IXPClient *c, char *sockfile, unsigned int rootfid) { +ixp_client_dial(IXPClient *c, char *sockfile, uint rootfid) { if((c->fd = ixp_connect_sock(sockfile)) < 0) { c->errstr = "cannot connect server"; return -1; @@ -69,7 +69,7 @@ ixp_client_dial(IXPClient *c, char *sockfile, unsigned int rootfid) { } int -ixp_client_remove(IXPClient *c, unsigned int newfid, char *filepath) { +ixp_client_remove(IXPClient *c, uint newfid, char *filepath) { if(ixp_client_walk(c, newfid, filepath) == -1) return -1; c->ifcall.type = TREMOVE; @@ -79,8 +79,8 @@ ixp_client_remove(IXPClient *c, unsigned int newfid, char *filepath) { } int -ixp_client_create(IXPClient *c, unsigned int dirfid, char *name, - unsigned int perm, unsigned char mode) +ixp_client_create(IXPClient *c, uint dirfid, char *name, + uint perm, uchar mode) { c->ifcall.type = TCREATE; c->ifcall.tag = IXP_NOTAG; @@ -92,8 +92,8 @@ ixp_client_create(IXPClient *c, unsigned int dirfid, char *name, } int -ixp_client_walk(IXPClient *c, unsigned int newfid, char *filepath) { - unsigned int i; +ixp_client_walk(IXPClient *c, uint newfid, char *filepath) { + uint i; char *wname[IXP_MAX_WELEM]; c->ifcall.type = TWALK; @@ -109,7 +109,7 @@ ixp_client_walk(IXPClient *c, unsigned int newfid, char *filepath) { } int -ixp_client_stat(IXPClient *c, unsigned int newfid, char *filepath) { +ixp_client_stat(IXPClient *c, uint newfid, char *filepath) { if(ixp_client_walk(c, newfid, filepath) == -1) return -1; c->ifcall.type = TSTAT; @@ -119,7 +119,7 @@ ixp_client_stat(IXPClient *c, unsigned int newfid, char *filepath) { } int -ixp_client_open(IXPClient *c, unsigned int newfid, unsigned char mode) { +ixp_client_open(IXPClient *c, uint newfid, uchar mode) { c->ifcall.type = TOPEN; c->ifcall.tag = IXP_NOTAG; c->ifcall.fid = newfid; @@ -128,8 +128,8 @@ ixp_client_open(IXPClient *c, unsigned int newfid, unsigned char mode) { } int -ixp_client_walkopen(IXPClient *c, unsigned int newfid, char *filepath, - unsigned char mode) +ixp_client_walkopen(IXPClient *c, uint newfid, char *filepath, + uchar mode) { if(ixp_client_walk(c, newfid, filepath) == -1) return -1; @@ -137,10 +137,10 @@ ixp_client_walkopen(IXPClient *c, unsigned int newfid, char *filepath, } int -ixp_client_read(IXPClient *c, unsigned int fid, unsigned long long offset, - void *result, unsigned int res_len) +ixp_client_read(IXPClient *c, uint fid, uvlong offset, + void *result, uint res_len) { - unsigned int bytes = c->ofcall.iounit; + uint bytes = c->ofcall.iounit; c->ifcall.type = TREAD; c->ifcall.tag = IXP_NOTAG; @@ -155,9 +155,9 @@ ixp_client_read(IXPClient *c, unsigned int fid, unsigned long long offset, } int -ixp_client_write(IXPClient *c, unsigned int fid, - unsigned long long offset, unsigned int count, - unsigned char *data) +ixp_client_write(IXPClient *c, uint fid, + uvlong offset, uint count, + uchar *data) { if(count > c->ofcall.iounit) { c->errstr = "iounit exceeded"; @@ -175,7 +175,7 @@ ixp_client_write(IXPClient *c, unsigned int fid, } int -ixp_client_close(IXPClient *c, unsigned int fid) { +ixp_client_close(IXPClient *c, uint fid) { c->ifcall.type = TCLUNK; c->ifcall.tag = IXP_NOTAG; c->ifcall.fid = fid; diff --git a/convert.c b/convert.c @@ -8,19 +8,19 @@ /* packode/unpackode stuff */ void -ixp_pack_u8(unsigned char **msg, int *msize, unsigned char val) { +ixp_pack_u8(uchar **msg, int *msize, uchar val) { if(!msize || (*msize -= 1) >= 0) *(*msg)++ = val; } void -ixp_unpack_u8(unsigned char **msg, int *msize, unsigned char *val) { +ixp_unpack_u8(uchar **msg, int *msize, uchar *val) { if(!msize || (*msize -= 1) >= 0) *val = *(*msg)++; } void -ixp_pack_u16(unsigned char **msg, int *msize, unsigned short val) { +ixp_pack_u16(uchar **msg, int *msize, ushort val) { if(!msize || (*msize -= 2) >= 0) { *(*msg)++ = val; *(*msg)++ = val >> 8; @@ -28,7 +28,7 @@ ixp_pack_u16(unsigned char **msg, int *msize, unsigned short val) { } void -ixp_unpack_u16(unsigned char **msg, int *msize, unsigned short *val) { +ixp_unpack_u16(uchar **msg, int *msize, ushort *val) { if(!msize || (*msize -= 2) >= 0) { *val = *(*msg)++; *val |= *(*msg)++ << 8; @@ -36,7 +36,7 @@ ixp_unpack_u16(unsigned char **msg, int *msize, unsigned short *val) { } void -ixp_pack_u32(unsigned char **msg, int *msize, unsigned int val) { +ixp_pack_u32(uchar **msg, int *msize, uint val) { if(!msize || (*msize -= 4) >= 0) { *(*msg)++ = val; *(*msg)++ = val >> 8; @@ -46,7 +46,7 @@ ixp_pack_u32(unsigned char **msg, int *msize, unsigned int val) { } void -ixp_unpack_u32(unsigned char **msg, int *msize, unsigned int *val) { +ixp_unpack_u32(uchar **msg, int *msize, uint *val) { if(!msize || (*msize -= 4) >= 0) { *val = *(*msg)++; *val |= *(*msg)++ << 8; @@ -56,7 +56,7 @@ ixp_unpack_u32(unsigned char **msg, int *msize, unsigned int *val) { } void -ixp_pack_u64(unsigned char **msg, int *msize, unsigned long long val) { +ixp_pack_u64(uchar **msg, int *msize, uvlong val) { if(!msize || (*msize -= 8) >= 0) { *(*msg)++ = val; *(*msg)++ = val >> 8; @@ -70,32 +70,32 @@ ixp_pack_u64(unsigned char **msg, int *msize, unsigned long long val) { } void -ixp_unpack_u64(unsigned char **msg, int *msize, unsigned long long *val) { +ixp_unpack_u64(uchar **msg, int *msize, uvlong *val) { if(!msize || (*msize -= 8) >= 0) { *val |= *(*msg)++; *val |= *(*msg)++ << 8; *val |= *(*msg)++ << 16; *val |= *(*msg)++ << 24; - *val |= (unsigned long long)*(*msg)++ << 32; - *val |= (unsigned long long)*(*msg)++ << 40; - *val |= (unsigned long long)*(*msg)++ << 48; - *val |= (unsigned long long)*(*msg)++ << 56; + *val |= (uvlong)*(*msg)++ << 32; + *val |= (uvlong)*(*msg)++ << 40; + *val |= (uvlong)*(*msg)++ << 48; + *val |= (uvlong)*(*msg)++ << 56; } } void -ixp_pack_string(unsigned char **msg, int *msize, const char *s) { - unsigned short len = s ? strlen(s) : 0; +ixp_pack_string(uchar **msg, int *msize, const char *s) { + ushort len = s ? strlen(s) : 0; ixp_pack_u16(msg, msize, len); if(s) ixp_pack_data(msg, msize, (void *)s, len); } void -ixp_unpack_strings(unsigned char **msg, int *msize, unsigned short n, char **strings) { - unsigned char *s = *msg; - unsigned int i, size = 0; - unsigned short len; +ixp_unpack_strings(uchar **msg, int *msize, ushort n, char **strings) { + uchar *s = *msg; + uint i, size = 0; + ushort len; for(i=0; i<n; i++) { ixp_unpack_u16(&s, msize, &len); s += len; @@ -120,7 +120,7 @@ ixp_unpack_strings(unsigned char **msg, int *msize, unsigned short n, char **str } void -ixp_unpack_string(unsigned char **msg, int *msize, char **string, unsigned short *len) { +ixp_unpack_string(uchar **msg, int *msize, char **string, ushort *len) { ixp_unpack_u16(msg, msize, len); *string = NULL; if (!msize || (*msize -= *len) >= 0) { @@ -133,7 +133,7 @@ ixp_unpack_string(unsigned char **msg, int *msize, char **string, unsigned short } void -ixp_pack_data(unsigned char **msg, int *msize, unsigned char *data, unsigned int datalen) { +ixp_pack_data(uchar **msg, int *msize, uchar *data, uint datalen) { if(!msize || (*msize -= datalen) >= 0) { memcpy(*msg, data, datalen); *msg += datalen; @@ -141,7 +141,7 @@ ixp_pack_data(unsigned char **msg, int *msize, unsigned char *data, unsigned int } void -ixp_unpack_data(unsigned char **msg, int *msize, unsigned char **data, unsigned int datalen) { +ixp_unpack_data(uchar **msg, int *msize, uchar **data, uint datalen) { if(!msize || (*msize -= datalen) >= 0) { *data = ixp_emallocz(datalen); memcpy(*data, *msg, datalen); @@ -150,8 +150,8 @@ ixp_unpack_data(unsigned char **msg, int *msize, unsigned char **data, unsigned } void -ixp_pack_prefix(unsigned char *msg, unsigned int size, unsigned char id, - unsigned short tag) +ixp_pack_prefix(uchar *msg, uint size, uchar id, + ushort tag) { ixp_pack_u32(&msg, 0, size); ixp_pack_u8(&msg, 0, id); @@ -159,8 +159,8 @@ ixp_pack_prefix(unsigned char *msg, unsigned int size, unsigned char id, } void -ixp_unpack_prefix(unsigned char **msg, unsigned int *size, unsigned char *id, - unsigned short *tag) +ixp_unpack_prefix(uchar **msg, uint *size, uchar *id, + ushort *tag) { int msize; ixp_unpack_u32(msg, NULL, size); @@ -170,22 +170,22 @@ ixp_unpack_prefix(unsigned char **msg, unsigned int *size, unsigned char *id, } void -ixp_pack_qid(unsigned char **msg, int *msize, Qid * qid) { +ixp_pack_qid(uchar **msg, int *msize, Qid * qid) { ixp_pack_u8(msg, msize, qid->type); ixp_pack_u32(msg, msize, qid->version); ixp_pack_u64(msg, msize, qid->path); } void -ixp_unpack_qid(unsigned char **msg, int *msize, Qid * qid) { +ixp_unpack_qid(uchar **msg, int *msize, Qid * qid) { ixp_unpack_u8(msg, msize, &qid->type); ixp_unpack_u32(msg, msize, &qid->version); ixp_unpack_u64(msg, msize, &qid->path); } void -ixp_pack_stat(unsigned char **msg, int *msize, Stat * stat) { - ixp_pack_u16(msg, msize, ixp_sizeof_stat(stat) - sizeof(unsigned short)); +ixp_pack_stat(uchar **msg, int *msize, Stat * stat) { + ixp_pack_u16(msg, msize, ixp_sizeof_stat(stat) - sizeof(ushort)); ixp_pack_u16(msg, msize, stat->type); ixp_pack_u32(msg, msize, stat->dev); ixp_pack_qid(msg, msize, &stat->qid); @@ -200,10 +200,10 @@ ixp_pack_stat(unsigned char **msg, int *msize, Stat * stat) { } void -ixp_unpack_stat(unsigned char **msg, int *msize, Stat * stat) { - unsigned short dummy; +ixp_unpack_stat(uchar **msg, int *msize, Stat * stat) { + ushort dummy; - *msg += sizeof(unsigned short); + *msg += sizeof(ushort); ixp_unpack_u16(msg, msize, &stat->type); ixp_unpack_u32(msg, msize, &stat->dev); ixp_unpack_qid(msg, msize, &stat->qid); diff --git a/fcall.h b/fcall.h @@ -1,54 +1,54 @@ /* from fcall(3) in plan9port */ typedef struct Fcall { - unsigned char type; - unsigned short tag; - unsigned int fid; + uchar type; + ushort tag; + uint fid; union { struct { /* Tversion, Rversion */ - unsigned int msize; + uint msize; char *version; }; struct { /* Tflush */ - unsigned short oldtag; + ushort oldtag; }; struct { /* Rerror */ char *ename; }; struct { /* Ropen, Rcreate */ Qid qid; /* +Rattach */ - unsigned int iounit; + uint iounit; }; struct { /* Rauth */ Qid aqid; }; struct { /* Tauth, Tattach */ - unsigned int afid; + uint afid; char *uname; char *aname; }; struct { /* Tcreate */ - unsigned int perm; + uint perm; char *name; - unsigned char mode; /* +Topen */ + uchar mode; /* +Topen */ }; struct { /* Twalk */ - unsigned int newfid; - unsigned short nwname; + uint newfid; + ushort nwname; char *wname[IXP_MAX_WELEM]; }; struct { /* Rwalk */ - unsigned short nwqid; + ushort nwqid; Qid wqid[IXP_MAX_WELEM]; }; struct { /* Twrite */ - unsigned long long offset; /* +Tread */ + uvlong offset; /* +Tread */ /* +Rread */ - unsigned int count; /* +Tread */ + uint count; /* +Tread */ char *data; }; struct { /* Twstat, Rstat */ - unsigned short nstat; - unsigned char *stat; + ushort nstat; + uchar *stat; }; }; } Fcall; diff --git a/intmap.c b/intmap.c @@ -6,14 +6,14 @@ #define USED(v) if(v){}else{} struct Intlist { - unsigned long id; + ulong id; void* aux; Intlist* link; - unsigned int ref; + uint ref; }; -static unsigned long -hashid(Intmap *map, unsigned long id) { +static ulong +hashid(Intmap *map, ulong id) { return id%map->nhash; } @@ -23,13 +23,13 @@ nop(void *v) { } void -initmap(Intmap *m, unsigned long nhash, void *hash) { +initmap(Intmap *m, ulong nhash, void *hash) { m->nhash = nhash; m->hash = hash; } static Intlist** -llookup(Intmap *map, unsigned long id) { +llookup(Intmap *map, ulong id) { Intlist **lf; for(lf=&map->hash[hashid(map, id)]; *lf; lf=&(*lf)->link) @@ -67,7 +67,7 @@ execmap(Intmap *map, void (*run)(void*)) { } void * -lookupkey(Intmap *map, unsigned long id) { +lookupkey(Intmap *map, ulong id) { Intlist *f; void *v; @@ -79,10 +79,10 @@ lookupkey(Intmap *map, unsigned long id) { } void * -insertkey(Intmap *map, unsigned long id, void *v) { +insertkey(Intmap *map, ulong id, void *v) { Intlist *f; void *ov; - unsigned long h; + ulong h; if((f = *llookup(map, id))){ /* no decrement for ov because we're returning it */ @@ -101,10 +101,10 @@ insertkey(Intmap *map, unsigned long id, void *v) { } int -caninsertkey(Intmap *map, unsigned long id, void *v) { +caninsertkey(Intmap *map, ulong id, void *v) { Intlist *f; int rv; - unsigned long h; + ulong h; if(*llookup(map, id)) rv = 0; @@ -121,7 +121,7 @@ caninsertkey(Intmap *map, unsigned long id, void *v) { } void* -deletekey(Intmap *map, unsigned long id) { +deletekey(Intmap *map, ulong id) { Intlist **lf, *f; void *ov; diff --git a/ixp.h b/ixp.h @@ -5,9 +5,22 @@ #include <sys/types.h> +#define uchar _ixpuchar +#define ushort _ixpushort +#define uint _ixpuint +#define ulong _ixpulong +#define vlong _ixpvlong +#define uvlong _ixpuvlong +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +typedef long long vlong; +typedef unsigned long long uvlong; + #define IXP_VERSION "9P2000" -#define IXP_NOTAG (unsigned short)~0U /*Dummy tag */ -#define IXP_NOFID (unsigned int)~0 /*No auth */ +#define IXP_NOTAG (ushort)~0U /*Dummy tag */ +#define IXP_NOFID (uint)~0 /*No auth */ enum { IXP_MAX_VERSION = 32, IXP_MAX_ERROR = 128, @@ -132,24 +145,24 @@ enum { P9DMREAD = 0x4, /* mode bit for read permission */ typedef struct Qid Qid; struct Qid { - unsigned char type; - unsigned int version; - unsigned long long path; + uchar type; + uint version; + uvlong path; /* internal use only */ - unsigned char dir_type; + uchar dir_type; }; #include <ixp_fcall.h> /* stat structure */ typedef struct Stat { - unsigned short type; - unsigned int dev; + ushort type; + uint dev; Qid qid; - unsigned int mode; - unsigned int atime; - unsigned int mtime; - unsigned long long length; + uint mode; + uint atime; + uint mtime; + uvlong length; char *name; char *uid; char *gid; @@ -162,7 +175,7 @@ typedef struct Intmap Intmap; typedef struct Intlist Intlist; struct Intmap { - unsigned long nhash; + ulong nhash; Intlist **hash; }; @@ -188,7 +201,7 @@ struct IXPServer { typedef struct IXPClient { int fd; - unsigned int root_fid; + uint root_fid; Qid root_qid; Fcall ifcall; Fcall ofcall; @@ -201,7 +214,7 @@ typedef struct Fid { Intmap *map; char *uid; void *aux; - unsigned long fid; + ulong fid; Qid qid; signed char omode; } Fid; @@ -232,76 +245,76 @@ typedef struct P9Srv { } P9Srv; /* client.c */ -extern int ixp_client_dial(IXPClient *c, char *address, unsigned int rootfid); +extern int ixp_client_dial(IXPClient *c, char *address, uint rootfid); extern void ixp_client_hangup(IXPClient *c); -extern int ixp_client_remove(IXPClient *c, unsigned int newfid, char *filepath); -extern int ixp_client_create(IXPClient *c, unsigned int dirfid, char *name, - unsigned int perm, unsigned char mode); -extern int ixp_client_walk(IXPClient *c, unsigned int newfid, char *filepath); -extern int ixp_client_stat(IXPClient *c, unsigned int newfid, char *filepath); -extern int ixp_client_walkopen(IXPClient *c, unsigned int newfid, char *filepath, - unsigned char mode); -extern int ixp_client_open(IXPClient *c, unsigned int newfid, unsigned char mode); -extern int ixp_client_read(IXPClient *c, unsigned int fid, - unsigned long long offset, void *result, - unsigned int res_len); -extern int ixp_client_write(IXPClient *c, unsigned int fid, - unsigned long long offset, - unsigned int count, unsigned char *data); -extern int ixp_client_close(IXPClient *c, unsigned int fid); +extern int ixp_client_remove(IXPClient *c, uint newfid, char *filepath); +extern int ixp_client_create(IXPClient *c, uint dirfid, char *name, + uint perm, uchar mode); +extern int ixp_client_walk(IXPClient *c, uint newfid, char *filepath); +extern int ixp_client_stat(IXPClient *c, uint newfid, char *filepath); +extern int ixp_client_walkopen(IXPClient *c, uint newfid, char *filepath, + uchar mode); +extern int ixp_client_open(IXPClient *c, uint newfid, uchar mode); +extern int ixp_client_read(IXPClient *c, uint fid, + uvlong offset, void *result, + uint res_len); +extern int ixp_client_write(IXPClient *c, uint fid, + uvlong offset, + uint count, uchar *data); +extern int ixp_client_close(IXPClient *c, uint fid); extern int ixp_client_do_fcall(IXPClient * c); /* convert.c */ -extern void ixp_pack_u8(unsigned char **msg, int *msize, unsigned char val); -extern void ixp_unpack_u8(unsigned char **msg, int *msize, unsigned char *val); -extern void ixp_pack_u16(unsigned char **msg, int *msize, unsigned short val); -extern void ixp_unpack_u16(unsigned char **msg, int *msize, unsigned short *val); -extern void ixp_pack_u32(unsigned char **msg, int *msize, unsigned int val); -extern void ixp_unpack_u32(unsigned char **msg, int *msize, unsigned int *val); -extern void ixp_pack_u64(unsigned char **msg, int *msize, unsigned long long val); -extern void ixp_unpack_u64(unsigned char **msg, int *msize, unsigned long long *val); -extern void ixp_pack_string(unsigned char **msg, int *msize, const char *s); -extern void ixp_unpack_strings(unsigned char **msg, int *msize, unsigned short n, char **strings); -extern void ixp_unpack_string(unsigned char **msg, int *msize, char **string, unsigned short *len); -extern void ixp_pack_data(unsigned char **msg, int *msize, unsigned char *data, - unsigned int datalen); -extern void ixp_unpack_data(unsigned char **msg, int *msize, unsigned char **data, - unsigned int datalen); -extern void ixp_pack_prefix(unsigned char *msg, unsigned int size, - unsigned char id, unsigned short tag); -extern void ixp_unpack_prefix(unsigned char **msg, unsigned int *size, - unsigned char *id, unsigned short *tag); -extern void ixp_pack_qid(unsigned char **msg, int *msize, Qid *qid); -extern void ixp_unpack_qid(unsigned char **msg, int *msize, Qid *qid); -extern void ixp_pack_stat(unsigned char **msg, int *msize, Stat *stat); -extern void ixp_unpack_stat(unsigned char **msg, int *msize, Stat *stat); +extern void ixp_pack_u8(uchar **msg, int *msize, uchar val); +extern void ixp_unpack_u8(uchar **msg, int *msize, uchar *val); +extern void ixp_pack_u16(uchar **msg, int *msize, ushort val); +extern void ixp_unpack_u16(uchar **msg, int *msize, ushort *val); +extern void ixp_pack_u32(uchar **msg, int *msize, uint val); +extern void ixp_unpack_u32(uchar **msg, int *msize, uint *val); +extern void ixp_pack_u64(uchar **msg, int *msize, uvlong val); +extern void ixp_unpack_u64(uchar **msg, int *msize, uvlong *val); +extern void ixp_pack_string(uchar **msg, int *msize, const char *s); +extern void ixp_unpack_strings(uchar **msg, int *msize, ushort n, char **strings); +extern void ixp_unpack_string(uchar **msg, int *msize, char **string, ushort *len); +extern void ixp_pack_data(uchar **msg, int *msize, uchar *data, + uint datalen); +extern void ixp_unpack_data(uchar **msg, int *msize, uchar **data, + uint datalen); +extern void ixp_pack_prefix(uchar *msg, uint size, + uchar id, ushort tag); +extern void ixp_unpack_prefix(uchar **msg, uint *size, + uchar *id, ushort *tag); +extern void ixp_pack_qid(uchar **msg, int *msize, Qid *qid); +extern void ixp_unpack_qid(uchar **msg, int *msize, Qid *qid); +extern void ixp_pack_stat(uchar **msg, int *msize, Stat *stat); +extern void ixp_unpack_stat(uchar **msg, int *msize, Stat *stat); /* request.c */ extern void respond(P9Req *r, char *error); extern void serve_9pcon(IXPConn *c); /* intmap.c */ -extern void initmap(Intmap *m, unsigned long nhash, void *hash); +extern void initmap(Intmap *m, ulong nhash, void *hash); extern void incref_map(Intmap *m); extern void decref_map(Intmap *m); extern void freemap(Intmap *map, void (*destroy)(void*)); extern void execmap(Intmap *map, void (*destroy)(void*)); -extern void * lookupkey(Intmap *map, unsigned long id); -extern void * insertkey(Intmap *map, unsigned long id, void *v); -extern int caninsertkey(Intmap *map, unsigned long id, void *v); -extern void * deletekey(Intmap *map, unsigned long id); +extern void * lookupkey(Intmap *map, ulong id); +extern void * insertkey(Intmap *map, ulong id, void *v); +extern int caninsertkey(Intmap *map, ulong id, void *v); +extern void * deletekey(Intmap *map, ulong id); /* message.c */ -extern unsigned short ixp_sizeof_stat(Stat *stat); -extern unsigned int ixp_fcall2msg(void *msg, Fcall *fcall, unsigned int msglen); -extern unsigned int ixp_msg2fcall(Fcall *call, void *msg, unsigned int msglen); +extern ushort ixp_sizeof_stat(Stat *stat); +extern uint ixp_fcall2msg(void *msg, Fcall *fcall, uint msglen); +extern uint ixp_msg2fcall(Fcall *call, void *msg, uint msglen); /* server.c */ extern IXPConn *ixp_server_open_conn(IXPServer *s, int fd, void *aux, void (*read)(IXPConn *c), void (*close)(IXPConn *c)); extern void ixp_server_close_conn(IXPConn *c); extern char *ixp_server_loop(IXPServer *s); -extern unsigned int ixp_server_receive_fcall(IXPConn *c, Fcall *fcall); +extern uint ixp_server_receive_fcall(IXPConn *c, Fcall *fcall); extern int ixp_server_respond_fcall(IXPConn *c, Fcall *fcall); extern int ixp_server_respond_error(IXPConn *c, Fcall *fcall, char *errstr); extern void ixp_server_close(IXPServer *s); @@ -311,14 +324,14 @@ extern int ixp_connect_sock(char *address); extern int ixp_create_sock(char *address, char **errstr); /* transport.c */ -extern unsigned int ixp_send_message(int fd, void *msg, unsigned int msize, char **errstr); -extern unsigned int ixp_recv_message(int fd, void *msg, unsigned int msglen, char **errstr); +extern uint ixp_send_message(int fd, void *msg, uint msize, char **errstr); +extern uint ixp_recv_message(int fd, void *msg, uint msglen, char **errstr); /* util.c */ -extern void * ixp_emalloc(unsigned int size); -extern void * ixp_emallocz(unsigned int size); +extern void * ixp_emalloc(uint size); +extern void * ixp_emallocz(uint size); extern void ixp_eprint(const char *errstr, ...); -extern void * ixp_erealloc(void *ptr, unsigned int size); +extern void * ixp_erealloc(void *ptr, uint size); extern char * ixp_estrdup(const char *str); -extern unsigned int ixp_tokenize(char **result, unsigned int reslen, char *str, char delim); -extern unsigned int ixp_strlcat(char *dst, const char *src, unsigned int siz); +extern uint ixp_tokenize(char **result, uint reslen, char *str, char delim); +extern uint ixp_strlcat(char *dst, const char *src, uint siz); diff --git a/ixpc.c b/ixpc.c @@ -13,10 +13,10 @@ static IXPClient c = { 0 }; static char buffer[1024] = { 0 }; static void -write_data(unsigned int fid) { +write_data(uint fid) { void *data = ixp_emallocz(c.ofcall.iounit); - unsigned long long offset = 0; - unsigned int len = 0; + uvlong offset = 0; + uint len = 0; while((len = read(0, data, c.ofcall.iounit)) > 0) { if(ixp_client_write(&c, fid, offset, len, data) != len) { @@ -33,7 +33,7 @@ write_data(unsigned int fid) { static int xcreate(char *file) { - unsigned int fid; + uint fid; char *p = strrchr(file, '/'); if(!p) @@ -56,9 +56,9 @@ xcreate(char *file) { } static int -xwrite(char *file, unsigned char mode) { +xwrite(char *file, uchar mode) { /* open */ - unsigned int fid = c.root_fid << 2; + uint fid = c.root_fid << 2; if(ixp_client_walkopen(&c, fid, file, mode) == -1) { fprintf(stderr, "ixpc: cannot open file '%s': %s\n", file, c.errstr); return -1; @@ -68,9 +68,9 @@ xwrite(char *file, unsigned char mode) { } static int -xawrite(char *file, unsigned char mode) { +xawrite(char *file, uchar mode) { /* open */ - unsigned int fid = c.root_fid << 2; + uint fid = c.root_fid << 2; if(ixp_client_walkopen(&c, fid, file, mode) == -1) { fprintf(stderr, "ixpc: cannot open file '%s': %s\n", file, c.errstr); return -1; @@ -103,7 +103,7 @@ setrwx(long m, char *s) { } static char * -str_of_mode(unsigned int mode) { +str_of_mode(uint mode) { static char buf[16]; if(mode & IXP_DMDIR) @@ -119,7 +119,7 @@ str_of_mode(unsigned int mode) { } static char * -str_of_time(unsigned int val) { +str_of_time(uint val) { static char buf[32]; time_t t = (time_t)(int)val; char *tstr = ctime(&t); @@ -143,9 +143,9 @@ print_stat(Stat *s, int details) { } static void -xls(void *result, unsigned int msize, int details) { - unsigned int n = 0, i = 0; - unsigned char *p = result; +xls(void *result, uint msize, int details) { + uint n = 0, i = 0; + uchar *p = result; Stat *dir; static Stat stat; @@ -153,13 +153,13 @@ xls(void *result, unsigned int msize, int details) { ixp_unpack_stat(&p, NULL, &stat); n++; } - while(p - (unsigned char*)result < msize); + while(p - (uchar*)result < msize); dir = (Stat *)ixp_emallocz(sizeof(Stat) * n); p = result; do { ixp_unpack_stat(&p, NULL, &dir[i++]); } - while(p - (unsigned char*)result < msize); + while(p - (uchar*)result < msize); qsort(dir, n, sizeof(Stat), comp_stat); for(i = 0; i < n; i++) print_stat(&dir[i], details); @@ -169,14 +169,14 @@ xls(void *result, unsigned int msize, int details) { static int xdir(char *file, int details) { - unsigned int fid = c.root_fid << 2; + uint fid = c.root_fid << 2; /* XXX: buffer overflow */ Stat *s = ixp_emallocz(sizeof(Stat)); - unsigned char *buf; + uchar *buf; int count; - static unsigned char result[IXP_MAX_MSG]; + static uchar result[IXP_MAX_MSG]; void *data = NULL; - unsigned long long offset = 0; + uvlong offset = 0; if(ixp_client_stat(&c, fid, file) == -1) { fprintf(stderr, "ixpc: cannot stat file '%s': %s\n", file, c.errstr); @@ -210,10 +210,10 @@ xdir(char *file, int details) { static int xread(char *file) { - unsigned int fid = c.root_fid << 2; + uint fid = c.root_fid << 2; int count; - static unsigned char result[IXP_MAX_MSG]; - unsigned long long offset = 0; + static uchar result[IXP_MAX_MSG]; + uvlong offset = 0; if(ixp_client_walkopen(&c, fid, file, IXP_OREAD) == -1) { fprintf(stderr, "ixpc: cannot open file '%s': %s\n", file, c.errstr); @@ -232,7 +232,7 @@ xread(char *file) { static int xremove(char *file) { - unsigned int fid; + uint fid; fid = c.root_fid << 2; if(ixp_client_remove(&c, fid, file) == -1) { diff --git a/message.c b/message.c @@ -6,32 +6,32 @@ #include <stdlib.h> #include <string.h> -#define IXP_QIDSZ (sizeof(unsigned char) + sizeof(unsigned int)\ - + sizeof(unsigned long long)) +#define IXP_QIDSZ (sizeof(uchar) + sizeof(uint)\ + + sizeof(uvlong)) -static unsigned short +static ushort sizeof_string(const char *s) { - return sizeof(unsigned short) + strlen(s); + return sizeof(ushort) + strlen(s); } -unsigned short +ushort ixp_sizeof_stat(Stat * stat) { return IXP_QIDSZ - + 2 * sizeof(unsigned short) - + 4 * sizeof(unsigned int) - + sizeof(unsigned long long) + + 2 * sizeof(ushort) + + 4 * sizeof(uint) + + sizeof(uvlong) + sizeof_string(stat->name) + sizeof_string(stat->uid) + sizeof_string(stat->gid) + sizeof_string(stat->muid); } -unsigned int -ixp_fcall2msg(void *msg, Fcall *fcall, unsigned int msglen) { - unsigned int i = sizeof(unsigned char) + - sizeof(unsigned short) + sizeof(unsigned int); +uint +ixp_fcall2msg(void *msg, Fcall *fcall, uint msglen) { + uint i = sizeof(uchar) + + sizeof(ushort) + sizeof(uint); int msize = msglen - i; - unsigned char *p = msg + i; + uchar *p = (uchar*)msg + i; switch (fcall->type) { case TVERSION: @@ -96,13 +96,13 @@ ixp_fcall2msg(void *msg, Fcall *fcall, unsigned int msglen) { break; case RREAD: ixp_pack_u32(&p, &msize, fcall->count); - ixp_pack_data(&p, &msize, (unsigned char *)fcall->data, fcall->count); + ixp_pack_data(&p, &msize, (uchar *)fcall->data, fcall->count); break; case TWRITE: ixp_pack_u32(&p, &msize, fcall->fid); ixp_pack_u64(&p, &msize, fcall->offset); ixp_pack_u32(&p, &msize, fcall->count); - ixp_pack_data(&p, &msize, (unsigned char *)fcall->data, fcall->count); + ixp_pack_data(&p, &msize, (uchar *)fcall->data, fcall->count); break; case RWRITE: ixp_pack_u32(&p, &msize, fcall->count); @@ -129,13 +129,13 @@ ixp_fcall2msg(void *msg, Fcall *fcall, unsigned int msglen) { return msize; } -unsigned int -ixp_msg2fcall(Fcall *fcall, void *msg, unsigned int msglen) { +uint +ixp_msg2fcall(Fcall *fcall, void *msg, uint msglen) { int msize; - unsigned int i, tsize; - unsigned short len; - unsigned char *p = msg; - ixp_unpack_prefix(&p, (unsigned int *)&msize, &fcall->type, &fcall->tag); + uint i, tsize; + ushort len; + uchar *p = msg; + ixp_unpack_prefix(&p, (uint *)&msize, &fcall->type, &fcall->tag); tsize = msize; if(msize > msglen) /* bad message */ diff --git a/request.c b/request.c @@ -34,9 +34,9 @@ struct P9Conn { void *fidhash[FID_BUCKETS]; P9Srv *srv; IXPConn *conn; - unsigned int msize; - unsigned char *buf; - unsigned int ref; + uint msize; + uchar *buf; + uint ref; }; static void @@ -61,7 +61,7 @@ createfid(Intmap *map, int fid, P9Conn *pc) { } static int -destroyfid(P9Conn *pc, unsigned long fid) { +destroyfid(P9Conn *pc, ulong fid) { Fid *f; if(!(f = deletekey(&pc->fidmap, fid))) return 0; @@ -77,7 +77,7 @@ ixp_server_handle_fcall(IXPConn *c) { Fcall fcall = {0}; P9Conn *pc = c->aux; P9Req *req; - unsigned int msize; + uint msize; char *errstr = NULL; if(!(msize = ixp_recv_message(c->fd, pc->buf, pc->msize, &errstr))) @@ -296,7 +296,7 @@ respond(P9Req *r, char *error) { r->fid->qid = r->ofcall.qid; } free(r->ifcall.name); - r->ofcall.iounit = pc->msize - sizeof(unsigned long); + r->ofcall.iounit = pc->msize - sizeof(ulong); break; case TWALK: if(error || r->ofcall.nwqid < r->ifcall.nwname) { diff --git a/server.c b/server.c @@ -14,7 +14,7 @@ #include <sys/un.h> #include <unistd.h> -static unsigned char *msg[IXP_MAX_MSG]; +static uchar *msg[IXP_MAX_MSG]; IXPConn * ixp_server_open_conn(IXPServer *s, int fd, void *aux, @@ -86,10 +86,10 @@ ixp_server_loop(IXPServer *s) { return NULL; } -unsigned int +uint ixp_server_receive_fcall(IXPConn *c, Fcall *fcall) { - unsigned int msize; + uint msize; char *errstr = 0; if(!(msize = ixp_recv_message(c->fd, msg, IXP_MAX_MSG, &errstr))) { ixp_server_close_conn(c); @@ -101,7 +101,7 @@ ixp_server_receive_fcall(IXPConn *c, Fcall *fcall) int ixp_server_respond_fcall(IXPConn *c, Fcall *fcall) { char *errstr; - unsigned int msize = ixp_fcall2msg(msg, fcall, IXP_MAX_MSG); + uint msize = ixp_fcall2msg(msg, fcall, IXP_MAX_MSG); if(c->closed) return 0; if(ixp_send_message(c->fd, msg, msize, &errstr) != msize) { diff --git a/socket.c b/socket.c @@ -39,13 +39,13 @@ connect_inet_sock(char *host) { struct sockaddr_in addr = { 0 }; struct hostent *hp; char *port = strrchr(host, '!'); - unsigned int prt; + uint prt; if(!port) return -1; *port = 0; port++; - if(sscanf(port, "%d", &prt) != 1) + if(sscanf(port, "%u", &prt) != 1) return -1; /* init */ if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) @@ -82,7 +82,7 @@ create_inet_sock(char *host, char **errstr) { struct sockaddr_in addr = { 0 }; struct hostent *hp; char *port = strrchr(host, '!'); - unsigned int prt; + uint prt; if(!port) { *errstr = "no port provided in address"; diff --git a/transport.c b/transport.c @@ -12,9 +12,9 @@ #include <sys/un.h> #include <unistd.h> -unsigned int -ixp_send_message(int fd, void *msg, unsigned int msize, char **errstr) { - unsigned int num = 0; +uint +ixp_send_message(int fd, void *msg, uint msize, char **errstr) { + uint num = 0; int r; /* send message */ @@ -31,9 +31,9 @@ ixp_send_message(int fd, void *msg, unsigned int msize, char **errstr) { return num; } -static unsigned int -ixp_recv_data(int fd, void *msg, unsigned int msize, char **errstr) { - unsigned int num = 0; +static uint +ixp_recv_data(int fd, void *msg, uint msize, char **errstr) { + uint num = 0; int r = 0; /* receive data */ @@ -50,13 +50,13 @@ ixp_recv_data(int fd, void *msg, unsigned int msize, char **errstr) { return num; } -unsigned int -ixp_recv_message(int fd, void *msg, unsigned int msglen, char **errstr) { - unsigned int msize; +uint +ixp_recv_message(int fd, void *msg, uint msglen, char **errstr) { + uint msize; /* receive header */ - if(ixp_recv_data(fd, msg, sizeof(unsigned int), errstr) != - sizeof(unsigned int)) + if(ixp_recv_data(fd, msg, sizeof(uint), errstr) != + sizeof(uint)) return 0; ixp_unpack_u32((void *)&msg, NULL, &msize); if(msize > msglen) { @@ -64,8 +64,8 @@ ixp_recv_message(int fd, void *msg, unsigned int msglen, char **errstr) { return 0; } /* receive message */ - if(ixp_recv_data(fd, msg, msize - sizeof(unsigned int), errstr) - != msize - sizeof(unsigned int)) + if(ixp_recv_data(fd, msg, msize - sizeof(uint), errstr) + != msize - sizeof(uint)) return 0; return msize; } diff --git a/util.c b/util.c @@ -10,7 +10,7 @@ #include <unistd.h> void * -ixp_emalloc(unsigned int size) { +ixp_emalloc(uint size) { void *res = malloc(size); if(!res) @@ -19,7 +19,7 @@ ixp_emalloc(unsigned int size) { } void * -ixp_emallocz(unsigned int size) { +ixp_emallocz(uint size) { void *res = calloc(1, size); if(!res) @@ -38,7 +38,7 @@ ixp_eprint(const char *errstr, ...) { } void * -ixp_erealloc(void *ptr, unsigned int size) { +ixp_erealloc(void *ptr, uint size) { void *res = realloc(ptr, size); if(!res) @@ -55,10 +55,10 @@ ixp_estrdup(const char *str) { return res; } -unsigned int -ixp_tokenize(char **result, unsigned int reslen, char *str, char delim) { +uint +ixp_tokenize(char **result, uint reslen, char *str, char delim) { char *p, *n; - unsigned int i = 0; + uint i = 0; if(!str) return 0; @@ -114,12 +114,12 @@ ixp_tokenize(char **result, unsigned int reslen, char *str, char delim) { * Returns strlen(src) + MIN(siz, strlen(initial dst)). * If retval >= siz, truncation occurred. */ -unsigned int -ixp_strlcat(char *dst, const char *src, unsigned int siz) +uint +ixp_strlcat(char *dst, const char *src, uint siz) { const char *s; char *d; - unsigned int n, dlen; + uint n, dlen; n = siz; s = src;