1 /* This file is part of the Project Athena Zephyr Notification System.
2  * It contains source for the ZGetSubscriptions function.
3  *
4  *	Created by:	Robert French
5  *
6  *	Copyright (c) 1987 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 #define min(a,b) ((a)<(b)?(a):(b))
14 
15 /* Prototype for -Wmissing-prototypes */
16 Code_t ZGetSubscriptions(ZSubscription_t *subscription, int *numsubs);
17 
ZGetSubscriptions(ZSubscription_t * subscription,int * numsubs)18 Code_t ZGetSubscriptions(ZSubscription_t *subscription, int *numsubs)
19 {
20     int i;
21 
22     if (!__subscriptions_list)
23 	return (ZERR_NOSUBSCRIPTIONS);
24 
25     if (__subscriptions_next == __subscriptions_num)
26 	return (ZERR_NOMORESUBSCRIPTIONS);
27 
28     for (i=0;i<min(*numsubs, __subscriptions_num-__subscriptions_next);i++)
29 	subscription[i] = __subscriptions_list[i+__subscriptions_next];
30 
31     if (__subscriptions_num-__subscriptions_next < *numsubs)
32 	*numsubs = __subscriptions_num-__subscriptions_next;
33 
34     __subscriptions_next += *numsubs;
35 
36     return (ZERR_NONE);
37 }
38