From 031ec0f258f152c1e20905b381aa7f5974db1f3d Mon Sep 17 00:00:00 2001 From: "Robert S. French" Date: Tue, 17 May 1988 17:21:01 +0000 Subject: All sorts of changes for ver 0.2 --- lib/ZRecvPkt.c | 61 ++++++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 32 deletions(-) (limited to 'lib/ZRecvPkt.c') 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 -#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); } -- cgit v1.2.3