* \param n the highest-numbered descriptor in any of the two sets, plus 1
* \param readfds fds that should be checked for readability
* \param writefds fds that should be checked for writablility
- * \param timeout upper bound on the amount of time elapsed before select()
- * returns
+ * \param timeout_tv upper bound on the amount of time elapsed before select()
+ * returns
*
* \return The return value of the underlying select() call.
*
return 0;
return -E_FREAD;
}
+/**
+* paraslash's wrapper for fgets(3)
+* \param line pointer to the buffer to store the line
+* \param size the size of the buffer given by \a line
+* \param f the stream to read from
+*
+* \return Unlike the standard fgets() function, an integer value
+* is returned. On success, this function returns 1. On errors, -E_FGETS
+* is returned. A zero return value indicates an end of file condition.
+*/
+__must_check int para_fgets(char *line, int size, FILE *f)
+{
+again:
+ if (fgets(line, size, f))
+ return 1;
+ if (feof(f))
+ return 0;
+ if (!ferror(f))
+ return -E_FGETS;
+ if (errno != EINTR) {
+ PARA_ERROR_LOG("%s\n", strerror(errno));
+ return -E_FGETS;
+ }
+ clearerr(f);
+ goto again;
+}