81 #ifdef STRCASECMP_IN_STRINGS_H
114 if (addr[1] !=
'/') {
115 msg_warn(
"bad home directory syntax for: %s", addr);
117 "mail system configuration error");
120 }
else if (usr_attr.
home == 0) {
121 msg_warn(
"unknown home directory for: %s", addr);
123 "mail system configuration error");
126 }
else if (usr_attr.
home[0] ==
'/' && usr_attr.
home[1] == 0) {
141 static char include[] =
":include:";
149 if (*
STR(addr_buf) ==
'/') {
151 }
else if (*
STR(addr_buf) ==
'~') {
152 status = deliver_token_home(state, usr_attr,
STR(addr_buf));
153 }
else if (*
STR(addr_buf) ==
'|') {
156 "mail to command is restricted");
161 }
else if (
strncasecmp(
STR(addr_buf), include,
sizeof(include) - 1) == 0) {
162 path =
STR(addr_buf) +
sizeof(include) - 1;
175 char *
string,
int *addr_count)
182 msg_info(
"deliver_token_string: %s",
string);
185 for (addr = tree; addr != 0; addr = addr->
next) {
208 if (*
STR(buf) !=
'#') {
216 "error reading forwarding file: %m");
#define BOUNCE_ATTR(attr)
int deliver_token(LOCAL_STATE state, USER_ATTR usr_attr, TOK822 *addr)
int deliver_file(LOCAL_STATE state, USER_ATTR usr_attr, char *path)
int deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *command)
int deliver_include(LOCAL_STATE state, USER_ATTR usr_attr, char *path)
DELIVER_REQUEST * request
int strncasecmp(const char *s1, const char *s2, size_t n)
#define BOUNCE_FLAGS(request)
TOK822 * tok822_free_tree(TOK822 *)
int bounce_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int local_cmd_deliver_mask
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
int deliver_resolve_tree(LOCAL_STATE, USER_ATTR, TOK822 *)
VSTRING * tok822_internalize(VSTRING *, TOK822 *, int)
DSN_BUF * dsb_simple(DSN_BUF *dsb, const char *status, const char *format,...)
#define vstring_fgets_bound(s, p, l)
char * concatenate(const char *arg0,...)
int deliver_token_string(LOCAL_STATE state, USER_ATTR usr_attr, char *string, int *addr_count)
VSTRING * vstring_free(VSTRING *vp)
int defer_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
#define vstream_ferror(vp)
int deliver_token_stream(LOCAL_STATE state, USER_ATTR usr_attr, VSTREAM *fp, int *addr_count)
void msg_info(const char *fmt,...)