void *p = malloc(size);
if (!p) {
- PARA_EMERG_LOG("%s", "malloc failed, aborting\n");
+ PARA_EMERG_LOG("malloc failed (size = %zu), aborting\n",
+ size);
exit(EXIT_FAILURE);
}
return p;
return para_strdup(u.nodename);
}
-enum for_each_line_modes{LINE_MODE_RO, LINE_MODE_RW};
+/**
+ * Used to distinguish between read-only and read-write mode.
+ *
+ * \sa for_each_line(), for_each_line_ro().
+ */
+enum for_each_line_modes{
+ /** Activate read-only mode. */
+ LINE_MODE_RO,
+ /** Activate read-write mode. */
+ LINE_MODE_RW
+};
static int for_each_complete_line(enum for_each_line_modes mode, char *buf,
size_t size, line_handler_t *line_handler, void *private_data)
}
/**
- * call a custom function for each complete line
+ * Call a custom function for each complete line.
*
- * \param buf the buffer containing data seperated by newlines
- * \param size the number of bytes in \a buf
- * \param line_handler the custom function
- * \param private_data pointer to data which is passed to \a line_handler
+ * \param buf The buffer containing data seperated by newlines.
+ * \param size The number of bytes in \a buf.
+ * \param line_handler The custom function.
+ * \param private_data Pointer passed to \a line_handler.
*
* If \p line_handler is \p NULL, the function returns the number of complete
* lines in \p buf. Otherwise, \p line_handler is called for each complete
* of bytes not handled to \p line_handler on success, or the negative return
* value of the \p line_handler on errors.
*
- * \sa for_each_line_ro()
+ * \sa for_each_line_ro().
*/
int for_each_line(char *buf, size_t size, line_handler_t *line_handler,
void *private_data)
}
/**
- * call a custom function for each complete line
- *
- * \param buf same meaning as in \p for_each_line
- * \param size same meaning as in \p for_each_line
- * \param line_handler same meaning as in \p for_each_line
- * \param private_data same meaning as in \p for_each_line
+ * Call a custom function for each complete line.
*
- * This function behaves like \p for_each_line() with the following differences:
+ * \param buf Same meaning as in \p for_each_line().
+ * \param size Same meaning as in \p for_each_line().
+ * \param line_handler Same meaning as in \p for_each_line().
+ * \param private_data Same meaning as in \p for_each_line().
*
- * - buf is left unchanged
+ * This function behaves like \p for_each_line(), but \a buf is left unchanged.
*
* \return On success, the function returns the number of complete lines in \p
* buf, otherwise the (negative) return value of \p line_handler is returned.
*
- * \sa for_each_line()
+ * \sa for_each_line().
*/
int for_each_line_ro(char *buf, size_t size, line_handler_t *line_handler,
void *private_data)
return ret;
}
+/** \cond LLONG_MAX and LLONG_LIN might not be defined. */
#ifndef LLONG_MAX
#define LLONG_MAX (1 << (sizeof(long) - 1))
#endif
#ifndef LLONG_MIN
#define LLONG_MIN (-LLONG_MAX - 1LL)
#endif
+/** \endcond */
/**
* Convert a string to a 64-bit signed integer value.