#include <stdlib.h>
static const char * const text[] = {
"Generic Sieve error",
"Sieve interpretor not finalized",
"Parse error in Sieve script",
"Run-time error during Sieve execution",
"Internal error in Sieve subsystem",
"Memory exhausted in Sieve subsystem",
"Sieve action already taken",
0
};
struct error_table {
char const * const * msgs;
long base;
int n_msgs;
};
struct et_list {
struct et_list *next;
const struct error_table * table;
};
extern struct et_list *_et_list;
const struct error_table et_siev_error_table = { text, -1237848064L, 7 };
static struct et_list link = { 0, 0 };
void initialize_siev_error_table_r(struct et_list **list);
void initialize_siev_error_table(void);
void initialize_siev_error_table(void) {
initialize_siev_error_table_r(&_et_list);
}
void initialize_siev_error_table_r(struct et_list **list)
{
struct et_list *et, **end;
for (end = list, et = *list; et; end = &et->next, et = et->next)
if (et->table->msgs == text)
return;
et = malloc(sizeof(struct et_list));
if (et == 0) {
if (!link.table)
et = &link;
else
return;
}
et->table = &et_siev_error_table;
et->next = 0;
*end = et;
}