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