110 #define STR(x) vstring_str(x)
115 int flags, mode_t mode)
120 #define STREQ(x,y) (strcmp((x),(y)) == 0)
184 if (
STR(bp->
buf)[0] == 0) {
223 value :
"(MAILER-DAEMON)");
226 value :
"(MAILER-DAEMON)");
233 if ((offset = atol(value)) > 0)
234 rcpt_buf->
offset = offset;
250 msg_warn(
"%s: unknown attribute name: %s, ignored",
260 msg_warn(
"%s: malformed record: %.30s...",
265 if ((cp = strstr(recipient,
">: ")) == 0) {
266 msg_warn(
"%s: malformed record: %.30s...",
272 recipient :
"(MAILER-DAEMON)");
278 while (*text &&
ISSPACE(*text))
287 #define BUF_NODATA(buf) (STR(buf)[0] == 0)
288 #define BUF_ASSIGN(buf, text) vstring_strcpy((buf), (text))
#define MAIL_ATTR_DSN_NOTIFY
char * mystrdup(const char *str)
int vstring_get_nonl(VSTRING *vp, VSTREAM *fp)
void rcpb_reset(RCPT_BUF *rcpt)
void dsb_reset(DSN_BUF *dsb)
#define MAIL_ATTR_DSN_ACTION
const char * split_nameval(char *buf, char **name, char **value)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
#define MAIL_ATTR_DSN_STATUS
#define MAIL_ATTR_DSN_ORCPT
#define DSN_FROM_DSN_BUF(dsb)
int vstream_fclose(VSTREAM *stream)
VSTREAM * mail_queue_open(const char *queue_name, const char *queue_id, int flags, mode_t mode)
#define MAIL_ATTR_DSN_MNAME
int bounce_log_close(BOUNCE_LOG *bp)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
#define RECIPIENT_FROM_RCPT_BUF(buf)
VSTRING * vstring_free(VSTRING *vp)
BOUNCE_LOG * bounce_log_open(const char *queue_name, const char *queue_id, int flags, mode_t mode)
#define MAIL_ATTR_DSN_MTYPE
char * printable(char *string, int replacement)
#define BUF_ASSIGN(buf, text)
#define MAIL_ATTR_DSN_DTEXT
BOUNCE_LOG * bounce_log_read(BOUNCE_LOG *bp, RCPT_BUF *rcpt_buf, DSN_BUF *dsn_buf)
#define MAIL_ATTR_DSN_DTYPE
void * mymalloc(ssize_t len)