[Openvas-commits] r3491 - in trunk/openvas-libraries: . libopenvas

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed May 27 13:33:04 CEST 2009


Author: lmwangi
Date: 2009-05-27 13:33:03 +0200 (Wed, 27 May 2009)
New Revision: 3491

Added:
   trunk/openvas-libraries/libopenvas/openvas_logging.c
   trunk/openvas-libraries/libopenvas/openvas_logging.h
Modified:
   trunk/openvas-libraries/ChangeLog
   trunk/openvas-libraries/MANIFEST
   trunk/openvas-libraries/Makefile
   trunk/openvas-libraries/libopenvas/Makefile
   trunk/openvas-libraries/openvas-libraries.tmpl.in
Log:
Adding logging to openvas-libraries. Ref: CR 29

Modified: trunk/openvas-libraries/ChangeLog
===================================================================
--- trunk/openvas-libraries/ChangeLog	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/ChangeLog	2009-05-27 11:33:03 UTC (rev 3491)
@@ -1,3 +1,15 @@
+2009-05-27  Laban Mwangi <lmwangi at penguinlabs.co.ke>
+
+	Adding initial support for logging.
+
+	* libopenvas/openvas_logging.c, libopenvas/openvas_logging.h: New.
+	Shared logging functions.
+
+	* libopenvas/Makefile openvas-libraries.tmpl.in Makefile: Updated.
+
+	* MANIFEST: Updated.
+
+
 2009-05-26  Jan-Oliver Wagner <jan-oliver.wagner at greenbone.net>
 
 	Adding a initial version for NVT Info objects.

Modified: trunk/openvas-libraries/MANIFEST
===================================================================
--- trunk/openvas-libraries/MANIFEST	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/MANIFEST	2009-05-27 11:33:03 UTC (rev 3491)
@@ -57,6 +57,8 @@
 libopenvas/network.c
 libopenvas/network.h
 libopenvas/ntp.h
+libopenvas/openvas_logging.c
+libopenvas/openvas_logging.h
 libopenvas/openvas_ssh_login.c
 libopenvas/openvas_ssh_login.h
 libopenvas/openvas_server.c

Modified: trunk/openvas-libraries/Makefile
===================================================================
--- trunk/openvas-libraries/Makefile	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/Makefile	2009-05-27 11:33:03 UTC (rev 3491)
@@ -61,6 +61,7 @@
 	$(INSTALL) -m 0444 libopenvas/rand.h $(DESTDIR)${includedir}/openvas
 	$(INSTALL) -m 0444 libopenvas/resolve.h $(DESTDIR)${includedir}/openvas
 	$(INSTALL) -m 0444 libopenvas/openvas_ssh_login.h $(DESTDIR)${includedir}/openvas
+	$(INSTALL) -m 0444 libopenvas/openvas_logging.h $(DESTDIR)${includedir}/openvas
 	$(INSTALL) -m 0444 libopenvas/openvas_server.h $(DESTDIR)${includedir}/openvas
 	$(INSTALL) -m 0444 libopenvas/openvas_auth.h $(DESTDIR)${includedir}/openvas
 	$(INSTALL) -m 0444 libopenvas/scanners_utils.h $(DESTDIR)${includedir}/openvas

Modified: trunk/openvas-libraries/libopenvas/Makefile
===================================================================
--- trunk/openvas-libraries/libopenvas/Makefile	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/libopenvas/Makefile	2009-05-27 11:33:03 UTC (rev 3491)
@@ -32,7 +32,7 @@
 	bpf_share.o rand.o popen.o services.o services1.o \
 	proctitle.o store.o kb.o share_fd.o hash_table_file.o \
 	openvas_ssh_login.o openvas_server.o openvas_auth.o \
-	../libopenvascommon/nvti.o
+	../libopenvascommon/nvti.o openvas_logging.o
 	
 LO_OBJS = plugutils.lo system.lo network.lo resolve.lo arglists.lo \
 	ftp_funcs.lo scanners_utils.lo pcap.lo hlst.lo  harglists.lo \
