X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/51abbe5f68f3c784987bc5f5d9575c967ec5895d..313e4f0fe0eecf9316716535c2a1100a369fa934:/secnet.h diff --git a/secnet.h b/secnet.h index 2c55a32..3b54def 100644 --- a/secnet.h +++ b/secnet.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -378,7 +379,7 @@ struct comm_addr { }; /* Return True if the packet was processed, and shouldn't be passed to - any other potential receivers. */ + any other potential receivers. (buf is freed iff True returned.) */ typedef bool_t comm_notify_fn(void *state, struct buffer_if *buf, const struct comm_addr *source); typedef void comm_request_notify_fn(void *commst, void *nst, @@ -587,6 +588,19 @@ extern NORETURN(fatal_status(int status, const char *message, ...)) extern NORETURN(fatal_perror_status(int status, const char *message, ...)) FORMAT(printf,2,3); +/* Convenient nonfatal logging. Requires message that does not end in '\n'. + * If class contains M_FATAL, exits (after entering PHASE_SHUTDOWN). + * lg, errnoval and loc may sensibly be 0. desc must NOT be 0. + * lg_[v]perror save and restore errno. */ +void lg_vperror(struct log_if *lg, const char *desc, struct cloc *loc, + int class, int errnoval, const char *fmt, va_list al) + FORMAT(printf,6,0); +void lg_perror(struct log_if *lg, const char *desc, struct cloc *loc, + int class, int errnoval, const char *fmt, ...) + FORMAT(printf,6,7); +void lg_exitstatus(struct log_if *lg, const char *desc, struct cloc *loc, + int class, int status, const char *progname); + /* The cfgfatal() family of functions require messages that end in '\n' */ extern NORETURN(cfgfatal(struct cloc loc, cstring_t facility, const char *message, ...)) FORMAT(printf,3,4);