Browse Source

Properly attribute err.h replacements as [[noreturn]]

ref:e86419934a6858c3f36f45e15d1e42cc501ea395
thegeorg 3 years ago
parent
commit
7d7953cb46
2 changed files with 12 additions and 9 deletions
  1. 5 3
      util/system/compat.h
  2. 7 6
      util/system/err.cpp

+ 5 - 3
util/system/compat.h

@@ -37,13 +37,15 @@ extern "C" {
 #endif
 
 #if defined(_MSC_VER)
-    void err(int e, const char* m, ...);
-    void errx(int e, const char* m, ...);
     void warn(const char* m, ...);
     void warnx(const char* m, ...);
     void vwarnx(const char* format, va_list ap);
     void vwarn(const char* format, va_list ap);
-    void verrx(int status, const char* format, va_list ap);
+
+    [[noreturn]] void err(int e, const char* m, ...);
+    [[noreturn]] void errx(int e, const char* m, ...);
+    [[noreturn]] void verr(int status, const char* fmt, va_list args);
+    [[noreturn]] void verrx(int status, const char* format, va_list ap);
 #else
     #include <err.h>
 #endif

+ 7 - 6
util/system/err.cpp

@@ -5,6 +5,7 @@
 
 #include <util/generic/scope.h>
 
+#include <util/system/compat.h>
 #include <util/stream/printf.h>
 #include <util/stream/output.h>
 
@@ -52,12 +53,12 @@ void warnx(const char* fmt, ...) {
     va_end(args);
 }
 
-void verr(int status, const char* fmt, va_list args) {
+[[noreturn]] void verr(int status, const char* fmt, va_list args) {
     vwarn(fmt, args);
-    exit(status);
+    std::exit(status);
 }
 
-void err(int status, const char* fmt, ...) {
+[[noreturn]] void err(int status, const char* fmt, ...) {
     va_list args;
 
     va_start(args, fmt);
@@ -65,12 +66,12 @@ void err(int status, const char* fmt, ...) {
     va_end(args);
 }
 
-void verrx(int status, const char* fmt, va_list args) {
+[[noreturn]] void verrx(int status, const char* fmt, va_list args) {
     vwarnx(fmt, args);
-    exit(status);
+    std::exit(status);
 }
 
-void errx(int status, const char* fmt, ...) {
+[[noreturn]] void errx(int status, const char* fmt, ...) {
     va_list args;
 
     va_start(args, fmt);