#ifndef _WARNP_H_
#define _WARNP_H_
#include <errno.h>
#define warn libcperciva_warn
#define warnx libcperciva_warnx
void warnp_setprogname(const char *);
#define WARNP_INIT do { \
if (argv[0] != NULL) \
warnp_setprogname(argv[0]); \
} while (0)
void warn(const char *, ...);
void warnx(const char *, ...);
#ifdef DEBUG
#define warnline do { \
warnx("%s, %d", __FILE__, __LINE__); \
} while (0)
#else
#define warnline
#endif
#define warnp(...) do { \
warnline; \
if (errno != 0) { \
warn(__VA_ARGS__); \
errno = 0; \
} else \
warnx(__VA_ARGS__); \
} while (0)
#define warn0(...) do { \
warnline; \
warnx(__VA_ARGS__); \
errno = 0; \
} while (0)
#endif