diff options
author | Robert S. French <rfrench@mit.edu> | 1988-05-17 17:21:01 +0000 |
---|---|---|
committer | Robert S. French <rfrench@mit.edu> | 1988-05-17 17:21:01 +0000 |
commit | 031ec0f258f152c1e20905b381aa7f5974db1f3d (patch) | |
tree | 1c15619ec8a5192e2d5095c6efde5e9a47ddc7ce /lib/ZRecvPkt.c | |
parent | 4d21b4b5da809cdf4499190a1e27bff679a90422 (diff) |
All sorts of changes for ver 0.2
Diffstat (limited to 'lib/ZRecvPkt.c')
-rw-r--r-- | lib/ZRecvPkt.c | 61 |
1 files changed, 29 insertions, 32 deletions
diff --git a/lib/ZRecvPkt.c b/lib/ZRecvPkt.c index 611a3ea..33a48c0 100644 --- a/lib/ZRecvPkt.c +++ b/lib/ZRecvPkt.c @@ -20,39 +20,36 @@ static char rcsid_ZReceivePacket_c[] = "$Header$"; #include <zephyr/zephyr_internal.h> -#define min(a,b) ((a)<(b)?(a):(b)) - -Code_t ZReceivePacket(buffer,buffer_len,ret_len,from) - ZPacket_t buffer; - int buffer_len; - int *ret_len; - struct sockaddr_in *from; +Code_t ZReceivePacket(buffer, ret_len, from) + ZPacket_t buffer; + int *ret_len; + struct sockaddr_in *from; { - int retval; - - if (ZGetFD() < 0) - return (ZERR_NOPORT); - - if (!ZQLength()) - if ((retval = Z_ReadWait()) != ZERR_NONE) - return (retval); - - if (buffer_len < __Q_Head->packet_len) { - *ret_len = buffer_len; - retval = ZERR_PKTLEN; - } - else { - *ret_len = __Q_Head->packet_len; - retval = ZERR_NONE; - } - - if (ret_len) - bcopy(__Q_Head->packet,buffer,*ret_len); - if (from) - bcopy((char *)&__Q_Head->from,(char *)from, - sizeof(struct sockaddr_in)); + int retval; + struct _Z_InputQ *nextq; + + if (ZGetFD() < 0) + return (ZERR_NOPORT); + + if (ZQLength()) { + if ((retval = Z_ReadEnqueue()) != ZERR_NONE) + return (retval); + } + else { + if ((retval = Z_ReadWait()) != ZERR_NONE) + return (retval); + } + + nextq = (struct _Z_InputQ *) Z_GetFirstComplete(); + + *ret_len = nextq->packet_len; + + bcopy(nextq->packet, buffer, *ret_len); + + if (from) + *from = nextq->from; - (void) Z_RemQueue(__Q_Head); + (void) Z_RemQueue(nextq); - return (retval); + return (ZERR_NONE); } |