From bc119293950ec371a0536b0ffab35bad11fb4016 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 16 Apr 2004 07:01:47 +0000
Subject: [PATCH] remade the logging function to better deal with removed
 logfiles during the execution of the tests

---
 tests/server/sws.c | 30 +++++++++++-------------------
 1 file changed, 11 insertions(+), 19 deletions(-)

diff --git a/tests/server/sws.c b/tests/server/sws.c
index fa93b13424..42d3e5a828 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -164,7 +164,6 @@ static const char *doc404 = "HTTP/1.1 404 Not Found\n"
 #ifdef SIGPIPE
 static volatile int sigpipe;
 #endif
-static FILE *logfp;
 
 static void logmsg(const char *msg, ...)
 {
@@ -172,16 +171,21 @@ static void logmsg(const char *msg, ...)
   va_list ap;
   struct tm *curr_time = localtime(&t);
   char buffer[256]; /* possible overflow if you pass in a huge string */
+  FILE *logfp;
    
   va_start(ap, msg);
   vsprintf(buffer, msg, ap);
   va_end(ap);
 
-  fprintf(logfp, "%02d:%02d:%02d (%d) %s\n",
+  logfp = fopen(DEFAULT_LOGFILE, "a");
+
+  fprintf(logfp?logfp:stderr, /* write to stderr if the logfile doesn't open */
+          "%02d:%02d:%02d (%d) %s\n",
           curr_time->tm_hour,
           curr_time->tm_min,
           curr_time->tm_sec, (int)getpid(), buffer);
-  fflush(logfp);
+  if(logfp)
+    fclose(logfp);
 }
 
 
@@ -643,8 +647,7 @@ static void win32_init(void)
     
   if (err != 0) {
     perror("Winsock init failed");
-    fprintf(logfp, "Error initializing winsock -- aborting\n");
-    fclose(logfp);
+    logmsg("Error initializing winsock -- aborting\n");
     exit(1);
   }
     
@@ -653,8 +656,7 @@ static void win32_init(void)
  
     WSACleanup(); 
     perror("Winsock init failed");
-    fprintf(logfp, "No suitable winsock.dll found -- aborting\n");
-    fclose(logfp);
+    logmsg("No suitable winsock.dll found -- aborting\n");
     exit(1);
   }
 }
@@ -669,7 +671,6 @@ int main(int argc, char *argv[])
   struct sockaddr_in me;
   int sock, msgsock, flag;
   unsigned short port = DEFAULT_PORT;
-  const char *logfile = DEFAULT_LOGFILE;
   FILE *pidfile;
   struct httprequest req;
   
@@ -680,12 +681,6 @@ int main(int argc, char *argv[])
       path = argv[2];
     }
   }
-
-  logfp = fopen(logfile, "a");
-  if (!logfp) {
-    perror(logfile);
-    exit(1);
-  }
   
 #if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
   win32_init();
@@ -703,8 +698,7 @@ int main(int argc, char *argv[])
   sock = socket(AF_INET, SOCK_STREAM, 0);
   if (sock < 0) {
     perror("opening stream socket");
-    fprintf(logfp, "Error opening socket -- aborting\n");
-    fclose(logfp);
+    logmsg("Error opening socket -- aborting\n");
     exit(1);
   }
 
@@ -720,8 +714,7 @@ int main(int argc, char *argv[])
   me.sin_port = htons(port);
   if (bind(sock, (struct sockaddr *) &me, sizeof me) < 0) {
     perror("binding stream socket");
-    fprintf(logfp, "Error binding socket -- aborting\n");
-    fclose(logfp);
+    logmsg("Error binding socket -- aborting\n");
     exit(1);
   }
 
@@ -782,7 +775,6 @@ int main(int argc, char *argv[])
   }
   
   sclose(sock);
-  fclose(logfp);
   
 #if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
   win32_cleanup();
-- 
GitLab