]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/blobdiff - src/debug.h
tests: Fix tests when running under coloredstderr.
[coloredstderr/coloredstderr.git] / src / debug.h
index adc0792f1ce8b1e9e938b7503faf45edc724fdb9..4a7c00bc107949f2a9ab5b7aaea3c3c1452a429e 100644 (file)
@@ -41,13 +41,17 @@ static void debug_write(int fd, int first_call, char const *format, va_list ap)
     real_close(fd);
 }
 
+#ifdef DEBUG
 static void debug(char const *format, ...) {
     va_list ap;
 
+    int saved_errno = errno;
+
     /* If the file doesn't exist, do nothing. Prevents writing log files in
      * unexpected places. The user must create the file manually. */
     int fd = open(DEBUG_FILE, O_WRONLY | O_APPEND);
     if (fd == -1) {
+        errno = saved_errno;
         return;
     }
 
@@ -57,13 +61,19 @@ static void debug(char const *format, ...) {
     va_start(ap, format);
     debug_write(fd, call_count == 1, format, ap);
     va_end(ap);
+
+    errno = saved_errno;
 }
+#endif
 
 static void warning(char const *format, ...) {
     va_list ap;
 
-    char *home = getenv("HOME");
+    int saved_errno = errno;
+
+    char const *home = getenv("HOME");
     if (!home) {
+        errno = saved_errno;
         return;
     }
 
@@ -75,6 +85,7 @@ static void warning(char const *format, ...) {
     /* Create the warning file if it doesn't exist yet. */
     int fd = open(path, O_WRONLY | O_APPEND | O_CREAT, S_IRUSR | S_IWUSR);
     if (fd == -1) {
+        errno = saved_errno;
         return;
     }
 
@@ -84,6 +95,8 @@ static void warning(char const *format, ...) {
     va_start(ap, format);
     debug_write(fd, call_count == 1, format, ap);
     va_end(ap);
+
+    errno = saved_errno;
 }
 
 #endif