Warnings when compiling glib chained-hash patched nagios

Noah Leaman noah at mac.com
Thu Mar 25 06:48:34 CET 2004


I am getting these warnings when building nagios after apply the glib  
chained-hash patch:

../common/objects.c:123: warning: type mismatch with previous implicit  
declaration
../common/objects.c:104: warning: previous implicit declaration of  
`build_config_lists'
../common/objects.c:123: warning: `build_config_lists' was previously  
implicitly declared to return `int'
../common/objects.c: In function `build_config_lists':
../common/objects.c:124: warning: passing arg 2 of `g_tree_traverse'  
from incompatible pointer type
../common/objects.c: In function `add_service':
../common/objects.c:2222: warning: passing arg 1 of `g_tree_new' from  
incompatible pointer type
../common/statusdata.c:354: warning: type mismatch with previous  
implicit declaration
../common/statusdata.c:336: warning: previous implicit declaration of  
`build_lists'
../common/statusdata.c:354: warning: `build_lists' was previously  
implicitly declared to return `int'
../common/statusdata.c: In function `build_lists':
../common/statusdata.c:355: warning: passing arg 2 of `g_tree_traverse'  
from incompatible pointer type

Nagios seems to be run find though but I am not sure what the warnings  
might mean later on. Here is the patch (same patch as an attachment if  
needed):





diff -ur base/Makefile.in base/Makefile.in
--- base/Makefile.in    Sun Nov 10 22:52:13 2002
+++ base/Makefile.in    Mon Mar 15 18:13:37 2004
@@ -10,9 +10,9 @@
  SRC_XDATA=../xdata

  CC=@CC@
-CFLAGS=@CFLAGS@ @DEFS@ -DNSCORE
+CFLAGS=@CFLAGS@ @DEFS@ -DNSCORE `glib-config --cflags`
  #CFLAGS=-O3 -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align  
-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs  
-DHAVE_CONFIG_H -DNSCORE
-LDFLAGS=@LDFLAGS@ @LIBS@
+LDFLAGS=@LDFLAGS@ @LIBS@ `glib-config --libs`

  prefix=@prefix@
  exec_prefix=@exec_prefix@
diff -ur cgi/Makefile.in cgi/Makefile.in
--- cgi/Makefile.in     Sun Aug 25 19:53:00 2002
+++ cgi/Makefile.in     Mon Mar 15 18:14:27 2004
@@ -25,9 +25,9 @@

  CP=@CP@
  CC=@CC@
-CFLAGS=@CFLAGS@ @DEFS@ -DNSCGI
+CFLAGS=@CFLAGS@ @DEFS@ -DNSCGI `glib-config --cflags`
  #CFLAGS=-O3 -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align  
-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs  
-DHAVE_CONFIG_H -DNSCGI
-LDFLAGS=@LDFLAGS@ @LIBS@
+LDFLAGS=@LDFLAGS@ @LIBS@ `glib-config --libs`

  CGIS=avail.cgi cmd.cgi config.cgi extinfo.cgi history.cgi  
notifications.cgi outages.cgi showlog.cgi status.cgi statuswml.cgi  
summary.cgi tac.cgi $(CGIEXTRAS)

diff -ur common/common.h common/common.h
--- common/common.h     Mon Feb  2 23:45:08 2004
+++ common/common.h     Mon Mar 15 18:14:44 2004
@@ -208,8 +208,12 @@
  #define        OK                              0
  #define ERROR                          -2      /* value was changed  
from -1 so as to not interfere with STATUS_UNKNOWN plugin result */

+#ifndef TRUE
  #define TRUE                           1
+#endif
+#ifndef FALSE
  #define FALSE                          0
+#endif


  /****************** HOST CONFIG FILE READING OPTIONS  
********************/
diff -ur common/config.h.in common/config.h.in
--- common/config.h.in  Sat Apr 20 16:34:02 2002
+++ common/config.h.in  Mon Mar 15 18:15:01 2004
@@ -214,3 +214,7 @@
  #include <dirent.h>
  #endif

+#define HAVE_GLIB_H 1
+#ifdef HAVE_GLIB_H
+#include <glib.h>
+#endif
diff -ur common/objects.c common/objects.c
--- common/objects.c    Sat Nov 22 20:37:22 2003
+++ common/objects.c    Mon Mar 15 18:22:18 2004
@@ -59,6 +59,8 @@
  servicedependency       *servicedependency_list=NULL;
  hostdependency          *hostdependency_list=NULL;
  hostescalation          *hostescalation_list=NULL;
+GTree                  *service_tree = NULL;
+GHashTable     *host_hash = NULL;



@@ -99,6 +101,8 @@
         printf("read_object_config_data() end\n");
  #endif

+       build_config_lists();
+
         return result;
          }

@@ -107,6 +111,19 @@
  /**************** OBJECT ADDITION FUNCTIONS ***********************/
  /******************************************************************/

