minimal plan9port to cross-build Jehanne
This commit is contained in:
31
lib/lib9/read9pmsg.c
Normal file
31
lib/lib9/read9pmsg.c
Normal file
@ -0,0 +1,31 @@
|
||||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <fcall.h>
|
||||
|
||||
int
|
||||
read9pmsg(int fd, void *abuf, uint n)
|
||||
{
|
||||
int m, len;
|
||||
uchar *buf;
|
||||
|
||||
buf = abuf;
|
||||
|
||||
/* read count */
|
||||
m = readn(fd, buf, BIT32SZ);
|
||||
if(m != BIT32SZ){
|
||||
if(m < 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
len = GBIT32(buf);
|
||||
if(len <= BIT32SZ || len > n){
|
||||
werrstr("bad length in 9P2000 message header");
|
||||
return -1;
|
||||
}
|
||||
len -= BIT32SZ;
|
||||
m = readn(fd, buf+BIT32SZ, len);
|
||||
if(m < len)
|
||||
return 0;
|
||||
return BIT32SZ+m;
|
||||
}
|
Reference in New Issue
Block a user