1 /* This file is part of the Project Athena Zephyr Notification System.
2 * It contains source for the ZPeekIfNotice function.
4 * Created by: Robert French
7 * $Author: warmenhoven $
9 * Copyright (c) 1987,1988 by the Massachusetts Institute of Technology.
10 * For copying and distribution information, see the file
16 static char rcsid_ZPeekIfNotice_c
[] = "$Header$";
21 Code_t
ZPeekIfNotice(notice
, from
, predicate
, args
)
23 struct sockaddr_in
*from
;
30 struct _Z_InputQ
*qptr
;
32 if ((retval
= Z_WaitForComplete()) != ZERR_NONE
)
36 qptr
= Z_GetFirstComplete();
38 if ((retval
= ZParseNotice(qptr
->packet
, qptr
->packet_len
,
39 &tmpnotice
)) != ZERR_NONE
)
41 if ((*predicate
)(&tmpnotice
, args
)) {
42 if (!(buffer
= (char *) malloc((unsigned) qptr
->packet_len
)))
44 (void) memcpy(buffer
, qptr
->packet
, qptr
->packet_len
);
47 if ((retval
= ZParseNotice(buffer
, qptr
->packet_len
,
48 notice
)) != ZERR_NONE
) {
54 qptr
= Z_GetNextComplete(qptr
);
56 if ((retval
= Z_ReadWait()) != ZERR_NONE
)