/* we recommend to not print,
* but if you want to, just switch undef and define
#define FDSDEBUG
*/
#undef FDSDEBUG
#ifdef FDSDEBUG
#define fdfprintf(x, y, ...) if(isatty(2)) fprintf(x, y);
#else
#define fdfprintf(x, y, ...)
#endif
struct fd_callbackp {
void (*callback)(struct fd_callbackp *);
void *param;
int fd; /* fd number */
int rdf; /* fd is set for reading */
int wrf; /* fd is set for writing */
};
#define FDT_NONE 0
#define FDT_AUTH 1
#define FDT_RESOLVER 2
#define FDT_CLIENT 3
#define FDT_LISTENER 4
#define FDT_CALLBACKP 5
#define FDF_WANTREAD 0x01
#define FDF_WANTWRITE 0x02
void init_fds();
void add_fd(int fd, int type, void *value);
void del_fd(int fd);
#define add_callback_fd(fds) add_fd((fds)->fd, FDT_CALLBACKP, (fds))
#define del_callback_fd(fds) del_fd((fds)->fd)
void get_fd_info(int fd, int *type, unsigned int *flags, void **value);
void set_fd_flags(int fd, unsigned int flags);
void unset_fd_flags(int fd, unsigned int flags);
void set_fd_internal(int fd, void *ptr);
void *get_fd_internal(int fd);
void check_client_fd(aClient *cptr);
void report_fds(aClient *cptr);
syntax highlighted by Code2HTML, v. 0.9.1