log.h 988 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright © 2012 Ran Benita <ran234@gmail.com>
  3. * SPDX-License-Identifier: MIT
  4. */
  5. #include "config.h"
  6. #include "test-config.h"
  7. #include "context.h"
  8. static const char *
  9. log_level_to_string(enum xkb_log_level level)
  10. {
  11. switch (level) {
  12. case XKB_LOG_LEVEL_CRITICAL:
  13. return "critical";
  14. case XKB_LOG_LEVEL_ERROR:
  15. return "error";
  16. case XKB_LOG_LEVEL_WARNING:
  17. return "warning";
  18. case XKB_LOG_LEVEL_INFO:
  19. return "info";
  20. case XKB_LOG_LEVEL_DEBUG:
  21. return "debug";
  22. }
  23. return "unknown";
  24. }
  25. ATTR_PRINTF(3, 0) static void
  26. log_fn(struct xkb_context *ctx, enum xkb_log_level level,
  27. const char *fmt, va_list args)
  28. {
  29. char *s;
  30. int size;
  31. darray_char *ls = xkb_context_get_user_data(ctx);
  32. assert(ls);
  33. size = vasprintf(&s, fmt, args);
  34. assert(size != -1);
  35. darray_append_string(*ls, log_level_to_string(level));
  36. darray_append_lit(*ls, ": ");
  37. darray_append_string(*ls, s);
  38. free(s);
  39. }