1 /* This file is part of the Project Athena Zephyr Notification System.
2 * It contains source for the ZCheckIfNotice 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
18 static const char rcsid_ZCheckIfNotice_c
[] = "$Id: ZCkIfNot.c 2096 2001-07-31 01:00:39Z warmenhoven $";
21 Code_t
ZCheckIfNotice(notice
, from
, predicate
, args
)
23 struct sockaddr_in
*from
;
24 register int (*predicate
) __P((ZNotice_t
*, void *));
29 register char *buffer
;
30 register struct _Z_InputQ
*qptr
;
32 if ((retval
= Z_ReadEnqueue()) != ZERR_NONE
)
35 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
) {
55 qptr
= Z_GetNextComplete(qptr
);
58 return (ZERR_NONOTICE
);