Added a warning (always to stderr) when opening the log file fails
[yaz-moved-to-github.git] / src / log.c
index f6690e5..9ec9257 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -2,7 +2,7 @@
  * Copyright (c) 1995-2004, Index Data
  * See the file LICENSE for details.
  *
- * $Id: log.c,v 1.16 2004-11-18 15:18:13 heikki Exp $
+ * $Id: log.c,v 1.20 2005-01-07 10:28:28 heikki Exp $
  */
 
 /**
@@ -34,7 +34,8 @@
 #include <errno.h>
 #include <time.h>
 #include <yaz/nmem.h>
-#include <yaz/ylog.h>
+#include <yaz/log.h>
+#include <yaz/xmalloc.h>
 
 static NMEM_MUTEX log_mutex = 0;
 static int mutex_init_flag = 0; /* not yet initialized */
@@ -83,7 +84,7 @@ static struct {
     { YLOG_ERRNO,  ""},
     { YLOG_MALLOC, "malloc"},
  /*   { YLOG_APP,    "app"  }, */
-    { YLOG_NOTIME, "" },
+    { YLOG_NOTIME, "notime" },
  /*   { YLOG_APP2,   "app2" }, */
  /*   { YLOG_APP3,   "app3" }, */
     { YLOG_ALL,    "all"  },
@@ -135,7 +136,13 @@ void yaz_log_reopen(void)
     if (!*l_fname)
        new_file = stderr;
     else if (!(new_file = fopen(l_fname, "a")))
+    {
+        new_file=l_file;
+        l_file=stderr;  /* just to be sure we don't rotate logs and recurse */
+        yaz_log(YLOG_WARN|YLOG_ERRNO,"Could not open log file '%s'",l_fname);
+        l_file=new_file; /* restore to old value, probably stderr as well */
         return;
+    }
     if (l_file != stderr)
     {
         fclose (l_file);
@@ -396,15 +403,13 @@ int yaz_log_mask_str_x (const char *str, int level)
 {
     const char *p;
     int i;
-    int found;
-    int negated;
     char clean[255] = "";
     char *n = clean;
 
     while (*str)
     {
-        found = 0;
-        negated=0;
+        int found = 0;
+        int negated = 0;
         for (p = str; *p && *p != ','; p++)
             ;
         if (*str=='-')
@@ -412,7 +417,7 @@ int yaz_log_mask_str_x (const char *str, int level)
             negated=1;
             str++;
         }
-        if (isdigit(*str))
+        if (isdigit(*(unsigned char *) str))
         {
             level = atoi (str);
             found = 1;