1 /* This file is part of the Project Athena Zephyr Notification System.
2  * It contains source for the ZPeekIfNotice 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 
13 #if 0
14 Code_t ZPeekIfNotice(notice, from, predicate, args)
15     ZNotice_t *notice;
16     struct sockaddr_in *from;
17     int (*predicate)();
18     char *args;
19 {
20     ZNotice_t tmpnotice;
21     Code_t retval;
22     char *buffer;
23     struct _Z_InputQ *qptr;
24 
25     if ((retval = Z_WaitForComplete()) != ZERR_NONE)
26 	return (retval);
27 
28     for (;;) {
29 	qptr = Z_GetFirstComplete();
30 	while (qptr) {
31 	    if ((retval = ZParseNotice(qptr->packet, qptr->packet_len,
32 				       &tmpnotice)) != ZERR_NONE)
33 		return (retval);
34 	    if ((*predicate)(&tmpnotice, args)) {
35 		if (!(buffer = (char *) malloc((unsigned) qptr->packet_len)))
36 		    return (ENOMEM);
37 		(void) memcpy(buffer, qptr->packet, qptr->packet_len);
38 		if (from)
39 		    *from = qptr->from;
40 		if ((retval = ZParseNotice(buffer, qptr->packet_len,
41 					   notice)) != ZERR_NONE) {
42 		    free(buffer);
43 		    return (retval);
44 		}
45 		return (ZERR_NONE);
46 	    }
47 	    qptr = Z_GetNextComplete(qptr);
48 	}
49 	if ((retval = Z_ReadWait()) != ZERR_NONE)
50 	    return (retval);
51     }
52 }
53 #endif
54