cleanup_strerror.c [plain text]
#include <sys_defs.h>
#include <vstring.h>
#include <msg.h>
#include <cleanup_user.h>
static const CLEANUP_STAT_DETAIL cleanup_stat_map[] = {
CLEANUP_STAT_DEFER, 451, "4.7.1", "service unavailable",
CLEANUP_STAT_PROXY, 451, "4.3.0", "queue file write error",
CLEANUP_STAT_BAD, 451, "4.3.0", "internal protocol error",
CLEANUP_STAT_RCPT, 550, "5.1.0", "no recipients specified",
CLEANUP_STAT_HOPS, 554, "5.4.0", "too many hops",
CLEANUP_STAT_SIZE, 552, "5.3.4", "message file too big",
CLEANUP_STAT_CONT, 550, "5.7.1", "message content rejected",
CLEANUP_STAT_WRITE, 451, "4.3.0", "queue file write error",
};
static CLEANUP_STAT_DETAIL cleanup_stat_success = {
CLEANUP_STAT_OK, 250, "2.0.0", "Success",
};
const char *cleanup_strerror(unsigned status)
{
unsigned i;
if (status == CLEANUP_STAT_OK)
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);
msg_panic("cleanup_strerror: unknown status %u", status);
}
const CLEANUP_STAT_DETAIL *cleanup_stat_detail(unsigned status)
{
unsigned i;
if (status == CLEANUP_STAT_OK)
return (&cleanup_stat_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);
msg_panic("cleanup_stat_detail: unknown status %u", status);
}