+int service_list_add(char *key, service *v, void *data)
+{
+        v->next = service_list;
+        service_list = v;
+        return 0;
+}
+
+
+void build_config_lists(void)
+{
+        g_tree_traverse(service_tree, service_list_add, G_IN_ORDER,  
NULL);
+}
+


  /* add a new timeperiod to the list in memory */
@@ -747,6 +764,16 @@
         printf("\tNotification Interval:     
%d\n",new_host->notification_interval);
         printf("\tNotification Time Period:  
%s\n",(new_host->notification_period==NULL)?"N/A":new_host- 
 >notification_period);
  #endif
+
+#ifdef HAVE_GLIB_H
+       /* Cache host in hash table */
+       if (!host_hash)
+               host_hash = g_hash_table_new(g_str_hash, g_str_equal);
+
+       if (host_hash)
+               g_hash_table_insert(host_hash, new_host->name,  
new_host);
+#endif
+
  #ifdef DEBUG0
         printf("add_host() end\n");
  #endif
@@ -2173,40 +2200,7 @@
         strcpy(new_service->perf_data,"");

  #endif
-       /* add new service to service list, sorted by host name then  
service description */
-       last_service=service_list;
-        
for(temp_service=service_list;temp_service!=NULL; 
temp_service=temp_service->next){
-
-                
if(strcmp(new_service->host_name,temp_service->host_name)<0){
-                       new_service->next=temp_service;
-                       if(temp_service==service_list)
-                               service_list=new_service;
-                       else
-                               last_service->next=new_service;
-                       break;
-                       }
-
-               else  
if(strcmp(new_service->host_name,temp_service->host_name)==0 &&  
strcmp(new_service->description,temp_service->description)<0){
-                       new_service->next=temp_service;
-                       if(temp_service==service_list)
-                               service_list=new_service;
-                       else
-                               last_service->next=new_service;
-                       break;
-                       }

-               else
-                       last_service=temp_service;
-               }
-       if(service_list==NULL){
-               new_service->next=NULL;
-               service_list=new_service;
-               }
-       else if(temp_service==NULL){
-               new_service->next=NULL;
-               last_service->next=new_service;
-               }
-
  #ifdef DEBUG1
         printf("\tHost:                      
%s\n",new_service->host_name);
         printf("\tDescription:               
%s\n",new_service->description);
@@ -2222,6 +2216,19 @@
         printf("\tEvent Handler:             
%s\n",(new_service->event_handler==NULL)?"N/A":new_service- 
 >event_handler);
  #endif

+#ifdef HAVE_GLIB_H
+       /* Cache service in tree */
+       if (!service_tree)
+               service_tree = g_tree_new(strcmp);
+
+       if (service_tree)
+       {
+               char *key = calloc(strlen(new_service->host_name) +  
strlen(new_service->description) + 2, 1);
+               sprintf(key, "%s-%s", new_service->host_name,  
new_service->description);
+               g_tree_insert(service_tree, key, new_service);
+       }
+#endif
+
  #ifdef DEBUG0
         printf("add_service() end\n");
  #endif
@@ -3226,6 +3233,13 @@
         if(name==NULL)
                 return NULL;

+#ifdef HAVE_GLIB_H
+       /* Lookup host in the hash */
+       if (host_hash)
+               return (host *)g_hash_table_lookup(host_hash, name);
+#endif
+
+
         if(hst==NULL)
                 temp_host=host_list;
         else
@@ -3499,6 +3513,18 @@

         if(host_name==NULL || svc_desc==NULL)
                 return NULL;
+
+#ifdef HAVE_GLIB_H
+       /* Lookup service in the tree */
+       if (service_tree)
+       {
+               char *key = calloc(strlen(host_name) + strlen(svc_desc)  
+ 2, 1);
+               sprintf(key, "%s-%s", host_name, svc_desc);
+               temp_service = (service *)g_tree_lookup(service_tree,  
key);
+               free(key);
+               return temp_service;
+       }
+#endif

         if(svcptr==NULL)
                 temp_service=service_list;
diff -ur common/statusdata.c common/statusdata.c
--- common/statusdata.c Tue Aug 20 00:11:28 2002
+++ common/statusdata.c Mon Mar 15 18:28:04 2004
@@ -51,6 +51,7 @@
  #ifdef NSCGI
  hoststatus      *hoststatus_list=NULL;
  servicestatus   *servicestatus_list=NULL;
+GTree          *servicestatus_tree=NULL;

  time_t program_start;
  int daemon_mode;
@@ -332,6 +333,7 @@
         result=xsddb_read_status_data(config_file,options);
  #endif

+       build_lists();
         return result;
          }

@@ -341,6 +343,17 @@
  /********************** ADDITION FUNCTIONS ************************/
  /******************************************************************/

+int servicestatus_list_add(servicestatus *key, void *v, void *data)
+{
+       key->next = servicestatus_list;
+       servicestatus_list = key;
+       return 0;
+}
+
+void build_lists(void)
+{
+       g_tree_traverse(servicestatus_tree, servicestatus_list_add,  
G_IN_ORDER, NULL);
+}

  /* sets program status variables */
  int add_program_status(time_t _program_start, int _nagios_pid, int  
_daemon_mode, time_t _last_command_check, time_t _last_log_rotation,  
int _enable_notifications,int _execute_service_checks,int  
_accept_passive_service_checks,int _enable_event_handlers,int  
_obsess_over_services, int _enable_flap_detection, int  
_enable_failure_prediction, int _process_performance_data){
@@ -534,6 +547,16 @@
         return OK;
          }

+int servicestatus_cmp(servicestatus *a, servicestatus *b)
+{
+       int c;
+
+       c = strcmp(b->host_name, a->host_name);
+       if (c)
+               return c;
+
+       return strcmp(b->description, a->description);
+}

  /* adds a service status entry to the list in memory */
  int add_service_status(char *host_name,char *svc_description,char  
*status_string,time_t last_update,int current_attempt,int  
max_attempts,int state_type,time_t last_check,time_t next_check,int  
check_type,int checks_enabled,int accept_passive_checks,int  
event_handler_enabled,time_t last_state_change,int  
problem_has_been_acknowledged,char *last_hard_state_string,unsigned  
long time_ok,unsigned long time_warning,unsigned long  
time_unknown,unsigned long time_critical,time_t last_notification,int  
current_notification_number,int notifications_enabled, int latency, int  
execution_time, int flap_detection_enabled, int is_flapping, double  
percent_state_change, int scheduled_downtime_depth, int  
failure_prediction_enabled, int process_performance_data, int  
obsess_over_service, char *plugin_output){
@@ -543,6 +566,9 @@
         int status;
         int last_hard_state;

+       if (!servicestatus_tree) {
+               servicestatus_tree = g_tree_new( (GCompareFunc)  
servicestatus_cmp);
+       }

         /* make sure we have what we need */
         if(host_name==NULL)
@@ -724,41 +750,7 @@
         /* scheduled downtime depth */
          
new_svcstatus->scheduled_downtime_depth=scheduled_downtime_depth;

-
-       /* add new service status to list, sorted by host name then  
description */
-       last_svcstatus=servicestatus_list;
-        
for(temp_svcstatus=servicestatus_list;temp_svcstatus!=NULL; 
temp_svcstatus=temp_svcstatus->next){
-
-                
if(strcmp(new_svcstatus->host_name,temp_svcstatus->host_name)<0){
-                       new_svcstatus->next=temp_svcstatus;
-                       if(temp_svcstatus==servicestatus_list)
-                               servicestatus_list=new_svcstatus;
-                       else
-                               last_svcstatus->next=new_svcstatus;
-                       break;
-                       }
-
-               else  
if(strcmp(new_svcstatus->host_name,temp_svcstatus->host_name)==0 &&  
strcmp(new_svcstatus->description,temp_svcstatus->description)<0){
-                       new_svcstatus->next=temp_svcstatus;
-                       if(temp_svcstatus==servicestatus_list)
-                               servicestatus_list=new_svcstatus;
-                       else
-                               last_svcstatus->next=new_svcstatus;
-                       break;
-                       }
-
-               else
-                       last_svcstatus=temp_svcstatus;
-               }
-       if(servicestatus_list==NULL){
-               new_svcstatus->next=NULL;
-               servicestatus_list=new_svcstatus;
-               }
-       else if(temp_svcstatus==NULL){
-               new_svcstatus->next=NULL;
-               last_svcstatus->next=new_svcstatus;
-               }
-
+       g_tree_insert(servicestatus_tree, new_svcstatus, new_svcstatus);

         return OK;
          }
diff -ur contrib/Makefile.in contrib/Makefile.in
--- contrib/Makefile.in Wed Apr  9 23:49:51 2003
+++ contrib/Makefile.in Mon Mar 15 18:28:31 2004
@@ -5,8 +5,8 @@
  ###############################

  CC=@CC@
-CFLAGS=@CFLAGS@ @DEFS@
-LDFLAGS=@LDFLAGS@ @LIBS@
+CFLAGS=@CFLAGS@ @DEFS@ `glib-config --cflags`
+LDFLAGS=@LDFLAGS@ @LIBS@ `glib-config --libs`

  # Source code directories
  SRC_COMMON=../common
diff -ur html/Makefile.in html/Makefile.in
--- html/Makefile.in    Thu Feb 28 20:46:43 2002
+++ html/Makefile.in    Mon Mar 15 18:28:53 2004
@@ -1,6 +1,6 @@
  CC=@CC@
-CFLAGS=@CFLAGS@ @DEFS@
-LDFLAGS=@LDFLAGS@ @LIBS@
+CFLAGS=@CFLAGS@ @DEFS@ `glib-config --cflags`
+LDFLAGS=@LDFLAGS@ @LIBS@ `glib-config --libs`

  prefix=@prefix@
  exec_prefix=@exec_prefix@

-------------- next part --------------
A non-text attachment was scrubbed...
Name: nagios-1.2.patch
Type: application/text
Size: 12191 bytes
Desc: not available
URL: <https://www.monitoring-lists.org/archive/developers/attachments/20040324/55188dbf/attachment.bin>


More information about the Developers mailing list