cleanup_strerror.c [plain text]
#include <sys_defs.h>
#include <vstring.h>
#include "cleanup_user.h"
struct cleanup_stat_map {
unsigned status;
const char *text;
};
static struct cleanup_stat_map cleanup_stat_map[] = {
CLEANUP_STAT_BAD, "Internal protocol error",
CLEANUP_STAT_HOVFL, "Message header too long",
CLEANUP_STAT_ROVFL, "Too many extracted recipients",
CLEANUP_STAT_RCPT, "No recipients specified",
CLEANUP_STAT_HOPS, "Too many hops",
CLEANUP_STAT_SIZE, "Message file too big",
CLEANUP_STAT_CONT, "Message content rejected",
CLEANUP_STAT_WRITE, "Error writing message file",
};
const char *cleanup_strerror(unsigned status)
{
static VSTRING *unknown;
unsigned i;
if (status == 0)
return ("Success");
for (i = 0; i < sizeof(cleanup_stat_map) / sizeof(cleanup_stat_map[0]); i++)
if (cleanup_stat_map[i].status & status)
return (cleanup_stat_map[i].text);
if (unknown == 0)
unknown = vstring_alloc(20);
vstring_sprintf(unknown, "Unknown status %u", status);
return (vstring_str(unknown));
}