]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - src/src/functions.h
Fix $recipients expansion when used within ${run...}. Bug 3013
[user/henk/code/exim.git] / src / src / functions.h
index 76392f3043dbb8b4f595b210bec2db67a95d2a93..0b030e4fe2f7a0fb2ea9bd4113a86285a9df8b1b 100644 (file)
@@ -562,7 +562,8 @@ extern gstring *string_append(gstring *, int, ...) WARN_UNUSED_RESULT;
 extern gstring *string_append_listele(gstring *, uschar, const uschar *) WARN_UNUSED_RESULT;
 extern gstring *string_append_listele_n(gstring *, uschar, const uschar *, unsigned) WARN_UNUSED_RESULT;
 extern gstring *string_append2_listele_n(gstring *, const uschar *, const uschar *, unsigned) WARN_UNUSED_RESULT;
-extern uschar *string_base62(unsigned long int);
+extern uschar *string_base62_32(unsigned long int);
+extern uschar *string_base62_64(unsigned long int);
 extern gstring *string_cat (gstring *, const uschar *     ) WARN_UNUSED_RESULT;
 extern gstring *string_catn(gstring *, const uschar *, int) WARN_UNUSED_RESULT;
 extern int     string_compare_by_pointer(const void *, const void *);
@@ -633,7 +634,7 @@ extern BOOL    transport_pass_socket(const uschar *, const uschar *, const uscha
                        );
 extern uschar *transport_rcpt_address(address_item *, BOOL);
 extern BOOL    transport_set_up_command(const uschar ***, const uschar *,
-                BOOL, int, address_item *, BOOL, const uschar *, uschar **);
+                unsigned, int, address_item *, const uschar *, uschar **);
 extern void    transport_update_waiting(host_item *, uschar *);
 extern BOOL    transport_write_block(transport_ctx *, uschar *, int, BOOL);
 extern void    transport_write_reset(int);
@@ -686,6 +687,11 @@ extern BOOL    write_chunk(transport_ctx *, uschar *, int);
 extern ssize_t write_to_fd_buf(int, const uschar *, size_t);
 extern uschar *wrap_header(const uschar *, unsigned, unsigned, const uschar *, unsigned);
 
+#ifdef EXPERIMENTAL_XCLIENT
+extern uschar * xclient_smtp_command(uschar *, int *, BOOL *);
+extern gstring * xclient_smtp_advertise_str(gstring *);
+#endif
+
 
 /******************************************************************************/
 /* Predicate: if an address is in a tainted pool.
@@ -1161,10 +1167,32 @@ set_subdir_str(uschar * subdir_str, const uschar * name,
        int search_sequence)
 {
 subdir_str[0] = split_spool_directory == (search_sequence == 0)
-       ? name[5] : '\0';
+       ? name[MESSAGE_ID_TIME_LEN-1] : '\0';
 subdir_str[1] = '\0';
 }
 
+/******************************************************************************/
+/* Message-ID format transition knowlege */
+
+static inline BOOL
+is_new_message_id(const uschar * id)
+{
+return id[MESSAGE_ID_TIME_LEN + 1 + MESSAGE_ID_PID_LEN] == '-';
+}
+
+static inline BOOL
+is_old_message_id(const uschar * id)
+{
+return id[MESSAGE_ID_TIME_LEN + 1 + MESSAGE_ID_PID_LEN_OLD] == '-';
+}
+
+static inline unsigned
+spool_data_start_offset(const uschar * id)
+{
+if (is_old_message_id(id)) return SPOOL_DATA_START_OFFSET_OLD;
+return SPOOL_DATA_START_OFFSET;
+}
+
 /******************************************************************************/
 /* Time calculations */