103 #define STR(x) vstring_str(x)
109 static const char myname[] =
"dsn_filter_create";
113 msg_info(
"%s: %s %s", myname, title, map_names);
125 static const char myname[] =
"dsn_filter_lookup";
136 #define IS_SUCCESS_DSN(s) (dsn_valid(s) && (s)[0] == '2')
137 #define IS_NDR_DSN(s) (dsn_valid(s) && ((s)[0] == '4' || (s)[0] == '5'))
147 msg_panic(
"%s: dsn argument with bad status code: %s",
155 msg_panic(
"%s: recursive call is not allowed", myname);
171 (result[0] ==
'4' ?
"delayed" :
172 result[0] ==
'5' ?
"failed" :
186 static const char myname[] =
"dsn_filter_free";
DSN_SPLIT * dsn_split(DSN_SPLIT *dp, const char *def_dsn, const char *text)
NORETURN msg_panic(const char *fmt,...)
#define DSN_ASSIGN(dsn, _status, _action, _reason, _dtype, _dtext, _mtype, _mname)
void dsn_filter_free(DSN_FILTER *fp)
#define DSN_STATUS(dsn_buf)
#define IS_SUCCESS_DSN(s)
DSN_FILTER * dsn_filter_create(const char *title, const char *map_names)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
MAPS * maps_create(const char *title, const char *map_names, int dict_flags)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
VSTRING * vstring_sprintf(VSTRING *vp, const char *format,...)
MAPS * maps_free(MAPS *maps)
VSTRING * vstring_free(VSTRING *vp)
const char * maps_find(MAPS *maps, const char *name, int flags)
void * mymalloc(ssize_t len)
void msg_info(const char *fmt,...)
DSN * dsn_filter_lookup(DSN_FILTER *fp, DSN *dsn)