X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Fstructs.h;h=14d109869ec4ceb67972f1e6f2cf4b365d67a6aa;hp=d9d37f1c028c41871d43293d130b38658df82865;hb=a09f294202729d7e532a1584536fa14e491a0b71;hpb=e9166683487c860e0b817153531cb1b2b0485347 diff --git a/src/src/structs.h b/src/src/structs.h index d9d37f1c0..14d109869 100644 --- a/src/src/structs.h +++ b/src/src/structs.h @@ -28,11 +28,11 @@ struct router_info; /* Structure for remembering macros for the configuration file */ typedef struct macro_item { - struct macro_item *next; - BOOL command_line; - unsigned namelen; - uschar * replacement; - uschar name[1]; + struct macro_item * next; + BOOL command_line; + unsigned namelen; + const uschar * name; + const uschar * replacement; } macro_item; /* Structure for bit tables for debugging and logging */ @@ -230,12 +230,15 @@ typedef struct transport_info { #define tc_chunk_last BIT(1) /* annotate chunk SMTP cmd as LAST */ struct transport_context; -typedef int (*tpt_chunk_cmd_cb)(int fd, struct transport_context * tctx, - unsigned len, unsigned flags); +typedef int (*tpt_chunk_cmd_cb)(struct transport_context *, unsigned, unsigned); /* Structure for information about a delivery-in-progress */ typedef struct transport_context { + union { /* discriminated by option topt_output_string */ + int fd; /* file descriptor to write message to */ + uschar * msg; /* allocated string with written message */ + } u; transport_instance * tblock; /* transport */ struct address_item * addr; uschar * check_string; /* string replacement */ @@ -245,6 +248,10 @@ typedef struct transport_context { /* items below only used with option topt_use_bdat */ tpt_chunk_cmd_cb chunk_cb; /* per-datachunk callback */ void * smtp_context; + + /* items below only used with option topt_output_string */ + int msg_size; + int msg_ptr; } transport_ctx; @@ -625,7 +632,7 @@ typedef struct address_item { /* (may need to hold a timestamp) */ short int basic_errno; /* status after failure */ - short int child_count; /* number of child addresses */ + unsigned short child_count; /* number of child addresses */ short int return_file; /* fileno of return data file */ short int special_action; /* ( used when when deferred or failed */ /* ( also */