* the init function of this sender
*
* It must fill in all function pointers of \a s as well as the \a client_cmds
- * array, see below. It should also do all neccessary preparations to init
+ * array, see below. It should also do all necessary preparations to init
* this sending facility, for example it could open a tcp port.
*/
void (*init)(struct sender *s);
* file descriptors to the \a rfds or the \a wfds set.
*
* If a file descriptor was added, \a max_fileno must be increased by
- * this function, if neccessary.
+ * this function, if necessary.
*
* \sa select(2)
*/
* array of function pointers for the sender subcommands
*
* Each sender may implement any subset of the sender commands by filling in
- * the aprropriate function pointer in the array. A \p NULL pointer means this
+ * the appropriate function pointer in the array. A \p NULL pointer means this
* command is not implemented by this sender.
*/
int (*client_cmds[NUM_SENDER_CMDS])(struct sender_command_data*);
};
-/**
- * check a file descriptor for writability
- *
- * \param fd the file desctiptor
- *
- * \return positive if fd is ready for writing, zero if it isn't, negative if
- * an error occured.
- */
-
-static inline int write_ok(int fd)
-{
- struct timeval tv = {0, 0};
- fd_set wfds;
- int ret;
-again:
- FD_ZERO(&wfds);
- FD_SET(fd, &wfds);
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- ret = select(fd + 1, NULL, &wfds, NULL, &tv);
- if (ret < 0 && errno == EINTR)
- goto again;
- return ret;
-}