summaryrefslogtreecommitdiff
path: root/lib/ZRecvPkt.c
diff options
context:
space:
mode:
authorGravatar Robert S. French <rfrench@mit.edu>1988-05-17 17:21:01 +0000
committerGravatar Robert S. French <rfrench@mit.edu>1988-05-17 17:21:01 +0000
commit031ec0f258f152c1e20905b381aa7f5974db1f3d (patch)
tree1c15619ec8a5192e2d5095c6efde5e9a47ddc7ce /lib/ZRecvPkt.c
parent4d21b4b5da809cdf4499190a1e27bff679a90422 (diff)
All sorts of changes for ver 0.2
Diffstat (limited to 'lib/ZRecvPkt.c')
-rw-r--r--lib/ZRecvPkt.c61
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);
}