Implemented a logging call
authorDaniel Kouřil <kouril@ics.muni.cz>
Fri, 17 Mar 2006 14:15:27 +0000 (14:15 +0000)
committerDaniel Kouřil <kouril@ics.muni.cz>
Fri, 17 Mar 2006 14:15:27 +0000 (14:15 +0000)
org.glite.security.proxyrenewal/interface/renewal_core.h
org.glite.security.proxyrenewal/src/renewal_core.c

index f20ac8a..dc08c1c 100644 (file)
@@ -7,9 +7,18 @@
 extern "C" {
 #endif
 
+typedef enum {
+       GLITE_RENEWAL_LOG_NONE,
+       GLITE_RENEWAL_LOG_STDOUT,
+       GLITE_RENEWAL_LOG_SYSLOG,
+} glite_renewal_log_dst;
+
 typedef struct glite_renewal_core_context_data {
-  int dbg_level;
+  int log_level;
+  glite_renewal_log_dst log_dst;
+  char *err_message;
   int voms_enabled;
+  char *voms_conf;
 } glite_renewal_core_context_data;
 
 typedef struct glite_renewal_core_context_data *glite_renewal_core_context;
index 31ade6f..cbcb2e6 100644 (file)
@@ -242,7 +242,32 @@ glite_renewal_core_destroy_ctx(glite_renewal_core_context context)
 void
 edg_wlpr_Log(glite_renewal_core_context context, int dbg_level, const char *format, ...)
 {
+   va_list ap;
+
+   if (context->err_message) {
+      free(context->err_message);
+      context->err_message = NULL;
+   }
+   
+   /* cannot handle the %m format argument specific for syslog() */
+   va_start(ap, format);
+   vasprintf(&context->err_message, format, ap);
+   va_end(ap);
+
+   if (dbg_level > context->log_level)
+      return;
+
+   switch (context->log_dst) {
+      case GLITE_RENEWAL_LOG_STDOUT:
+        printf("[%d] %s\n", getpid(), context->err_message);
+        break;
+      case GLITE_RENEWAL_LOG_SYSLOG:
+        syslog(dbg_level, "%s", context->err_message);
+        break;
+      case GLITE_RENEWAL_LOG_NONE:
+      default:
+        break;
+   }
+
    return;
 }
-
-char *vomsconf = NULL;