Lines Matching refs:disc
29 Rsdisc_t* rsdisc(Rs_t* rs, Rsdisc_t* disc, int op)
31 Rsdisc_t* rsdisc(rs, disc, op)
33 Rsdisc_t* disc;
45 old = rs->disc;
46 if(disc)
48 (*old->eventf)(rs,RS_DISC,(Void_t*)disc,(Void_t*)0,old) < 0)
52 rs->type |= disc->type&(RS_DSAMELEN|RS_KSAMELEN);
54 if((disc->type&RS_DSAMELEN) && !disc->defkeyf)
57 rs->disc = disc;
58 rs->events = rs->disc->events;
59 for (cur = rs->disc; cur; cur = cur->disc)
64 cur = rs->disc;
65 if (disc)
68 cur = cur->disc;
69 if (disc == top)
75 cur = rs->disc;
76 if (disc)
77 while (cur && cur != disc)
78 cur = (prv = cur)->disc;
81 disc = cur;
83 prv->disc = cur->disc;
85 rs->disc = cur->disc;
86 if ((disc->events & RS_POP) &&
87 (*disc->eventf)(rs, RS_POP, (Void_t*)0, (Void_t*)0, disc) < 0)
89 if (rs->disc)
91 rs->events = rs->disc->events;
92 for (cur = rs->disc; cur; cur = cur->disc)
97 disc = 0;
98 return disc;
100 if (!disc)
102 for (prv = 0, cur = rs->disc; cur; cur = (prv = cur)->disc)
103 if (cur == disc)
111 prv->disc = cur->disc;
112 cur->disc = rs->disc;
113 rs->disc = cur;
115 return disc;
117 disc->disc = rs->disc;
118 rs->disc = disc;
119 rs->events |= disc->events;
120 return disc;