X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=string.c;h=b3c28dab69512f44240d2c242130151515b47981;hp=bb63120184c79b44270a4ae1ba671e6dd74de5e1;hb=f4cc69fd2fad1e51f47be16f552e7a114f43eade;hpb=8970261c6574f5a46941308ac68a17dc01bbd11f diff --git a/string.c b/string.c index bb631201..b3c28dab 100644 --- a/string.c +++ b/string.c @@ -135,6 +135,20 @@ __must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...) return msg; } +/** + * Free the content of a pointer and set it to \p NULL. + * + * This is equivalent to "free(*arg); *arg = NULL;". + * + * \param arg The pointer whose content should be freed. + */ +void freep(void *arg) +{ + void **ptr = (void **)arg; + free(*ptr); + *ptr = NULL; +} + /** * Paraslash's version of strcat(). * @@ -386,7 +400,9 @@ int for_each_line_ro(char *buf, size_t size, line_handler_t *line_handler, private_data); } +/** Return the hex characters of the lower 4 bits. */ #define hex(a) (hexchar[(a) & 15]) + static void write_size_header(char *buf, int n) { static char hexchar[] = "0123456789abcdef"; @@ -398,6 +414,17 @@ static void write_size_header(char *buf, int n) buf[4] = ' '; } +/** + * Read a four-byte hex-number and return its value. + * + * Each status item sent by para_server is prefixed with such a hex number in + * ASCII which describes the size of the status item. + * + * \param buf The buffer which must be at least four bytes long. + * + * \return The value of the hex number on success, \p -E_SIZE_PREFIX if the + * buffer did not contain only hex digits. + */ int read_size_header(const char *buf) { int i, len = 0; @@ -736,6 +763,17 @@ err: return ret; } +/** + * Compile a regular expression. + * + * This simple wrapper calls regcomp() and logs a message on errors. + * + * \param preg See regcomp(3). + * \param regex See regcomp(3). + * \param cflags See regcomp(3). + * + * \return Standard. + */ int para_regcomp(regex_t *preg, const char *regex, int cflags) { char *buf;