@@ -40,7 +40,7 @@
 	rand.lo popen.lo bpf_share.lo services.lo services1.lo \
 	proctitle.lo store.lo kb.lo share_fd.lo hash_table_file.lo \
 	openvas_ssh_login.lo openvas_server.lo openvas_auth.lo \
-	nvti.lo
+	nvti.lo openvas_logging.lo
 
 # += does not work with non-GNU make ...
 # CFLAGS+=-I../$(CIPHER_SUBDIR)
@@ -126,6 +126,9 @@
 openvas_ssh_login.o: openvas_ssh_login.c openvas_ssh_login.h
 	$(COMPILE) -c openvas_ssh_login.c
 
+openvas_logging.o: openvas_logging.c openvas_logging.h
+	$(COMPILE) -c openvas_logging.c
+
 openvas_server.o: openvas_server.c openvas_server.h
 	$(COMPILE) -c openvas_server.c
 

Added: trunk/openvas-libraries/libopenvas/openvas_logging.c
===================================================================
--- trunk/openvas-libraries/libopenvas/openvas_logging.c	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/libopenvas/openvas_logging.c	2009-05-27 11:33:03 UTC (rev 3491)
@@ -0,0 +1,410 @@
+/* OpenVAS-Libraries
+ * $Id$
+ * Description: Openvas Logging.
+ *
+ * Authors:
+ * Laban Mwangi <lmwangi at penguinlabs.co.ke>
+ *
+ * Copyright:
+ * Copyright (C) 2009 PenguinLabs Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * or, at your option, any later version as published by the Free
+ * Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * In addition, as a special exception, you have
+ * permission to link the code of this program with the OpenSSL
+ * library (or with modified versions of OpenSSL that use the same
+ * license as OpenSSL), and distribute linked combinations including
+ * the two. You must obey the GNU General Public License in all
+ * respects for all of the code used other than OpenSSL. If you
+ * modify this file, you may extend this exception to your version
+ * of the file, but you are not obligated to do so. If you do not
+ * wish to do so, delete this exception statement from your version.
+ */
+#include "includes.h"
+
+#include "openvas_logging.h"
+
+/* Returns time as specified in time_fmt strftime format */
+gchar *gettime(gchar *time_fmt)
+{
+  time_t     now;
+  struct tm  *ts;
+  gchar       buf[80];
+
+  /* Get the current time */
+  now = time(NULL);
+
+  /* Format and print the time, "ddd yyyy-mm-dd hh:mm:ss zzz" */
+  ts = localtime(&now);
+  strftime(buf, sizeof(buf), time_fmt, ts);
+
+  return  g_strdup_printf("%s", buf);
+}
+
+
+/* Loads logging parameters from a config file into a linked list */
+GSList *load_log_configuration (gchar * configfile)
+{
+ 
+  GKeyFile *keyfile;
+  GKeyFileFlags flags;
+  GError *error = NULL;
+  /* keyfile *_has_* functions requires this */
+
+  /* Groups found in the conf file*/
+  gchar **groups;
+  /* Temp variable to iterate over groups */
+  gchar **group;
+  
+  /* Structure to hold per group settings */
+  openvasd_logging *logdomainentry;
+  /* The link list for the structure above and it's tmp helper */
+  GSList *logdomainlist = NULL;
+  GSList *logdomainlisttmp = NULL;
+  /* Create a new GKeyFile object and a bitwise list of flags. */
+  keyfile = g_key_file_new ();
+  flags = G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS;
+  
+
+  /* Load the GKeyFile from conf or return. */
+  if (!g_key_file_load_from_file (keyfile, configfile, flags, &error))
+  {
+    g_error ("%s:  %s",configfile,error->message);
+  }
+
+  /* Get all the groups available */
+  groups = g_key_file_get_groups (keyfile,NULL);
+  
+  /* Point to the group head */
+  group = groups;
+  /* Iterate till we get to the end of the array. == NULL */
+  while (*group != NULL)
+  {
+    /* Create the struct */
+    logdomainentry = g_malloc(sizeof(openvasd_logging));
+    /* Set the logdomain */
+    logdomainentry->logdomain = g_strdup(*group);
+    /* Initialize everything else to NULL */
+    logdomainentry->prependstring = NULL;
+    logdomainentry->prependtimeformat = NULL;
+    logdomainentry->logfile = NULL;
+    logdomainentry->defaultlevel = 0;
+    logdomainentry->logchannel = NULL;
+
+
+    /* Look for the prepend string */
+    if (g_key_file_has_key (keyfile, *group,"prepend",&error)){
+      logdomainentry->prependstring = g_key_file_get_value (keyfile, *group,"prepend",&error);
+    }
+
+    /* Look for the prepend time format string */
+    if (g_key_file_has_key (keyfile, *group,"prepend_time_format",&error)){
+      logdomainentry->prependtimeformat = g_key_file_get_value (keyfile, *group,"prepend_time_format",&error);
+    }
+
+    /* Look for the log file string */
+    if (g_key_file_has_key (keyfile, *group,"file",&error)){
+      logdomainentry->logfile = g_key_file_get_value (keyfile, *group,"file",&error);
+    }
+
+
+    /* Look for the prepend log level string */
+    if (g_key_file_has_key (keyfile, *group,"level",&error)){
+      logdomainentry->defaultlevel = g_key_file_get_integer (keyfile, *group,"level",&error);
+    }
+
+    /* Attach the struct to the list */
+    logdomainlist =  g_slist_prepend(logdomainlist, logdomainentry);
+    group++;
+  }
+  /* Free the groups array */
+  g_strfreev(groups);
+
+  /* Free the keyfile */
+  g_key_file_free (keyfile);
+
+  /* 
+   * Print the struct items by iterating over the linked list
+   *
+   */
+
+  return logdomainlist;
+}
+
+void free_log_configuration(GSList *logdomainlist)
+{
+  GSList *logdomainlisttmp;
+  openvasd_logging *logdomainentry;
+
+  /* 
+   *
+   *  Free the struct fields then the struct and then go the next
+   *  item in the LL
+   *
+   */
+
+  /* Go the the head of the list*/
+  logdomainlisttmp = logdomainlist;
+        while (logdomainlisttmp != NULL)
+  {
+    /* Get the list data = Struct */
+    logdomainentry = logdomainlisttmp->data;
+
+    /* Free the struct contents */
+    g_free(logdomainentry->logdomain);
+    g_free(logdomainentry->prependstring);
+    g_free(logdomainentry->prependtimeformat);
+    g_free(logdomainentry->logfile);
+    //g_free(logdomainentry->defaultlevel);
+
+    /* Free the struct */
+    g_free(logdomainentry);
+
+    /* Go to the next item */
+    logdomainlisttmp = g_slist_next(logdomainlisttmp);
+
+  }
+  /* Free the link list */
+  g_slist_free(logdomainlist);
+
+}
+
+
+/* Openvas log handler */
+void openvas_log_func(const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer ptr)
+{
+  gchar *prepend;
+  gchar *prepend_buf;
+  gchar *prepend_tmp;
+  gchar *prepend_tmp1;
+  gchar *tmp;
+
+  /* For link list operations */
+  GSList  *logdomainlisttmp;
+  openvasd_logging *logdomainentry;
+
+  /* For logging to a file */
+  GError *error=NULL;
+  GIOChannel *channel;
+
+  /* 
+   * The default parameters if this logdomain is not defined
+   * A pid then a strftime timestamp. 
+   * TODO: These should be overriden by the group [*]
+   */
+  gchar *prependformat = "%p %t - ";
+  gchar *timeformat = "%a %Y-%m-%d %H:%M:%S %Z";
+
+  /* TODO Move log_separator to the conf file too */
+  gchar *log_separator = ":";
+  gchar *logfile = "-";
+  guint default_level = G_LOG_LEVEL_INFO;
+  channel = NULL;
+  gboolean foundlogdomainentry = FALSE;
+
+  /*
+   *  Let's default to warnings and up - Critical,errors... 
+   *  Ideally this should be fetched from a config file at startup 
+   *  and be stored in a struct
+   *  We expect to such a struct to have:
+   *    - log domain
+   *    - log prepend string
+   *    - log file
+   *    - log level
+   *  Since we may have many such structs, we need to store
+   *  them in something similar to a Link list (A dict would be perfect)
+   *  default_level would then be either this thisLogDomainStruct->loglevel 
+   *  or default->loglevel
+   */
+  if(ptr != NULL)
+  {
+
+    /* Go the the head of the list*/
+    logdomainlisttmp = ( GSList  *) ptr;
+  
+    while ( logdomainlisttmp != NULL && foundlogdomainentry == FALSE )
+    {
+      /* Get the list data = Struct */
+      logdomainentry = logdomainlisttmp->data;
+ 
+      /* search for the log domain in the link list */
+      //printf(">>>>logdomain =  %s in %d \n", log_domain,logdomainlisttmp->data);
+      //printf(">>>>logdomainentry = %s \n",logdomainentry->logdomain);
+      if (g_ascii_strcasecmp (logdomainentry->logdomain, log_domain ) == 0)
+      {
+        /* print the struct contents */
+        //printf("Group:     %s. Upgrading log level from %d to %d for message  in %d \n",logdomainentry->logdomain,default_level,logdomainentry->defaultlevel,log_level);
+        prependformat = logdomainentry->prependstring;
+        timeformat = logdomainentry->prependtimeformat;
+        logfile = logdomainentry->logfile;
+        default_level = logdomainentry->defaultlevel;
+        channel = logdomainentry->logchannel;
+        foundlogdomainentry  = TRUE ;
+      }
+
+      /* Go to the next item */
+      logdomainlisttmp = g_slist_next(logdomainlisttmp);
+    }
+  }
+  
+  /*  If the current log entry is less severe than the specified log level,
+   *  let's exit
+   */
+  if (default_level < log_level)
+    return;
+
+
+ /* Prepend buf is  a newly allocated empty string. Makes life easier. */
+ prepend_buf = g_strdup_printf("");
+
+
+ /*Make the tmp pointer (for iteration) point to the format string*/
+ tmp = prependformat;
+
+// printf("\n>>>tmp %d (%s)== %d(%s)\n",(int)prependformat,prependformat,tmp,tmp);
+ /* Iterate over the format string. */
+ //while(*tmp != '\0' && offset<1000 ) 
+ while( *tmp != '\0' ) 
+ {
+    /* If the current char is a % and the next one is a p, get the pid */
+    if ((*tmp=='%') && (*(tmp+1) == 'p'))
+    {
+      /* Use g_strdup. New string returned. Store it in a tmp var until we free the old one */
+      prepend_tmp = g_strdup_printf ("%s%s%d",prepend_buf, log_separator, (int)getpid());
+      /* Free the old string */
+      g_free(prepend_buf);
+      /* Point the buf ptr to the new string */
+      prepend_buf = prepend_tmp;
+      /* Skip over the two chars we've processed '%p' */
+      tmp+=2;
+    }
+    else if ((*tmp=='%') && (*(tmp+1) == 't'))
+    {
+      /* Get time returns a newly allocated string. Store it in a tmp var */
+      prepend_tmp1 =  gettime(timeformat);
+      /* Use g_strdup. New string returned. Store it in a tmp var until we free the old one */
+      prepend_tmp = g_strdup_printf ("%s%s%s",prepend_buf, log_separator, prepend_tmp1);
+      /* Free the time tmp var */
+      g_free(prepend_tmp1);
+      /* Free the old string */
+      g_free(prepend_buf);
+      /* Point the buf ptr to the new string */
+      prepend_buf = prepend_tmp;
+      /* Skip over the two chars we've processed '%t' */
+      tmp+=2;
+    }
+    else
+    {
+      /* Jump to the next char */
+      tmp++;
+    }
+  }    
+
+  /* Step through all possible messages prefexing them with an appropriate tag */
+  switch (log_level) {
+    case G_LOG_FLAG_RECURSION:
+      prepend = g_strdup_printf("RECURSION%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_FLAG_FATAL:
+      prepend = g_strdup_printf("FATAL%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_LEVEL_ERROR:
+      prepend = g_strdup_printf("ERROR%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_LEVEL_CRITICAL:
+      prepend = g_strdup_printf("CRITICAL%s%s", log_separator, prepend_buf);
+        break;
+    case G_LOG_LEVEL_WARNING:
+      prepend = g_strdup_printf("WARNING%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_LEVEL_MESSAGE:
+      prepend = g_strdup_printf("MSG%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_LEVEL_INFO:
+      prepend = g_strdup_printf("INFO%s%s", log_separator, prepend_buf);
+      break;
+
+    case G_LOG_LEVEL_DEBUG:
+      prepend = g_strdup_printf("DEBUG%s%s", log_separator, prepend_buf);
+      break;
+
+    default:
+      prepend = g_strdup_printf("UNKWOWN%s%s", log_separator, prepend_buf);
+      break;
+  }
+
+  /*  If the current log entry is more severe than the specified log level,
+   *  Print out the message.   
+   */
+  GString *logstr = g_string_new("");
+  g_string_append_printf(logstr,
+  "%s%s%s%s%s",
+  log_domain,log_separator,
+  prepend,log_separator,
+  message);
+
+  gchar *tmpstr = g_string_free(logstr, FALSE);
+  /* output everything to stderr if logfile = "-"
+  * FIXME use GLib io channels to log to a file for anything else
+  * */
+  if (g_ascii_strcasecmp(logfile,"-") == 0)
+  {
+    fprintf(stderr, "%s\n", tmpstr);
+    fflush(stderr);
+  }else{
+    /*
+     * open a channel and store it in the struct or
+     * retrieve use the retrieved channel
+     *
+     */
+    printf("Will log to '%s' logfile. Error is %d\n", logfile,error);
+    /* Open a channel if there isn't one */
+    if (channel == NULL){
+      channel = g_io_channel_new_file( logfile, "a", &error); 
+      if(!channel){
+        g_error("Can not open '%s' logfile. %s", logfile, error->message);
+      }
+
+      /* store it in the struct for later use */
+      if (logdomainentry != NULL)
+        logdomainentry->logchannel = channel;
+    }
+    g_io_channel_write_chars(channel,(const gchar *)tmpstr,-1, NULL, &error);
+    g_io_channel_flush(channel, NULL);
+
+  }
+  g_free(tmpstr);
+  g_free(prepend_buf);
+
+}
+
+/*
+ * Sets up routing of logdomains to log handlers
+ * TODO: Iterate over the link list and add the domains here.
+ */
+void setup_log_handlers(  GSList *openvasloggingpararmlist )
+{
+  g_log_set_handler("libnasl",(GLogLevelFlags) (G_LOG_LEVEL_DEBUG|G_LOG_LEVEL_INFO|G_LOG_LEVEL_MESSAGE |G_LOG_LEVEL_WARNING|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_ERROR|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION ), (GLogFunc) openvas_log_func, openvasloggingpararmlist);
+  g_log_set_handler("opemvasd",(GLogLevelFlags) (G_LOG_LEVEL_DEBUG|G_LOG_LEVEL_INFO|G_LOG_LEVEL_MESSAGE |G_LOG_LEVEL_WARNING|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_ERROR|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION ), (GLogFunc) openvas_log_func, openvasloggingpararmlist);
+  g_log_set_handler("",(GLogLevelFlags) (G_LOG_LEVEL_DEBUG|G_LOG_LEVEL_INFO|G_LOG_LEVEL_MESSAGE |G_LOG_LEVEL_WARNING|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_ERROR|G_LOG_FLAG_FATAL|G_LOG_FLAG_RECURSION ), (GLogFunc) openvas_log_func, openvasloggingpararmlist);
+}
+
+
+

Added: trunk/openvas-libraries/libopenvas/openvas_logging.h
===================================================================
--- trunk/openvas-libraries/libopenvas/openvas_logging.h	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/libopenvas/openvas_logging.h	2009-05-27 11:33:03 UTC (rev 3491)
@@ -0,0 +1,79 @@
+/* OpenVAS-Libraries
+ * $Id$
+ * Description: Openvas Logging.
+ *
+ * Authors:
+ * Laban Mwangi <lmwangi at penguinlabs.co.ke>
+ *
+ * Copyright:
+ * Copyright (C) 2009 PenguinLabs Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * or, at your option, any later version as published by the Free
+ * Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * In addition, as a special exception, you have
+ * permission to link the code of this program with the OpenSSL
+ * library (or with modified versions of OpenSSL that use the same
+ * license as OpenSSL), and distribute linked combinations including
+ * the two. You must obey the GNU General Public License in all
+ * respects for all of the code used other than OpenSSL. If you
+ * modify this file, you may extend this exception to your version
+ * of the file, but you are not obligated to do so. If you do not
+ * wish to do so, delete this exception statement from your version.
+ */
+ 
+#ifndef _OPENVAS_LOGGING_H
+#define _OPENVAS_LOGGING_H
+
+#include <glib.h>
+#include <time.h>
+
+/* 
+ * OpenVASD Logging stores the parameters loaded
+ * from a log conf. The config file is defined in 
+ * config.h as OPENVASD_LOG_CONF
+ *
+ * Once approved, This moves to a header file 
+ *
+ * */
+typedef struct {
+	/* This struct instance affects this logdomain e.g libnasl */
+	gchar *logdomain;
+	/* Prepend this string before every message */
+	gchar *prependstring;
+	/* If the prependstring above has a %t, use this strftime format */
+	gchar *prependtimeformat;
+	/* Where to log to */
+	gchar *logfile;
+	/* What severity level to use */
+	gint defaultlevel;
+	/* Gio Channel - FD holder for logfile */
+	GIOChannel *logchannel;
+} openvasd_logging;
+
+/* Loads the log configuration file */
+GSList *load_log_configuration (gchar * configfile);
+
+/* Frees resources associated with logging directives */
+void free_log_configuration(GSList *logdomainlist);
+
+/* Utility function that formats a timestamp */
+gchar *gettime(gchar *time_fmt);
+
+/* Actual log handler */
+void openvas_log_func(const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer ptr);
+
+/*Log router. Sets up relationships between log domains and log handlers */
+void setup_log_handlers(  GSList *openvasloggingpararmlist );
+#endif

Modified: trunk/openvas-libraries/openvas-libraries.tmpl.in
===================================================================
--- trunk/openvas-libraries/openvas-libraries.tmpl.in	2009-05-27 09:52:26 UTC (rev 3490)
+++ trunk/openvas-libraries/openvas-libraries.tmpl.in	2009-05-27 11:33:03 UTC (rev 3491)
@@ -75,3 +75,6 @@
 #libraries
 GLIB_CFLAGS=@GLIB_CFLAGS@
 GLIB_LIBS=@GLIB_LIBS@
+GTHREAD_CFLAGS=@GTHREAD_CFLAGS@
+GTHREAD_LIBS=@GTHREAD_LIBS@
+



More information about the Openvas-commits mailing list