X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Ffunctions.h;h=31c0057736b4ab7e91fbd1dbb0637f78f0cf2041;hb=c31e16a54f91476ce97ccd4d53a18c5bced1b320;hp=6347b231fc6b55fba7d6bc2fede150e7a00b94b2;hpb=14ca5d2ac6c3536fe189435269a302ef14e972cf;p=exim.git diff --git a/src/src/functions.h b/src/src/functions.h index 6347b231f..31c005773 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -52,14 +52,14 @@ extern BOOL tls_client_start(client_conn_ctx *, smtp_connect_args *, extern void tls_close(void *, int); extern BOOL tls_could_read(void); extern void tls_daemon_init(void); -extern int tls_export_cert(uschar *, size_t, void *); +extern BOOL tls_export_cert(uschar *, size_t, void *); extern int tls_feof(void); extern int tls_ferror(void); extern void tls_free_cert(void **); extern int tls_getc(unsigned); extern uschar *tls_getbuf(unsigned *); extern void tls_get_cache(void); -extern int tls_import_cert(const uschar *, void **); +extern BOOL tls_import_cert(const uschar *, void **); extern int tls_read(void *, uschar *, size_t); extern int tls_server_start(const uschar *, uschar **); extern BOOL tls_smtp_buffered(void); @@ -124,7 +124,7 @@ extern gstring *authres_arc(gstring *); #ifndef DISABLE_DKIM extern gstring *authres_dkim(gstring *); #endif -#ifdef EXPERIMENTAL_DMARC +#ifdef SUPPORT_DMARC extern gstring *authres_dmarc(gstring *); #endif extern gstring *authres_smtpauth(gstring *); @@ -186,7 +186,7 @@ extern void delivery_re_exec(int); extern BOOL directory_make(const uschar *, const uschar *, int, BOOL); #ifndef DISABLE_DKIM -extern uschar *dkim_exim_query_dns_txt(uschar *); +extern uschar *dkim_exim_query_dns_txt(const uschar *); extern void dkim_exim_sign_init(void); extern BOOL dkim_transport_write_message(transport_ctx *, @@ -195,6 +195,7 @@ extern BOOL dkim_transport_write_message(transport_ctx *, extern dns_address *dns_address_from_rr(dns_answer *, dns_record *); extern int dns_basic_lookup(dns_answer *, const uschar *, int); extern void dns_build_reverse(const uschar *, uschar *); +extern time_t dns_expire_from_soa(dns_answer *); extern void dns_init(BOOL, BOOL, BOOL); extern BOOL dns_is_aa(const dns_answer *); extern BOOL dns_is_secure(const dns_answer *); @@ -285,7 +286,6 @@ extern int ip_unixsocket(const uschar *, uschar **); extern int ip_streamsocket(const uschar *, uschar **, int); extern int ipv6_nmtoa(int *, uschar *); -extern BOOL is_tainted_fn(const void *); extern uschar *local_part_quote(uschar *); extern int log_create(uschar *); @@ -475,13 +475,10 @@ extern int spam(const uschar **); extern FILE *spool_mbox(unsigned long *, const uschar *, uschar **); #endif extern void spool_clear_header_globals(void); -extern uschar *spool_dname(const uschar *, uschar *); -extern uschar *spool_fname(const uschar *, const uschar *, const uschar *, const uschar *); extern BOOL spool_move_message(uschar *, uschar *, uschar *, uschar *); extern int spool_open_datafile(uschar *); extern int spool_open_temp(uschar *); extern int spool_read_header(uschar *, BOOL, BOOL); -extern uschar *spool_sname(const uschar *, uschar *); extern int spool_write_header(uschar *, int, uschar **); extern int stdin_getc(unsigned); extern int stdin_feof(void); @@ -850,6 +847,60 @@ va_end(ap); return g; } +/******************************************************************************/ + +#define store_get_dns_answer() store_get_dns_answer_trc(CUS __FUNCTION__, __LINE__) + +static inline dns_answer * +store_get_dns_answer_trc(const uschar * func, unsigned line) +{ +return store_get_3(sizeof(dns_answer), TRUE, CCS func, line); /* use tainted mem */ +} + +/******************************************************************************/ +/* Routines with knowledge of spool layout */ + +# ifndef COMPILE_UTILITY +static inline void +spool_pname_buf(uschar * buf, int len) +{ +snprintf(CS buf, len, "%s/%s/input", spool_directory, queue_name); +} + +static inline uschar * +spool_dname(const uschar * purpose, uschar * subdir) +{ +return string_sprintf("%s/%s/%s/%s", + spool_directory, queue_name, purpose, subdir); +} +# endif + +static inline uschar * +spool_sname(const uschar * purpose, uschar * subdir) +{ +return string_sprintf("%s%s%s%s%s", + queue_name, *queue_name ? "/" : "", + purpose, + *subdir ? "/" : "", subdir); +} + +static inline uschar * +spool_fname(const uschar * purpose, const uschar * subdir, const uschar * fname, + const uschar * suffix) +{ +return string_sprintf("%s/%s/%s/%s/%s%s", + spool_directory, queue_name, purpose, subdir, fname, suffix); +} + +static inline void +set_subdir_str(uschar * subdir_str, const uschar * name, + int search_sequence) +{ +subdir_str[0] = split_spool_directory == (search_sequence == 0) + ? name[5] : '\0'; +subdir_str[1] = '\0'; +} + /******************************************************************************/ #endif /* !MACRO_PREDEF */