logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/

err.c (1496B)


  1. // Collection of Unix tools, comparable to coreutils
  2. // SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  3. // SPDX-License-Identifier: MPL-2.0
  4. #define _POSIX_C_SOURCE 200809L
  5. #include "err.h"
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. void
  9. utils_vwarn(const char *fmt, va_list ap)
  10. {
  11. fprintf(stderr, "%s: warning: ", argv0);
  12. if(fmt)
  13. {
  14. vfprintf(stderr, fmt, ap);
  15. fputs(": ", stderr);
  16. }
  17. perror(NULL);
  18. }
  19. void
  20. utils_vwarnx(const char *fmt, va_list ap)
  21. {
  22. fprintf(stderr, "%s: warning: ", argv0);
  23. if(fmt) vfprintf(stderr, fmt, ap);
  24. putc('\n', stderr);
  25. }
  26. _Noreturn void
  27. utils_verr(int status, const char *fmt, va_list ap)
  28. {
  29. fprintf(stderr, "%s: error: ", argv0);
  30. if(fmt)
  31. {
  32. vfprintf(stderr, fmt, ap);
  33. fputs(": ", stderr);
  34. }
  35. perror(NULL);
  36. exit(status);
  37. }
  38. _Noreturn void
  39. utils_verrx(int status, const char *fmt, va_list ap)
  40. {
  41. fprintf(stderr, "%s: error: ", argv0);
  42. if(fmt) vfprintf(stderr, fmt, ap);
  43. putc('\n', stderr);
  44. exit(status);
  45. }
  46. void
  47. utils_warn(const char *fmt, ...)
  48. {
  49. va_list ap;
  50. va_start(ap, fmt);
  51. utils_vwarn(fmt, ap);
  52. va_end(ap);
  53. }
  54. void
  55. utils_warnx(const char *fmt, ...)
  56. {
  57. va_list ap;
  58. va_start(ap, fmt);
  59. utils_vwarnx(fmt, ap);
  60. va_end(ap);
  61. }
  62. _Noreturn void
  63. utils_err(int status, const char *fmt, ...)
  64. {
  65. va_list ap;
  66. va_start(ap, fmt);
  67. utils_verr(status, fmt, ap);
  68. va_end(ap);
  69. }
  70. _Noreturn void
  71. utils_errx(int status, const char *fmt, ...)
  72. {
  73. va_list ap;
  74. va_start(ap, fmt);
  75. utils_verrx(status, fmt, ap);
  76. va_end(ap);
  77. }