void iobroker_destroy(iobroker_set *iobs, int flags) { int i; int (*dereg)(iobroker_set *, int) = iobroker_unregister; if (!iobs) return; if (flags & IOBROKER_CLOSE_SOCKETS) { dereg = iobroker_close; } #ifdef IOBROKER_USES_EPOLL if (iobs->epfd >= 0) close(iobs->epfd); #elif !defined(IOBROKER_USES_SELECT) if (iobs->pfd) free(iobs->pfd); #endif if (!iobs->iobroker_fds) return; for (i = 0; i < iobs->max_fds; i++) { if (iobs->iobroker_fds[i] == NULL) continue; dereg(iobs, i); } free(iobs->iobroker_fds); iobs->iobroker_fds = NULL; #ifdef IOBROKER_USES_EPOLL free(iobs->ep_events); close(iobs->epfd); #endif free(iobs); }
static void deregister(const char* fmt) { std::ofstream dereg(std::string("/proc/sys/fs/binfmt_misc/") + fmt); if (dereg.is_open()) dereg << "-1\n"; }