X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/c9433c53ad292c2f7ec05aa9d083767f95d07858..d8b76fa95c55331db4f475ee34caa7e8725ec421:/src/src/functions.h diff --git a/src/src/functions.h b/src/src/functions.h index 3f04ec782..39dfc46fe 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -3,7 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2018 */ -/* Copyright (c) The Exim Maintainers 2020 */ +/* Copyright (c) The Exim Maintainers 2020 - 2021 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -56,7 +56,7 @@ extern BOOL tls_client_start(client_conn_ctx *, smtp_connect_args *, extern void tls_client_creds_reload(BOOL); extern void tls_close(void *, int); -extern BOOL tls_could_read(void); +extern BOOL tls_could_getc(void); extern void tls_daemon_init(void); extern int tls_daemon_tick(void); extern BOOL tls_dropprivs_validate_require_cipher(BOOL); @@ -68,6 +68,7 @@ extern void tls_free_cert(void **); extern int tls_getc(unsigned); extern uschar *tls_getbuf(unsigned *); extern void tls_get_cache(unsigned); +extern BOOL tls_hasc(void); extern BOOL tls_import_cert(const uschar *, void **); extern BOOL tls_is_name_for_cert(const uschar *, void *); # ifdef USE_OPENSSL @@ -150,6 +151,7 @@ extern uschar *b64encode_taint(const uschar *, int, BOOL); extern int b64decode(const uschar *, uschar **); extern int bdat_getc(unsigned); extern uschar *bdat_getbuf(unsigned *); +extern BOOL bdat_hasc(void); extern int bdat_ungetc(int); extern void bdat_flush_data(void); @@ -234,7 +236,7 @@ extern BOOL dscp_lookup(const uschar *, int, int *, int *, int *); extern void enq_end(uschar *); extern BOOL enq_start(uschar *, unsigned); #ifndef DISABLE_EVENT -extern uschar *event_raise(uschar *, const uschar *, uschar *); +extern uschar *event_raise(uschar *, const uschar *, uschar *, int *); extern void msg_event_raise(const uschar *, const address_item *); #endif @@ -476,7 +478,6 @@ extern void sha1_start(hctx *); extern int sieve_interpret(uschar *, int, uschar *, uschar *, uschar *, uschar *, address_item **, uschar **); extern void sigalrm_handler(int); -extern BOOL smtp_buffered(void); extern void smtp_closedown(uschar *); extern void smtp_command_timeout_exit(void) NORETURN; extern void smtp_command_sigterm_exit(void) NORETURN; @@ -496,6 +497,7 @@ extern BOOL smtp_get_port(uschar *, address_item *, int *, uschar *); extern int smtp_getc(unsigned); extern uschar *smtp_getbuf(unsigned *); extern void smtp_get_cache(unsigned); +extern BOOL smtp_hasc(void); extern int smtp_handle_acl_fail(int, int, uschar *, uschar *); extern void smtp_log_no_mail(void); extern void smtp_message_code(uschar **, int *, uschar **, uschar **, BOOL); @@ -525,6 +527,7 @@ extern int spool_write_header(uschar *, int, uschar **); extern int stdin_getc(unsigned); extern int stdin_feof(void); extern int stdin_ferror(void); +extern BOOL stdin_hasc(void); extern int stdin_ungetc(int); extern void store_exit(void); @@ -807,11 +810,11 @@ Returns: copy of string in new store, with letters lowercased */ static inline uschar * -string_copylc(const uschar *s) +string_copylc(const uschar * s) { -uschar *ss = store_get(Ustrlen(s) + 1, is_tainted(s)); -uschar *p = ss; -while (*s != 0) *p++ = tolower(*s++); +uschar * ss = store_get(Ustrlen(s) + 1, is_tainted(s)); +uschar * p = ss; +while (*s) *p++ = tolower(*s++); *p = 0; return ss; } @@ -833,7 +836,7 @@ Returns: copy of string in new store, with letters lowercased */ static inline uschar * -string_copynlc(uschar *s, int n) +string_copynlc(uschar * s, int n) { uschar *ss = store_get(n + 1, is_tainted(s)); uschar *p = ss; @@ -897,7 +900,7 @@ static inline gstring * string_get_tainted_trc(unsigned size, BOOL tainted, const char * func, unsigned line) { gstring * g = store_get_3(sizeof(gstring) + size, tainted, func, line); -g->size = size; +g->size = size; /*XXX would be good if we could see the actual alloc size */ g->ptr = 0; g->s = US(g + 1); return g; @@ -986,7 +989,6 @@ could be used and would handle that implicitly. */ 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 */ return store_malloc_3(sizeof(dns_answer), CCS func, line); } @@ -1251,6 +1253,14 @@ child_open(uschar **argv, uschar **envp, int newumask, int *infdptr, outfdptr, make_leader, purpose); } +/* Return 1 if fd is usable per pollbits, else 0 */ +static inline int +poll_one_fd(int fd, short pollbits, int tmo_millisec) +{ +struct pollfd p = {.fd = fd, .events = pollbits}; +return poll(&p, 1, tmo_millisec); +} + # endif /* !COMPILE_UTILITY */ /******************************************************************************/