diff options
| -rw-r--r-- | Makefile | 1 | ||||
| -rw-r--r-- | common.h | 14 | ||||
| -rw-r--r-- | liblog.h | 1 | ||||
| -rw-r--r-- | liblog_apply_env_mask.c | 26 | ||||
| -rw-r--r-- | liblog_destroy_context.c | 16 | ||||
| -rw-r--r-- | liblog_init_context.c | 21 | ||||
| -rw-r--r-- | liblog_use_fd.c | 45 | ||||
| -rw-r--r-- | liblog_use_fd_for_range.c | 49 | ||||
| -rw-r--r-- | liblog_use_output.c | 75 | ||||
| -rw-r--r-- | liblog_use_stderr.c | 42 | ||||
| -rw-r--r-- | liblog_use_stderr_for_range.c | 46 | ||||
| -rw-r--r-- | liblog_use_stream.c | 42 | ||||
| -rw-r--r-- | liblog_use_stream_for_range.c | 46 | ||||
| -rw-r--r-- | liblog_vlog_cork.c | 3 | ||||
| -rw-r--r-- | liblog_vlog_no_backtrace_cork.c | 3 |
15 files changed, 418 insertions, 12 deletions
@@ -151,6 +151,7 @@ check: $(TEST) fi;\ if ! $(CHECK_PREFIX) ./$$t; then\ status=1;\ + printf '\033[1;31mfailed\033[m\n';\ fi;\ done;\ exit $$status @@ -15,6 +15,10 @@ #if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Winline" +#endif + +#if defined(__GNUC__) # define WEAK_LINKING __attribute__((__weak__)) #else # define WEAK_LINKING @@ -24,7 +28,8 @@ #define MIN(A, B) ((A) < (B) ? (A) : (B)) #define MAX(A, B) ((A) > (B) ? (A) : (B)) -#define NEXT_LOGLEVEL(LVL) ((enum liblog_level)(LVL) + (enum liblog_level)100) +#define LOGLEVEL_DELTA 100 +#define NEXT_LOGLEVEL(LVL) ((enum liblog_level)(LVL) + (enum liblog_level)LOGLEVEL_DELTA) #define XLOG_NOT_INLINE 0x0100 @@ -314,3 +319,10 @@ void test_assert(const char *file, int line, enum assert_type type, enum assert_ ASSERT_EQ_INT(HAVE, 0) #endif + + +#if !defined(TEST) && !defined(USE_EXTERN_INLINE) +# if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wmissing-prototypes" +# endif +#endif @@ -15,6 +15,7 @@ #elif defined(__GNUC__) # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wformat-nonliteral" +# pragma GCC diagnostic ignored "-Winline" #endif diff --git a/liblog_apply_env_mask.c b/liblog_apply_env_mask.c index 1fceae0..67cd2fb 100644 --- a/liblog_apply_env_mask.c +++ b/liblog_apply_env_mask.c @@ -7,7 +7,7 @@ liblog_apply_env_mask(struct liblog_context *ctx) { const char *env = getenv("LIBLOG_LOGMASK"); - if (*env || !*env) { + if (!env || !*env) { liblog_mask_verbose(ctx, NEXT_LOGLEVEL(LIBLOG_WARNING)); return; } @@ -17,6 +17,28 @@ liblog_apply_env_mask(struct liblog_context *ctx) #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + char nullmask[] = "LIBLOG_LOGMASK="; + char *nullenv[] = {NULL}; + char *nullmaskenv[] = {nullmask, NULL}; + unsigned defaultmask = ((1U << 9) - 1U) ^ ((1U << ((int)LIBLOG_WARNING / LOGLEVEL_DELTA + 1)) - 1U); + + environ = nullenv; + + ctx.logmask = 0; + liblog_apply_env_mask(&ctx); + ASSERT_EQ_UINT(ctx.logmask, defaultmask); + + environ = nullmaskenv; + + ctx.logmask = 0; + liblog_apply_env_mask(&ctx); + ASSERT_EQ_UINT(ctx.logmask, defaultmask); + + return 0; +} #endif diff --git a/liblog_destroy_context.c b/liblog_destroy_context.c index 57192ac..6a3fa09 100644 --- a/liblog_destroy_context.c +++ b/liblog_destroy_context.c @@ -27,6 +27,20 @@ liblog_destroy_context(struct liblog_context *ctx) #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + char *nullenv[] = {NULL}; + + environ = nullenv; + + ASSERT_ZERO(liblog_destroy_context(NULL)); + + ASSERT_ZERO(liblog_init_context(&ctx)); + ASSERT_ZERO(liblog_destroy_context(&ctx)); + + return 0; +} #endif diff --git a/liblog_init_context.c b/liblog_init_context.c index 0137248..ff3f574 100644 --- a/liblog_init_context.c +++ b/liblog_init_context.c @@ -19,6 +19,25 @@ liblog_init_context(struct liblog_context *ctx) #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + char *nullenv[] = {NULL}; + + environ = nullenv; + + errno = 0; + ASSERT_EQ_INT(liblog_init_context(NULL), -1); + ASSERT_EQ_INT(errno, EINVAL); + + ASSERT_ZERO(liblog_init_context(&ctx)); + ASSERT_IS_NULL(ctx.internal_state); + ASSERT_IS_NULL(ctx.outputs); + ASSERT_ZERO(ctx.noutputs); + ASSERT_EQ_UINT(ctx.logmask, ((1U << 9) - 1U) ^ ((1U << ((int)LIBLOG_WARNING / LOGLEVEL_DELTA + 1)) - 1U)); + + return 0; +} #endif diff --git a/liblog_use_fd.c b/liblog_use_fd.c index 52687c7..4ab2066 100644 --- a/liblog_use_fd.c +++ b/liblog_use_fd.c @@ -6,6 +6,49 @@ extern inline struct liblog_output *liblog_use_fd(struct liblog_context *, int, #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_fd(NULL, 0, NULL, 0)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_fd(&ctx, 5, "prefix", 1); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, 5); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_fd(&ctx, -1, NULL, 0); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, -1); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + ASSERT_EQ_INT(ctx.outputs[0].sink.file.fd, 5); + ASSERT_EQ_INT(ctx.outputs[1].sink.file.fd, -1); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_fd_for_range.c b/liblog_use_fd_for_range.c index 8460d5e..d4e3aec 100644 --- a/liblog_use_fd_for_range.c +++ b/liblog_use_fd_for_range.c @@ -7,6 +7,53 @@ extern inline struct liblog_output *liblog_use_fd_for_range(struct liblog_contex #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_fd_for_range(NULL, 0, NULL, 0, LIBLOG_CRITICAL, LIBLOG_INFO)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_fd_for_range(&ctx, 5, "prefix", 1, LIBLOG_CRITICAL, LIBLOG_INFO); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_CRITICAL); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_INFO); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, 5); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_fd_for_range(&ctx, -1, NULL, 0, LIBLOG_ERROR, LIBLOG_TRACE); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_ERROR); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_TRACE); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, -1); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + ASSERT_EQ_INT(ctx.outputs[0].sink.file.fd, 5); + ASSERT_EQ_INT(ctx.outputs[1].sink.file.fd, -1); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_output.c b/liblog_use_output.c index 3471722..b2c3ec4 100644 --- a/liblog_use_output.c +++ b/liblog_use_output.c @@ -38,6 +38,7 @@ liblog_use_output(struct liblog_context *ctx, const struct liblog_output *output errno = ENOMEM; return NULL; } + ctx->outputs = new; memcpy(&ctx->outputs[ctx->noutputs], output, sizeof(*output)); @@ -49,6 +50,78 @@ liblog_use_output(struct liblog_context *ctx, const struct liblog_output *output #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output output; + struct liblog_output *new_output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_output(NULL, NULL)); + ASSERT_EQ_INT(errno, EINVAL); + + errno = 0; + ASSERT_IS_NULL(liblog_use_output(&ctx, NULL)); + ASSERT_EQ_INT(errno, EINVAL); + + errno = 0; + ASSERT_IS_NULL(liblog_use_output(NULL, &output)); + ASSERT_EQ_INT(errno, EINVAL); + + memset(&ctx, 0, sizeof(ctx)); + + errno = 0; + output.lowest_verbosity_unlimited = 1; + output.highest_verbosity_unlimited = 1; + output.lowest_verbosity = (enum liblog_level)400; + output.highest_verbosity = (enum liblog_level)100; + ASSERT_IS_NULL(liblog_use_output(&ctx, &output)); + ASSERT_EQ_INT(errno, EINVAL); + memset(&output, 0, sizeof(output)); + + errno = 0; + output.sink_type = (enum liblog_sink)99; + ASSERT_IS_NULL(liblog_use_output(&ctx, &output)); + ASSERT_EQ_INT(errno, EINVAL); + + errno = 0; + output.sink_type = (enum liblog_sink)-1; + ASSERT_IS_NULL(liblog_use_output(&ctx, &output)); + ASSERT_EQ_INT(errno, EINVAL); + + errno = 0; + output.sink_type = LIBLOG_STREAM; + output.sink.stream.stream = NULL; + ASSERT_IS_NULL(liblog_use_output(&ctx, &output)); + ASSERT_EQ_INT(errno, EINVAL); + + errno = 0; + output.sink_type = LIBLOG_FILE; + ctx.noutputs = SIZE_MAX / sizeof(*ctx.outputs); + ASSERT_IS_NULL(liblog_use_output(&ctx, &output)); + ASSERT_EQ_INT(errno, ENOMEM); + ctx.noutputs = 0; + + output.sink_type = LIBLOG_FILE; + output.sink.file.fd = 0; + output.sink.file.owns_fd = 0; + output.prefixfmt = NULL; + new_output = liblog_use_output(&ctx, &output); + ASSERT_NOT_NULL(new_output); + ASSERT_IS_NULL(output.prefixfmt); + ASSERT_NOT_NULL(new_output->prefixfmt); + ASSERT_EQ_STR(new_output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_INT(new_output->sink_type, output.sink_type); + ASSERT_EQ_INT(new_output->sink.file.fd, output.sink.file.fd); + ASSERT_EQ_INT(new_output->sink.file.owns_fd, output.sink.file.owns_fd); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_stderr.c b/liblog_use_stderr.c index f66d953..d8302b4 100644 --- a/liblog_use_stderr.c +++ b/liblog_use_stderr.c @@ -6,6 +6,46 @@ extern inline struct liblog_output *liblog_use_stderr(struct liblog_context *, c #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_stderr(NULL, NULL, 0)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_stderr(&ctx, "prefix", 1); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_stderr(&ctx, NULL, 0); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_stderr_for_range.c b/liblog_use_stderr_for_range.c index 1ffaee1..ba9bfc8 100644 --- a/liblog_use_stderr_for_range.c +++ b/liblog_use_stderr_for_range.c @@ -7,6 +7,50 @@ extern inline struct liblog_output *liblog_use_stderr_for_range(struct liblog_co #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_stderr_for_range(NULL, NULL, 0, LIBLOG_CRITICAL, LIBLOG_INFO)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_stderr_for_range(&ctx, "prefix", 1, LIBLOG_CRITICAL, LIBLOG_INFO); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_CRITICAL); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_INFO); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_stderr_for_range(&ctx, NULL, 0, LIBLOG_ERROR, LIBLOG_TRACE); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_ERROR); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_TRACE); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); + ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); + ASSERT_EQ_INT(output->sink.file.owns_fd, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_stream.c b/liblog_use_stream.c index c415627..c8506d6 100644 --- a/liblog_use_stream.c +++ b/liblog_use_stream.c @@ -6,6 +6,46 @@ extern inline struct liblog_output *liblog_use_stream(struct liblog_context *, F #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_stream(NULL, stderr, NULL, 0)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_stream(&ctx, stderr, "prefix", 1); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_STREAM); + ASSERT_IS_PTR(output->sink.stream.stream, stderr); + ASSERT_EQ_INT(output->sink.stream.owns_stream, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_stream(&ctx, stdout, NULL, 0); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 1); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_STREAM); + ASSERT_IS_PTR(output->sink.stream.stream, stdout); + ASSERT_EQ_INT(output->sink.stream.owns_stream, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_use_stream_for_range.c b/liblog_use_stream_for_range.c index 6749b26..98e6091 100644 --- a/liblog_use_stream_for_range.c +++ b/liblog_use_stream_for_range.c @@ -7,6 +7,50 @@ extern inline struct liblog_output *liblog_use_stream_for_range(struct liblog_co #else -int main(void) {return 0;} /* TODO test */ +int +main(void) +{ + struct liblog_context ctx; + struct liblog_output *output; + + ASSERT_ZERO(liblog_init_context(&ctx)); + + errno = 0; + ASSERT_IS_NULL(liblog_use_stream_for_range(NULL, stderr, NULL, 0, LIBLOG_CRITICAL, LIBLOG_INFO)); + ASSERT_EQ_INT(errno, EINVAL); + + output = liblog_use_stream_for_range(&ctx, stderr, "prefix", 1, LIBLOG_CRITICAL, LIBLOG_INFO); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, "prefix"); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_CRITICAL); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_INFO); + ASSERT_EQ_UINT(output->use_backtrace, 1); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_STREAM); + ASSERT_EQ_INT(output->sink.stream.stream, stderr); + ASSERT_EQ_INT(output->sink.stream.owns_stream, 0); + ASSERT_EQ_UINT(ctx.noutputs, 1); + ASSERT_NOT_NULL(ctx.outputs); + + output = liblog_use_stream_for_range(&ctx, stdout, NULL, 0, LIBLOG_ERROR, LIBLOG_TRACE); + ASSERT_NOT_NULL(output); + ASSERT_NOT_NULL(output->prefixfmt); + ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); + ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); + ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); + ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_ERROR); + ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_TRACE); + ASSERT_EQ_UINT(output->use_backtrace, 0); + ASSERT_EQ_ENUM(output->sink_type, LIBLOG_STREAM); + ASSERT_EQ_INT(output->sink.stream.stream, stdout); + ASSERT_EQ_INT(output->sink.stream.owns_stream, 0); + ASSERT_EQ_UINT(ctx.noutputs, 2); + ASSERT_NOT_NULL(ctx.outputs); + + liblog_destroy_context(&ctx); + return 0; +} #endif diff --git a/liblog_vlog_cork.c b/liblog_vlog_cork.c index f7bf4e9..fd191d3 100644 --- a/liblog_vlog_cork.c +++ b/liblog_vlog_cork.c @@ -10,6 +10,9 @@ extern inline int liblog_vlog_cork(struct liblog_context *, enum liblog_level, c # define liblog_vlog_cork liblog__dont_want__ # include "common.h" # undef liblog_vlog_cork +# if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# endif LIBLOG_VPRINTF__(3) int liblog_vlog_cork(struct liblog_context *ctx, enum liblog_level level, const char *fmt, va_list args) diff --git a/liblog_vlog_no_backtrace_cork.c b/liblog_vlog_no_backtrace_cork.c index a18b220..cbeb9a4 100644 --- a/liblog_vlog_no_backtrace_cork.c +++ b/liblog_vlog_no_backtrace_cork.c @@ -10,6 +10,9 @@ extern inline int liblog_vlog_no_backtrace_cork(struct liblog_context *, enum li # define liblog_vlog_no_backtrace_cork liblog__dont_want__ # include "common.h" # undef liblog_vlog_no_backtrace_cork +# if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# endif LIBLOG_VPRINTF__(3) int liblog_vlog_no_backtrace_cork(struct liblog_context *ctx, enum liblog_level level, const char *fmt, va_list args) |
