1 /* This file is part of the Project Athena Zephyr Notification System. 2 * It contains source for ZReceivePacket function. 3 * 4 * Created by: Robert French 5 * 6 * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology. 7 * For copying and distribution information, see the file 8 * "mit-copyright.h". 9 */ 10 11 #include "internal.h" 12 ZReceivePacket(buffer,ret_len,from)13Code_t ZReceivePacket(buffer, ret_len, from) 14 ZPacket_t buffer; 15 int *ret_len; 16 struct sockaddr_in *from; 17 { 18 Code_t retval; 19 struct _Z_InputQ *nextq; 20 21 if ((retval = Z_WaitForComplete()) != ZERR_NONE) 22 return (retval); 23 24 nextq = Z_GetFirstComplete(); 25 26 *ret_len = nextq->packet_len; 27 if (*ret_len > Z_MAXPKTLEN) 28 return (ZERR_PKTLEN); 29 30 (void) memcpy(buffer, nextq->packet, *ret_len); 31 32 if (from) 33 *from = nextq->from; 34 35 Z_RemQueue(nextq); 36 37 return (ZERR_NONE); 38 } 39