- struct rset_multior_rfd *mrfd = (struct rset_multior_rfd *) rfd;
- struct rset_multior_info *info = mrfd->info;
- struct rset_multior_rfd **rfdp;
- int i;
-
- for (rfdp = &info->rfd_list; *rfdp; rfdp = &(*rfdp)->next)
- if (*rfdp == rfd)
- {
- *rfdp = (*rfdp)->next;
-
- heap_destroy (mrfd->h);
- for (i = 0; i<info->no_rsets; i++) {
- if (mrfd->items[i].fd)
- rset_close(info->rsets[i],mrfd->items[i].fd);
- xfree(mrfd->items[i].buf);
- }
- xfree(mrfd->items);
- if (mrfd->prevvalue)
- xfree(mrfd->prevvalue);
- xfree(mrfd);
- return;
- }
- logf (LOG_FATAL, "r_close but no rfd match!");
- assert (0);
-}
-
-static void r_delete (RSET ct)
-{
- struct rset_multior_info *info = (struct rset_multior_info *) ct->buf;
+ struct rset_multior_info *info=(struct rset_multior_info *)(rfd->rset->priv);
+ struct rset_multior_rfd *p=(struct rset_multior_rfd *)(rfd->priv);