fix doc tpyos, rename some enums, fix printf format len for non-zero terminated strings (hg status), pass args to memcache_cmd_format_header via memcache_req_*, handle zero-length STORE requests, memcache_req is_buf_ours + free, other function name typos (keymemcache_req_key), fix req state behaviour re *_DATA_* for STORE requests and FETCH/END, better memcache_server connpool events/management, modular memcache_test with a working benchmark. This is a long commit message.
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include "common.h"
static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
FILE *stream = use_stderr ? stderr : stdout;
if (func)
fprintf(stream, "%s: ", func);
vfprintf(stream, fmt, va);
if (perr)
fprintf(stream, ": %s\n", strerror(errno));
fprintf(stream, "\n");
}
void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
va_list va;
va_start(va, fmt);
_generic_err_vargs(use_stderr, func, perr, fmt, va);
va_end(va);
}
void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) {
va_list va;
va_start(va, fmt);
_generic_err_vargs(use_stderr, func, perr, fmt, va);
va_end(va);
exit(EXIT_FAILURE);
}