[Xymon] Update on 4.4 (Alpha1 release)

Tom Schmidt tom at 4schmidts.com
Sun Apr 28 23:02:57 CEST 2024


J.C.,
     Sorry for the delay, but I have some updated patches for xymon 4.4
alpha1.  I have compiled it on Rocky Linux 8 and 9 64-bit systems.  The
first set of patches corrects gcc warnings seen on gcc 8.5 (RL8) and 11.4.1
(RL9).  I previously sent some patches for these when I tested on RL8 gcc
8.5, but have improved and/or corrected the patches based on RL9 gcc 11.4.1.
      The second set of patches includes some other bug fixes and
enhancements, including:

   - build/Makefile.Linux: Check for existence of replacement rpc
   - build/Makefile.rules: Add XYMONRUNDIR to CFLAGS
   - lib/compression.c: Handle LZ4 versions syntax change
   - xymond/client/snmpcollect.c: Initialize nslsects
   - xymond/etcfiles/tasks.cfg.DIST: Add IPv6 to admin-senders
   - xymond/Makefile: correct missing variable substitutions
   - xymond/webfiles/hostgraphs_header: remove XYMWEBHOST hyperlinks
   - xymond/xymonfetch.c: Fix gcc warning
   - xymond/wwwfiles/gifs/xymonbody.css: Add table td/th classes, tooltips

   As a side note, I have also been trying to get a xymon 4.4a1 client to
work on an Arm-based NAS system that I have, which the xymon 4.3.30 client
is working fine on.  I may have more patches to submit once I figure out
how to fix it.

Thanks again!
Tom Schmidt

On Wed, Oct 4, 2023 at 8:11 AM Tom Schmidt <tom at 4schmidts.com> wrote:

> Ralph, thanks for catching and fixing this for the OpenSSL version.
>
> Tom Schmidt
>
> On Tue, Oct 3, 2023 at 10:34 PM Ralph M <ralphmitchell at gmail.com> wrote:
>
>> Tom,
>>
>> I realise that you're working with Rocky 8, but I just want to note that
>> the lib/tcplib.c patch breaks compilation on RHEL7.
>>
>> The function ASN1_STRING_get0_data() appears in openssl-1.1, but not
>> in  RHEL7 / openssl-1.0.
>>
>> I found that there's an openssl version number in the openssl/opensslv.h
>> include file, which allows the attached patch to select the correct
>> function.  With this modification to your patch, the compilation completes
>> on RHEL7, RHEL8 and RHEL9.
>>
>> Regards,
>>
>> Ralph Mitchell
>>
>>
>>
>> On Tue, Oct 3, 2023 at 11:12 PM J.C. Cleaver <cleaver at terabithia.org>
>> wrote:
>>
>>>
>>> On Tue, October 3, 2023 13:06, Tom Schmidt wrote:
>>> >
>>> > J.C. and 4.4-alpha1 testers,
>>> >     I have done a little bit of testing of 4.4-alpha1 on Rocky Linux
>>> 8.8
>>> > (server and client) and on a busybox Linux install on a NAS.  I looked
>>> > into
>>> > the gcc 8.5.0 compiler warnings that I got on Rocky Linux, and have
>>> > corrected them, or silenced the ones that should not be an issue.
>>> > Attached
>>> > are two context diff patch files, one to fix the compiler warnings, and
>>> > one
>>> > to make a couple updates that I had applied to 4.3.30 previously.  My
>>> > updates fix the busybox Linux client build, and enhance the temperature
>>> > graph to optionally display both Celsius and Fahrenheit readings.
>>> >
>>> >     I have not fully tested 4.4-alpha1 yet, but wanted to get these
>>> first
>>> > patches released for 4.4-alpha2.
>>> >
>>> > Tom Schmidt
>>>
>>>
>>> Thanks for the patches!
>>>
>>> Yes, the build errors had been a concern for me as well; determining
>>> which
>>> sections were protected by correct math and which weren't was going to
>>> take some time, and this is quite helpful.
>>>
>>> I've created a 4.3.31 branch for similar concerns and many of these are
>>> just as applicable there. There's also a corruption bug on some loads
>>> that
>>> is crashing on F28 (and F29), so that release will probably just be build
>>> fixes for the stable tree.
>>>
>>> Regards,
>>> -jc
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Xymon mailing list
>>> Xymon at xymon.com
>>> http://lists.xymon.com/mailman/listinfo/xymon
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20240428/60dfb648/attachment.htm>
-------------- next part --------------
*** ./lib/acknowledgementslog.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./lib/acknowledgementslog.c	2024-04-17 10:21:12.281826711 -0600
***************
*** 222,233 ****
  		    p = strrchr(host, '.');
  		    if (p) {
                          *p = '\0';
! 			strncpy(svc,p+1,  sizeof(svc));
                      }
  		    /* Xymon uses \n in the ack message, for the "acked by" data. Cut it off. */
  		    p = strstr(message, "\\nAcked by:");
  		    if (p) {
! 			strncpy(recipient,p+12, sizeof(recipient));
                          *(p-1) = '\0';
  		    }
  		    else {
--- 222,233 ----
  		    p = strrchr(host, '.');
  		    if (p) {
                          *p = '\0';
! 			snprintf(svc, sizeof(svc), "%s", p+1);
                      }
  		    /* Xymon uses \n in the ack message, for the "acked by" data. Cut it off. */
  		    p = strstr(message, "\\nAcked by:");
  		    if (p) {
! 			snprintf(recipient, sizeof(recipient), "%s", p+12);
                          *(p-1) = '\0';
  		    }
  		    else {
*** ./lib/links.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./lib/links.c	2024-04-17 10:23:34.383567406 -0600
***************
*** 142,148 ****
  	/* If no XYMONHELPDIR, change xxx/xxx/xxx/notes into xxx/xxx/xxx/help */
  	if (xgetenv("XYMONHELPDIR")) strcpy(dirname, xgetenv("XYMONHELPDIR"));
  	else {
! 		strncpy(dirname, xgetenv("XYMONNOTESDIR"), sizeof(dirname));
  		p = strrchr(dirname, '/'); *p = '\0'; strncat(dirname, "/help", (sizeof(dirname) - strlen(dirname)));
  	}
  	load_links(dirname, helpskin, 0);
--- 142,148 ----
  	/* If no XYMONHELPDIR, change xxx/xxx/xxx/notes into xxx/xxx/xxx/help */
  	if (xgetenv("XYMONHELPDIR")) strcpy(dirname, xgetenv("XYMONHELPDIR"));
  	else {
! 		snprintf(dirname, sizeof(dirname), "%s", xgetenv("XYMONNOTESDIR"));
  		p = strrchr(dirname, '/'); *p = '\0'; strncat(dirname, "/help", (sizeof(dirname) - strlen(dirname)));
  	}
  	load_links(dirname, helpskin, 0);
*** ./lib/loadalerts.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./lib/loadalerts.c	2024-04-17 10:29:29.417916447 -0600
***************
*** 199,205 ****
  	rule_t *currule = NULL;
  	recip_t *currcp = NULL, *rcptail = NULL;
  
! 	if (configfn) strncpy(fn, configfn, sizeof(fn)); else snprintf(fn, sizeof(fn), "%s/etc/alerts.cfg", xgetenv("XYMONHOME"));
  
  	/* First check if there were no modifications at all */
  	if (configfiles) {
--- 199,205 ----
  	rule_t *currule = NULL;
  	recip_t *currcp = NULL, *rcptail = NULL;
  
! 	if (configfn) snprintf(fn, sizeof(fn), "%s", configfn); else snprintf(fn, sizeof(fn), "%s/etc/alerts.cfg", xgetenv("XYMONHOME"));
  
  	/* First check if there were no modifications at all */
  	if (configfiles) {
***************
*** 853,859 ****
  
  		if ((alert->groups && (*(alert->groups)))) {
  			SBUF_MALLOC(grouplist, strlen(alert->groups));
! 			strncpy(grouplist, alert->groups, grouplist_buflen);
  		}
  
  		if (crit->groupspec) {
--- 853,859 ----
  
  		if ((alert->groups && (*(alert->groups)))) {
  			SBUF_MALLOC(grouplist, strlen(alert->groups));
! 			snprintf(grouplist, grouplist_buflen, "%s", alert->groups);
  		}
  
  		if (crit->groupspec) {
***************
*** 1202,1212 ****
--- 1202,1219 ----
  		if (recip->method == M_IGNORE) {
  			recip->recipient = "-- ignored --";
  		}
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 		#pragma GCC diagnostic push
+ 		#pragma GCC diagnostic ignored "-Wstringop-overflow"
+ #endif  // __GNUC__
  		if (recip->noalerts) { if (*codes) strncat(codes, ",A", codes_bytesleft); else strncat(codes, "-A", codes_bytesleft); codes_bytesleft -= 2; }
  		if (recovered && !recip->noalerts) { if (*codes) strncat(codes, ",R", codes_bytesleft); else strncat(codes, "R", codes_bytesleft); codes_bytesleft -= 2; }
  		if (notice) { if (*codes) strncat(codes, ",N", codes_bytesleft); else strncat(codes, "N", codes_bytesleft); codes_bytesleft -= 2; }
  		if (recip->stoprule) { if (*codes) strncat(codes, ",S", codes_bytesleft); else strncat(codes, "S", codes_bytesleft); codes_bytesleft -= 2; }
  		if (recip->unmatchedonly) { if (*codes) strncat(codes, ",U", codes_bytesleft); else strncat(codes, "U", codes_bytesleft); codes_bytesleft -= 2; }
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 		#pragma GCC diagnostic pop
+ #endif  // __GNUC__
  
  		if (strlen(codes) == 0)
  			snprintf(l, sizeof(l), "<td><font %s>%s</font></td>", fontspec, recip->recipient);
*** ./lib/loadhosts_file.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./lib/loadhosts_file.c	2024-04-17 10:13:18.116018353 -0600
***************
*** 113,119 ****
  
  	if (contentbuffer) freestrbuffer(contentbuffer);
  	contentbuffer = convertstrbuffer(fdata, 0);
! 	strncpy(contentmd5, fhash, sizeof(contentmd5));
  
  	return 0;
  }
--- 113,119 ----
  
  	if (contentbuffer) freestrbuffer(contentbuffer);
  	contentbuffer = convertstrbuffer(fdata, 0);
! 	snprintf(contentmd5, sizeof(contentmd5), "%s", fhash);
  
  	return 0;
  }
*** ./lib/locator.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./lib/locator.c	2024-04-17 10:31:33.449435788 -0600
***************
*** 206,212 ****
  	static char pingbuf[512];
  	int res;
  
! 	strncpy(pingbuf, cmd, sizeof(pingbuf));
  	res = call_locator(pingbuf, sizeof(pingbuf));
  
  	return (res == 0) ? pingbuf : NULL;
--- 206,212 ----
  	static char pingbuf[512];
  	int res;
  
! 	snprintf(pingbuf, sizeof(pingbuf), "%s", cmd);
  	res = call_locator(pingbuf, sizeof(pingbuf));
  
  	return (res == 0) ? pingbuf : NULL;
*** ./lib/sig.c.orig	2019-08-30 20:05:50.000000000 -0600
--- ./lib/sig.c	2024-04-17 10:34:39.931720128 -0600
***************
*** 90,98 ****
  	 * Used inside signal-handler. Must be setup in
  	 * advance.
  	 */
! 	strncpy(signal_xymoncmd, (getenv("XYMON") ? getenv("XYMON") : "xymon"), sizeof(signal_xymoncmd));
! 	strncpy(signal_xymondserver, (getenv("XYMSRV") ? getenv("XYMSRV") : "0.0.0.0"), sizeof(signal_xymondserver));
! 	strncpy(signal_tmpdir, (getenv("XYMONTMP") ? getenv("XYMONTMP") : "/tmp"), sizeof(signal_tmpdir));
  	snprintf(signal_msg, sizeof(signal_msg), "status+1d/group:signal %s.xymond red %s program crashed\n\nFatal signal caught!\n",
  		(getenv("MACHINE") ? getenv("MACHINE") : (getenv("HOSTNAME") ? getenv("HOSTNAME") : "localhost") ), programname);
  
--- 90,98 ----
  	 * Used inside signal-handler. Must be setup in
  	 * advance.
  	 */
! 	snprintf(signal_xymoncmd, sizeof(signal_xymoncmd), "%s", (getenv("XYMON") ? getenv("XYMON") : "xymon"));
! 	snprintf(signal_xymondserver, sizeof(signal_xymondserver), "%s", (getenv("XYMSRV") ? getenv("XYMSRV") : "0.0.0.0"));
! 	snprintf(signal_tmpdir, sizeof(signal_tmpdir), "%s", (getenv("XYMONTMP") ? getenv("XYMONTMP") : "/tmp"));
  	snprintf(signal_msg, sizeof(signal_msg), "status+1d/group:signal %s.xymond red %s program crashed\n\nFatal signal caught!\n",
  		(getenv("MACHINE") ? getenv("MACHINE") : (getenv("HOSTNAME") ? getenv("HOSTNAME") : "localhost") ), programname);
  
*** ./lib/stackio.c.orig	2019-09-02 17:06:47.000000000 -0600
--- ./lib/stackio.c	2024-04-17 10:48:17.361733347 -0600
***************
*** 202,212 ****
  
  		stackfd_mode = strdup(mode);
  
! 		strncpy(stackfd_filename, filename, sizeof(stackfd_filename));
  	}
  	else {
  		if (*filename == '/')
! 			strncpy(stackfd_filename, filename, sizeof(stackfd_filename));
  		else
  			snprintf(stackfd_filename, sizeof(stackfd_filename), "%s/%s", stackfd_base, filename);
  	}
--- 202,212 ----
  
  		stackfd_mode = strdup(mode);
  
! 		snprintf(stackfd_filename, sizeof(stackfd_filename), "%s", filename);
  	}
  	else {
  		if (*filename == '/')
! 			snprintf(stackfd_filename, sizeof(stackfd_filename), "%s", filename);
  		else
  			snprintf(stackfd_filename, sizeof(stackfd_filename), "%s/%s", stackfd_base, filename);
  	}
***************
*** 331,337 ****
  	int fnsz = 0;
  	int i;
  
! 	if (*dirname == '/') strncpy(dirfn, dirname, sizeof(dirfn)); else snprintf(dirfn, sizeof(dirfn), "%s/%s", stackfd_base, dirname);
  
  	if ((dirfd = opendir(dirfn)) == NULL) {
  		if (!is_optional) errprintf("WARNING: Cannot open directory %s\n", dirfn);
--- 331,337 ----
  	int fnsz = 0;
  	int i;
  
! 	if (*dirname == '/') snprintf(dirfn, sizeof(dirfn), "%s", dirname); else snprintf(dirfn, sizeof(dirfn), "%s/%s", stackfd_base, dirname);
  
  	if ((dirfd = opendir(dirfn)) == NULL) {
  		if (!is_optional) errprintf("WARNING: Cannot open directory %s\n", dirfn);
*** ./lib/tcplib.c.orig	2019-04-10 15:33:08.000000000 -0600
--- ./lib/tcplib.c	2023-10-18 17:31:08.050558353 -0600
***************
*** 408,414 ****
--- 408,418 ----
  
  		e = X509_NAME_get_entry(subj, cnpos);
  		if (e) d = X509_NAME_ENTRY_get_data(e);
+ #if OPENSSL_VERSION_NUMBER < 0x101010bfL
  		if (d) cn = strdup(ASN1_STRING_data(d));
+ #else
+ 		if (d) cn = strdup(ASN1_STRING_get0_data(d));
+ #endif
  	}
  
  	if (peercert) X509_free(peercert);
*** ./lib/xymonrrd.c.orig	2019-08-30 21:22:45.000000000 -0600
--- ./lib/xymonrrd.c	2024-04-17 10:40:04.485695795 -0600
***************
*** 87,93 ****
  	/* Get the tcp services, and count how many there are */
  	services = init_tcp_services();
  	SBUF_MALLOC(tcptests, strlen(services)+1);
! 	strncpy(tcptests, services, tcptests_buflen);
  	count = 0; p = strtok(tcptests, " "); while (p) { count++; p = strtok(NULL, " "); }
  	strncpy(tcptests, services, tcptests_buflen);
  
--- 87,93 ----
  	/* Get the tcp services, and count how many there are */
  	services = init_tcp_services();
  	SBUF_MALLOC(tcptests, strlen(services)+1);
! 	snprintf(tcptests, tcptests_buflen, "%s", services);
  	count = 0; p = strtok(tcptests, " "); while (p) { count++; p = strtok(NULL, " "); }
  	strncpy(tcptests, services, tcptests_buflen);
  
***************
*** 241,247 ****
  		snprintf(rrdservicename, sizeof(rrdservicename), "devmon:%s", service);
  	}
  	else {
! 		strncpy(rrdservicename, graphdef->xymonrrdname, sizeof(rrdservicename));
  	}
  
  	SBUF_MALLOC(svcurl, 
--- 241,247 ----
  		snprintf(rrdservicename, sizeof(rrdservicename), "devmon:%s", service);
  	}
  	else {
! 		snprintf(rrdservicename, sizeof(rrdservicename), "%s", graphdef->xymonrrdname);
  	}
  
  	SBUF_MALLOC(svcurl, 
*** ./web/confreport.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./web/confreport.c	2024-04-17 10:41:22.606652748 -0600
***************
*** 123,129 ****
  
  	while ((de = readdir(d)) != NULL) {
  		if (strncmp(de->d_name, "disk,", 5) == 0) {
! 			strncpy(fn, de->d_name + 4, sizeof(fn));
  			p = strstr(fn, ".rrd"); if (!p) continue;
  			*p = '\0';
  			p = fn; while ((p = strchr(p, ',')) != NULL) *p = '/';
--- 123,129 ----
  
  	while ((de = readdir(d)) != NULL) {
  		if (strncmp(de->d_name, "disk,", 5) == 0) {
! 			snprintf(fn, sizeof(fn), "%s", de->d_name + 4);
  			p = strstr(fn, ".rrd"); if (!p) continue;
  			*p = '\0';
  			p = fn; while ((p = strchr(p, ',')) != NULL) *p = '/';
*** ./xymond/client/zvse.c.orig	2015-03-21 09:00:40.000000000 -0600
--- ./xymond/client/zvse.c	2024-04-17 11:37:52.598178906 -0600
***************
*** 531,537 ****
--- 531,544 ----
                  sscanf(getvisentry, "%s %d %d %d %d", jinfo, &used24, &free24, &usedany, &freeany);
                  q = strchr(jinfo, '-');              /* Check if jobname passed  */
                  if (q) {
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 			#pragma GCC diagnostic push
+ 			#pragma GCC diagnostic ignored "-Wstringop-truncation"
+ #endif  // __GNUC__
                          strncpy(pid, jinfo, 2);          /*  Copy partition ID  */
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 			#pragma GCC diagnostic pop
+ #endif  // __GNUC__
                          q++;                             /*  Increment pointer  */
  			strcpy(jobname,q);		 /*  Copy jobname       */
                          }
*** ./xymonnet/beastat.c.orig	2019-08-30 15:27:45.000000000 -0600
--- ./xymonnet/beastat.c	2024-04-17 10:44:05.388646768 -0600
***************
*** 103,109 ****
  	if (p) {
  		eol = strchr(p, '\n');
  		if (eol) *eol = '\0';
! 		strncpy(result, p, sizeof(result));
  		if (eol) *eol = '\n';
  	}
  
--- 103,109 ----
  	if (p) {
  		eol = strchr(p, '\n');
  		if (eol) *eol = '\0';
! 		snprintf(result, sizeof(result), "%s", p);
  		if (eol) *eol = '\n';
  	}
  
*** ./xymonnet/xymonnet.c.orig	2019-09-02 20:28:31.000000000 -0600
--- ./xymonnet/xymonnet.c	2024-04-19 21:48:16.318018075 -0600
***************
*** 733,739 ****
--- 733,746 ----
  					}
  
  					if (s) h->dodns = 1;
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 					#pragma GCC diagnostic push
+ 					#pragma GCC diagnostic ignored "-Wstringop-overflow"
+ #endif  // __GNUC__
  					if (option) *(option-1) = ':';
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 					#pragma GCC diagnostic pop
+ #endif  // __GNUC__
  				}
  
  				if (s) {
***************
*** 1077,1083 ****
  	p = getenv("SNTP");	/* Plain "getenv" as we want to know if it's unset */
  	use_sntp = (p != NULL);
  
! 	strncpy(cmdpath, (use_sntp ? xgetenv("SNTP") : xgetenv("NTPDATE")), sizeof(cmdpath));
  
  	for (t=service->items; (t); t = t->next) {
  		/* Do not run NTP test if host does not resolve in DNS or is down */
--- 1084,1090 ----
  	p = getenv("SNTP");	/* Plain "getenv" as we want to know if it's unset */
  	use_sntp = (p != NULL);
  
! 	snprintf(cmdpath, sizeof(cmdpath), "%s", (use_sntp ? xgetenv("SNTP") : xgetenv("NTPDATE")));
  
  	for (t=service->items; (t); t = t->next) {
  		/* Do not run NTP test if host does not resolve in DNS or is down */
***************
*** 1103,1109 ****
  	char		cmdpath[PATH_MAX];
  
  	p = xgetenv("RPCINFO");
! 	strncpy(cmdpath, (p ? p : "rpcinfo"), sizeof(cmdpath));
  	for (t=service->items; (t); t = t->next) {
  		/* Do not run RPCINFO test if host does not resolve in DNS or is down */
  		if (!t->host->dnserror && (t->host->downcount == 0) && !t->host->pingerror) {
--- 1110,1116 ----
  	char		cmdpath[PATH_MAX];
  
  	p = xgetenv("RPCINFO");
! 	snprintf(cmdpath, sizeof(cmdpath), "%s", (p ? p : "rpcinfo"));
  	for (t=service->items; (t); t = t->next) {
  		/* Do not run RPCINFO test if host does not resolve in DNS or is down */
  		if (!t->host->dnserror && (t->host->downcount == 0) && !t->host->pingerror) {
***************
*** 1395,1401 ****
  		if (!t->open && t->host->routerdeps) {
  			testitem_t *router;
  
! 			strncpy(l, t->host->routerdeps, sizeof(l));
  			p = strtok(l, ",");
  			while (p && (t->host->deprouterdown == NULL)) {
  				for (router=service->items; 
--- 1402,1408 ----
  		if (!t->open && t->host->routerdeps) {
  			testitem_t *router;
  
! 			snprintf(l, sizeof(l), "%s", t->host->routerdeps);
  			p = strtok(l, ",");
  			while (p && (t->host->deprouterdown == NULL)) {
  				for (router=service->items; 
***************
*** 2430,2436 ****
  
  			for (t = s->items; (t); t = t->next) {
  				if (!t->host->dnserror) {
! 					strncpy(tname, s->testname, sizeof(tname));
  					if (s->namelen) tname[s->namelen] = '\0';
  					t->privdata = (void *)add_tcp_test(ip_to_test(t->host), s->portnum, tname, NULL,
  									   t->srcip,
--- 2437,2443 ----
  
  			for (t = s->items; (t); t = t->next) {
  				if (!t->host->dnserror) {
! 					snprintf(tname, sizeof(tname), "%s", s->testname);
  					if (s->namelen) tname[s->namelen] = '\0';
  					t->privdata = (void *)add_tcp_test(ip_to_test(t->host), s->portnum, tname, NULL,
  									   t->srcip,
*** ./xymonproxy/xymonproxy.c.orig	2019-09-02 20:28:31.000000000 -0600
--- ./xymonproxy/xymonproxy.c	2024-04-21 20:39:26.977915350 -0600
***************
*** 533,539 ****
  			int ccount = 0;
  			unsigned long bufspace = 0;
  			unsigned long avgtime;	/* In millisecs */
! 			char runtime_s[30];
  			unsigned long runt = (unsigned long) (now-startuptime);
  			char *p;
  			unsigned long msgs_sent = msgs_total - msgs_total_last;
--- 533,539 ----
  			int ccount = 0;
  			unsigned long bufspace = 0;
  			unsigned long avgtime;	/* In millisecs */
! 			char runtime_s[31];	/* Include room for null termination */
  			unsigned long runt = (unsigned long) (now-startuptime);
  			char *p;
  			unsigned long msgs_sent = msgs_total - msgs_total_last;
***************
*** 1008,1015 ****
--- 1008,1022 ----
  				msgs_delivered++;
  
  				if (cwalk->sendtries < SEND_TRIES) {
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 					#pragma GCC diagnostic push
+ 					#pragma GCC diagnostic ignored "-Warray-bounds"
+ #endif  // __GNUC__
  					errprintf(" cwalk %ld, socket %d: recovered from write to server %d (%s) after %d retries\n", 
  						  cwalk->connid, cwalk->ssocket, cwalk->snum, xymonservername[cwalk->snum], (SEND_TRIES - cwalk->sendtries));
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 					#pragma GCC diagnostic pop
+ #endif  // __GNUC__
  					msgs_recovered++;
  				}
  
-------------- next part --------------
*** ./build/Makefile.Linux.orig	2019-03-13 16:05:16.000000000 -0600
--- ./build/Makefile.Linux	2024-04-22 15:44:58.000000000 -0600
***************
*** 2,17 ****
  
  OSDEF = -DLINUX
  
! # NETLIBS: Use replacement rpc
! NETLIBS = -ltirpc
  
  # Compile flags for normal build
  CC = gcc
  GCCVER := $(shell test 0`gcc -dumpversion|cut -d. -f1` -ge 4 && echo yes)
  ifeq ($(GCCVER),yes)
!    CFLAGS = -g -O2 -Wall -Wno-unused -I/usr/include/tirpc -Wno-pointer-sign -D_REENTRANT $(LFSDEF) $(OSDEF)
  else
!    CFLAGS = -g -O2 -Wall -Wno-unused -I/usr/include/tirpc -D_REENTRANT $(LFSDEF) $(OSDEF)
  endif
  
  ifndef PKGBUILD
--- 2,21 ----
  
  OSDEF = -DLINUX
  
! # NETLIBS: Use replacement rpc if available
! HAVE_TIRPC := $(shell ls -d /usr/include/tirpc >/dev/null 2>&1 && echo yes)
! ifeq ($(HAVE_TIRPC),yes)
!    NETLIBS = -ltirpc
!    INCLUDE_TIRPC = -I/usr/include/tirpc
! endif
  
  # Compile flags for normal build
  CC = gcc
  GCCVER := $(shell test 0`gcc -dumpversion|cut -d. -f1` -ge 4 && echo yes)
  ifeq ($(GCCVER),yes)
!    CFLAGS = -g -O2 -Wall -Wno-unused $(INCLUDE_TIRPC) -Wno-pointer-sign -D_REENTRANT $(LFSDEF) $(OSDEF)
  else
!    CFLAGS = -g -O2 -Wall -Wno-unused $(INCLUDE_TIRPC) -D_REENTRANT $(LFSDEF) $(OSDEF)
  endif
  
  ifndef PKGBUILD
*** ./build/Makefile.rules.orig	2019-03-15 15:00:39.000000000 -0600
--- ./build/Makefile.rules	2023-10-25 17:44:19.930051151 -0600
***************
*** 91,100 ****
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C build all
  
  lib-build: include/config.h
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OSDEF="$(OSDEF)" RPATHOPT="$(RPATHOPT)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONCLIENTHOME=$(XYMONCLIENTHOME) XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" ENABLESHARED="$(ENABLESHARED)" $(MAKE) -C lib all
  
  lib-client:
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OSDEF="$(OSDEF)" RPATHOPT="$(RPATHOPT)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONCLIENTHOME)" XYMONCLIENTHOME=$(XYMONCLIENTHOME) XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" LOCALCLIENT="$(LOCALCLIENT)" ENABLESHARED="$(ENABLESHARED)" $(MAKE) -C lib client
  
  common-build: lib-build
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)"  COMPLIBS="$(COMPLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C common all
--- 91,100 ----
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C build all
  
  lib-build: include/config.h
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OSDEF="$(OSDEF)" RPATHOPT="$(RPATHOPT)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONCLIENTHOME=$(XYMONCLIENTHOME) XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" ENABLESHARED="$(ENABLESHARED)" $(MAKE) -C lib all
  
  lib-client:
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OSDEF="$(OSDEF)" RPATHOPT="$(RPATHOPT)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONCLIENTHOME)" XYMONCLIENTHOME=$(XYMONCLIENTHOME) XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" LOCALCLIENT="$(LOCALCLIENT)" ENABLESHARED="$(ENABLESHARED)" $(MAKE) -C lib client
  
  common-build: lib-build
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" PCRELIBS="$(PCRELIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)"  COMPLIBS="$(COMPLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C common all
***************
*** 113,138 ****
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C xymonproxy all
  
  xymond-build: lib-build build-build common-build 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" DORRD="$(DORRD)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" SQLITELIBS="$(SQLITELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" FPING="$(FPING)" $(MAKE) -C xymond all
  
  web-build: lib-build build-build common-build 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" DORRD="$(DORRD)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C web all
  
  xymond-client: lib-client build-build common-client 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" LIBRTDEF="$(LIBRTDEF)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C xymond client
  
  docs-build:
  	XYMONHOSTURL="$(XYMONHOSTURL)" $(MAKE) -C docs all
  
  custom-build: lib-build
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C custom all || echo "Skipped custom modules"
  
  demo-build:
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" NETLIBS="$(NETLIBS)" $(MAKE) -C demotool all
  
  
  win32: include/config.h
! 	CC="$(CC)" CFLAGS="$(CFLAGS) -DXYMONWINCLIENT -DCLIENTONLY" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" $(MAKE) -C common xymon.exe
  
  #####################
  # Cleanup targets
--- 113,138 ----
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" PCRELIBS="$(PCRELIBS)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" $(MAKE) -C xymonproxy all
  
  xymond-build: lib-build build-build common-build 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" DORRD="$(DORRD)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" SSLFLAGS="$(SSLFLAGS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" SQLITELIBS="$(SQLITELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" FPING="$(FPING)" $(MAKE) -C xymond all
  
  web-build: lib-build build-build common-build 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" DORRD="$(DORRD)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C web all
  
  xymond-client: lib-client build-build common-client 
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" LIBRTDEF="$(LIBRTDEF)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C xymond client
  
  docs-build:
  	XYMONHOSTURL="$(XYMONHOSTURL)" $(MAKE) -C docs all
  
  custom-build: lib-build
! 	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" RRDDEF="$(RRDDEF)" RRDINCDIR="$(RRDINCDIR)" PCREINCDIR="$(PCREINCDIR)" NETLIBS="$(NETLIBS)" RRDLIBS="$(RRDLIBS)" PCRELIBS="$(PCRELIBS)" COMPINCDIR="$(COMPINCDIR)" COMPLIBS="$(COMPLIBS)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" XYMONUSER="$(XYMONUSER)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONHOSTURL="$(XYMONHOSTURL)" XYMONCGIURL="$(XYMONCGIURL)" SECUREXYMONCGIURL="$(SECUREXYMONCGIURL)" MAILPROGRAM="$(MAILPROGRAM)" RUNTIMEDEFS="$(RUNTIMEDEFS)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" $(MAKE) -C custom all || echo "Skipped custom modules"
  
  demo-build:
  	CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" NETLIBS="$(NETLIBS)" $(MAKE) -C demotool all
  
  
  win32: include/config.h
! 	CC="$(CC)" CFLAGS="$(CFLAGS) -DXYMONWINCLIENT -DCLIENTONLY" LDFLAGS="$(LDFLAGS)" RPATHOPT="$(RPATHOPT)" SSLFLAGS="$(SSLFLAGS)" SSLINCDIR="$(SSLINCDIR)" SSLLIBS="$(SSLLIBS)" NETLIBS="$(NETLIBS)" LIBRTDEF="$(LIBRTDEF)" XYMONHOME="$(XYMONHOME)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONHOSTNAME="$(XYMONHOSTNAME)" XYMONHOSTIP="$(XYMONHOSTIP)" XYMONHOSTOS="$(XYMONHOSTOS)" $(MAKE) -C common xymon.exe
  
  #####################
  # Cleanup targets
***************
*** 348,357 ****
  	XYMONHOME="$(XYMONHOME)" MANROOT="$(MANROOT)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" $(MAKE) -C xymonproxy install
  
  install-xymond: install-common
! 	DORRD="$(DORRD)" MANROOT="$(MANROOT)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" HTTPDGID="$(HTTPDGID)" $(MAKE) -C xymond install
  
  install-web: install-common
! 	DORRD="$(DORRD)" MANROOT="$(MANROOT)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" $(MAKE) -C web install
  	find $(INSTALLROOT)$(INSTALLWWWDIR) -type f -exec chmod 644 {} \;
  
  
--- 348,357 ----
  	XYMONHOME="$(XYMONHOME)" MANROOT="$(MANROOT)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" $(MAKE) -C xymonproxy install
  
  install-xymond: install-common
! 	DORRD="$(DORRD)" MANROOT="$(MANROOT)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" HTTPDGID="$(HTTPDGID)" $(MAKE) -C xymond install
  
  install-web: install-common
! 	DORRD="$(DORRD)" MANROOT="$(MANROOT)" XYMONTOPDIR="$(XYMONTOPDIR)" XYMONHOME="$(XYMONHOME)" XYMONVAR="$(XYMONVAR)" CGIDIR="$(CGIDIR)" SECURECGIDIR="$(SECURECGIDIR)" XYMONLOGDIR="$(XYMONLOGDIR)" XYMONRUNDIR="$(XYMONRUNDIR)" XYMONUSER="$(XYMONUSER)" IDTOOL="$(IDTOOL)" PKGBUILD="$(PKGBUILD)" INSTALLROOT="$(INSTALLROOT)" INSTALLBINDIR="$(INSTALLBINDIR)" INSTALLETCDIR="$(INSTALLETCDIR)" INSTALLEXTDIR="$(INSTALLEXTDIR)" INSTALLTMPDIR="$(INSTALLTMPDIR)" INSTALLWEBDIR="$(INSTALLWEBDIR)" INSTALLWWWDIR="$(INSTALLWWWDIR)" INSTALLSTATICWWWDIR="$(INSTALLSTATICWWWDIR)" $(MAKE) -C web install
  	find $(INSTALLROOT)$(INSTALLWWWDIR) -type f -exec chmod 644 {} \;
  
  
*** ./lib/compression.c.orig	2016-01-23 13:31:14.000000000 -0700
--- ./lib/compression.c	2023-10-25 17:34:25.472794837 -0600
***************
*** 349,355 ****
--- 349,360 ----
  	else if (ctype == COMP_LZ4HC) {
  		int newsize = 0;
  
+ #if LZ4_VERSION_NUMBER < 10703
+ 		/* LZ4 versions prior to 1.7.3 */
  		newsize = LZ4_compressHC(datasrc, STRBUFEND(deststrbuffer), datasz);
+ #else
+ 		newsize = LZ4_compress_HC(datasrc, STRBUFEND(deststrbuffer), datasz, LZ4_compressBound(datasz), 0);
+ #endif
  		if (newsize <= 0) {
  			errprintf("LZ4HC_compression failed!\n");
  			return NULL;
***************
*** 361,367 ****
--- 366,377 ----
  	else if (ctype == COMP_LZ4) {
  		int newsize = 0;
  
+ #if LZ4_VERSION_NUMBER < 10703
+ 		/* LZ4 versions prior to 1.7.3 */
  		newsize = LZ4_compress(datasrc, STRBUFEND(deststrbuffer), datasz);
+ #else
+ 		newsize = LZ4_compress_default(datasrc, STRBUFEND(deststrbuffer), datasz, LZ4_compressBound(datasz));
+ #endif
  		if (newsize <= 0) {
  			errprintf("LZ4_compression failed!\n");
  			return NULL;
*** ./xymond/client/snmpcollect.c.orig	2015-10-01 08:42:42.000000000 -0600
--- ./xymond/client/snmpcollect.c	2023-10-19 08:51:09.567794099 -0600
***************
*** 22,28 ****
  				void *hinfo, char *sender, time_t timestamp,
  				char *clientdata)
  {
! 	void *ns1var, *ns1sects;
  	char *onemib;
  	char *mibname;
  	char fromline[1024], msgline[1024];
--- 22,28 ----
  				void *hinfo, char *sender, time_t timestamp,
  				char *clientdata)
  {
! 	void *ns1var, *ns1sects = NULL;
  	char *onemib;
  	char *mibname;
  	char fromline[1024], msgline[1024];
*** ./xymond/etcfiles/tasks.cfg.DIST.orig	2016-02-23 11:38:47.000000000 -0700
--- ./xymond/etcfiles/tasks.cfg.DIST	2023-11-20 11:28:31.994227040 -0700
***************
*** 15,26 ****
  # one server in your setup. If you are setting up a server to do
  # just network tests or run xymonproxy, it is OK to disable this (then
  # you also need to remove the "NEEDS xymond" lines for the tasks
! # you want to run).
  [xymond]
  	ENVFILE @XYMONHOME@/etc/xymonserver.cfg
  	CMD xymond \
  		--restart=$XYMONTMP/xymond.chk --checkpoint-file=$XYMONTMP/xymond.chk --checkpoint-interval=600 \
! 		--admin-senders=127.0.0.1,$XYMONSERVERIP \
  		--store-clientlogs=!msgs
  	LOGFILE $XYMONSERVERLOGS/xymond.log
  	PIDFILE $XYMONRUNDIR/xymond.pid
--- 15,27 ----
  # one server in your setup. If you are setting up a server to do
  # just network tests or run xymonproxy, it is OK to disable this (then
  # you also need to remove the "NEEDS xymond" lines for the tasks
! # you want to run).  Allow localhost and $XYMONSERVERIP (IPv4 and IPv6)
! # to send "drop" and "rename" admin commands.
  [xymond]
  	ENVFILE @XYMONHOME@/etc/xymonserver.cfg
  	CMD xymond \
  		--restart=$XYMONTMP/xymond.chk --checkpoint-file=$XYMONTMP/xymond.chk --checkpoint-interval=600 \
! 		--admin-senders=127.0.0.1,::1,$XYMONSERVERIP,::ffff:$XYMONSERVERIP \
  		--store-clientlogs=!msgs
  	LOGFILE $XYMONSERVERLOGS/xymond.log
  	PIDFILE $XYMONRUNDIR/xymond.pid
*** ./xymond/Makefile.orig	2019-09-02 12:55:23.000000000 -0600
--- ./xymond/Makefile	2023-10-27 08:45:07.066504194 -0600
***************
*** 146,153 ****
  	cat etcfiles/xymon-bbcompat.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@INSTALLETCDIR@!$(INSTALLETCDIR)!g' | sed -e 's!@INSTALLWWWDIR@!$(INSTALLWWWDIR)!g' | sed -e 's!@INSTALLSTATICWWWDIR@!$(INSTALLSTATICWWWDIR)!g' | sed -e 's!@XYMONVAR@!$(XYMONVAR)!g' | sed -e 's!@CGIDIR@!$(CGIDIR)!g' | sed -e 's!@SECURECGIDIR@!$(SECURECGIDIR)!g' | sed -e 's!@XYMONHOSTURL@!$(XYMONHOSTURL)!g' | sed -e 's!@XYMONCGIURL@!$(XYMONCGIURL)!g' | sed -e 's!@SECUREXYMONCGIURL@!$(SECUREXYMONCGIURL)!g' >etcfiles/xymon-bbcompat.conf
  	cat etcfiles/xymonserver.cfg.DIST | sed -e 's!@XYMONTOPDIR@!$(XYMONTOPDIR)!g'| sed -e 's!@XYMONLOGDIR@!$(XYMONLOGDIR)!g'| sed -e 's!@XYMONRUNDIR@!$(XYMONRUNDIR)!g' | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g'| sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g'| sed -e 's!@XYMONHOSTOS@!$(XYMONHOSTOS)!g' | sed -e 's!@XYMONHOSTURL@!$(XYMONHOSTURL)!g' | sed -e 's!@XYMONCGIURL@!$(XYMONCGIURL)!g' | sed -e 's!@SECUREXYMONCGIURL@!$(SECUREXYMONCGIURL)!g' | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONVAR@!$(XYMONVAR)!g' | sed -e 's!@FPING@!$(FPING)!g' | sed -e 's!@MAILPROGRAM@!$(MAILPROGRAM)!g' | sed -e 's!@RUNTIMEDEFS@!$(RUNTIMEDEFS)!g' | sed -e 's!@INSTALLETCDIR@!$(INSTALLETCDIR)!g' >etcfiles/xymonserver.cfg
  	../build/bb-commands.sh >>etcfiles/xymonserver.cfg
! 	cat etcfiles/hosts.cfg.DIST | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g' | sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g' >etcfiles/hosts.cfg
! 	cat etcfiles/alerts.cfg.DIST | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g' | sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g' >etcfiles/alerts.cfg
  	cat etcfiles/tasks.cfg.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONTOPDIR@!$(XYMONTOPDIR)!g' >etcfiles/tasks.cfg
  	cat etcfiles/cgioptions.cfg.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' >etcfiles/cgioptions.cfg
  
--- 146,153 ----
  	cat etcfiles/xymon-bbcompat.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@INSTALLETCDIR@!$(INSTALLETCDIR)!g' | sed -e 's!@INSTALLWWWDIR@!$(INSTALLWWWDIR)!g' | sed -e 's!@INSTALLSTATICWWWDIR@!$(INSTALLSTATICWWWDIR)!g' | sed -e 's!@XYMONVAR@!$(XYMONVAR)!g' | sed -e 's!@CGIDIR@!$(CGIDIR)!g' | sed -e 's!@SECURECGIDIR@!$(SECURECGIDIR)!g' | sed -e 's!@XYMONHOSTURL@!$(XYMONHOSTURL)!g' | sed -e 's!@XYMONCGIURL@!$(XYMONCGIURL)!g' | sed -e 's!@SECUREXYMONCGIURL@!$(SECUREXYMONCGIURL)!g' >etcfiles/xymon-bbcompat.conf
  	cat etcfiles/xymonserver.cfg.DIST | sed -e 's!@XYMONTOPDIR@!$(XYMONTOPDIR)!g'| sed -e 's!@XYMONLOGDIR@!$(XYMONLOGDIR)!g'| sed -e 's!@XYMONRUNDIR@!$(XYMONRUNDIR)!g' | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g'| sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g'| sed -e 's!@XYMONHOSTOS@!$(XYMONHOSTOS)!g' | sed -e 's!@XYMONHOSTURL@!$(XYMONHOSTURL)!g' | sed -e 's!@XYMONCGIURL@!$(XYMONCGIURL)!g' | sed -e 's!@SECUREXYMONCGIURL@!$(SECUREXYMONCGIURL)!g' | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONVAR@!$(XYMONVAR)!g' | sed -e 's!@FPING@!$(FPING)!g' | sed -e 's!@MAILPROGRAM@!$(MAILPROGRAM)!g' | sed -e 's!@RUNTIMEDEFS@!$(RUNTIMEDEFS)!g' | sed -e 's!@INSTALLETCDIR@!$(INSTALLETCDIR)!g' >etcfiles/xymonserver.cfg
  	../build/bb-commands.sh >>etcfiles/xymonserver.cfg
! 	cat etcfiles/hosts.cfg.DIST |  sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g' | sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g' >etcfiles/hosts.cfg
! 	cat etcfiles/alerts.cfg.DIST | sed -e 's!@XYMONHOSTNAME@!$(XYMONHOSTNAME)!g' | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONHOSTIP@!$(XYMONHOSTIP)!g' >etcfiles/alerts.cfg
  	cat etcfiles/tasks.cfg.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' | sed -e 's!@XYMONTOPDIR@!$(XYMONTOPDIR)!g' >etcfiles/tasks.cfg
  	cat etcfiles/cgioptions.cfg.DIST | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' >etcfiles/cgioptions.cfg
  
***************
*** 193,198 ****
--- 193,204 ----
  	cd etcfiles; ../../build/merge-sects graphs.cfg $(INSTALLROOT)$(INSTALLETCDIR)/graphs.cfg
  	cd etcfiles; ../../build/merge-lines columndoc.csv $(INSTALLROOT)$(INSTALLETCDIR)/columndoc.csv
  	cd etcfiles; (echo "hosts.cfg"; echo "alerts.cfg"; echo "analysis.cfg"; echo "combo.cfg"; echo "client-local.cfg"; echo "holidays.cfg"; echo "rrddefinitions.cfg"; echo snmpmibs.cfg; echo xymonmenu.cfg; echo xymon-apache.conf; echo xymon-bbcompat.conf) | ../../build/setup-newfiles $(INSTALLROOT)$(INSTALLETCDIR)/
+ 	cat $(INSTALLROOT)$(INSTALLETCDIR)/analysis.cfg | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' >$(INSTALLROOT)$(INSTALLETCDIR)/analysis.cfg.new
+ 	mv -f $(INSTALLROOT)$(INSTALLETCDIR)/analysis.cfg.new $(INSTALLROOT)$(INSTALLETCDIR)/analysis.cfg
+ 	cat $(INSTALLROOT)$(INSTALLETCDIR)/graphs.cfg | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' >$(INSTALLROOT)$(INSTALLETCDIR)/graphs.cfg.new
+ 	mv -f $(INSTALLROOT)$(INSTALLETCDIR)/graphs.cfg.new $(INSTALLROOT)$(INSTALLETCDIR)/graphs.cfg
+ 	cat $(INSTALLROOT)$(INSTALLETCDIR)/rrddefinitions.cfg | sed -e 's!@XYMONHOME@!$(XYMONHOME)!g' >$(INSTALLROOT)$(INSTALLETCDIR)/rrddefinitions.cfg.new
+ 	mv -f $(INSTALLROOT)$(INSTALLETCDIR)/rrddefinitions.cfg.new $(INSTALLROOT)$(INSTALLETCDIR)/rrddefinitions.cfg
  	cd $(INSTALLROOT)$(XYMONHOME); rm -f xymon.sh; ln -sf bin/xymon.sh .
  	cd wwwfiles; find . | grep -v RCS | grep -v ".svn" | grep -v DIST | ../../build/setup-newfiles $(INSTALLROOT)$(INSTALLSTATICWWWDIR)/ ../../build/md5.dat
  	cd webfiles; find . | grep -v RCS | grep -v ".svn" | grep -v DIST | ../../build/setup-newfiles $(INSTALLROOT)$(INSTALLWEBDIR)/ ../../build/md5.dat
*** ./xymond/webfiles/hostgraphs_header.orig	2019-09-23 17:15:12.000000000 -0600
--- ./xymond/webfiles/hostgraphs_header	2024-04-20 15:49:59.564633639 -0600
***************
*** 34,55 ****
    </TD>
  </TR>
  <TR>
-   <TD VALIGN=MIDDLE ALIGN=LEFT WIDTH="30%">
-   </TD>
-   <TD VALIGN=MIDDLE ALIGN=CENTER WIDTH="40%">
-     <CENTER><FONT FACE="Arial, Helvetica" SIZE="-1" COLOR="silver">
- <A HREF="&XYMONSERVERCGIURL/eventlog.sh?MAXTIME=5760&MAXCOUNT=400&HOSTMATCH=^&XYMWEBHOST%24">All Host Events</A> | 
- <A HREF="&XYMONSERVERCGIURL/history.sh?HISTFILE=&XYMWEBHOST.&XYMWEBSVC&ENTRIES=100">Service History</A> | 
- <A HREF="&XYMONSERVERCGIURL/svcstatus.sh?CLIENT=&XYMWEBHOST">Current Client Report</A> | 
- <A HREF="&XYMONSERVERCGIURL/svcstatus.sh?HOST=&XYMWEBHOST&SERVICE=info">Info</A> | 
- <A HREF="&XYMONSERVERCGIURL/svcstatus.sh?HOST=&XYMWEBHOST&SERVICE=trends">Trends</A>
- </FONT></CENTER>
-   </TD>
-   <TD VALIGN=MIDDLE ALIGN=RIGHT WIDTH="30%">
-   </TD>
- </TR>
- <TR>
- <TR>
    <TD COLSPAN=3> <HR WIDTH="100%"> </TD>
  </TR>
  </TABLE>
--- 34,39 ----
*** ./xymond/xymonfetch.c.orig	2015-11-12 11:16:58.000000000 -0700
--- ./xymond/xymonfetch.c	2024-02-01 10:45:10.300102582 -0700
***************
*** 289,297 ****
--- 289,304 ----
  					conn->client->suggestpoll);
  
  				/* Add a section to the client message with cache delay info */
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 				#pragma GCC diagnostic push
+ 				#pragma GCC diagnostic ignored "-Wformat-truncation"
+ #endif  // __GNUC__
  				snprintf(msgcachesection, sizeof(msgcachesection),
  					 "[msgcache]\nCachedelay: %d\n[proxy]\nClientIP:%s", 
  					 msgago, addrstring(&conn->caddr, 0));
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 				#pragma GCC diagnostic pop
+ #endif  // __GNUC__
  				addtobuffer(req, msgcachesection);
  			}
  			else if ( (strncmp(msgbegin, "status", 6) == 0) ||
***************
*** 299,306 ****
--- 306,321 ----
  				char sourcemsg[100];
  
  				/* Add a line to the message showing where it came from */
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 				#pragma GCC diagnostic push
+ 				#pragma GCC diagnostic ignored "-Wformat-overflow"
+ #endif  // __GNUC__
+ 
  				sprintf(sourcemsg, "\nStatus message received from %s\n", 
  					addrstring(&conn->caddr, 0));
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+ 				#pragma GCC diagnostic pop
+ #endif  // __GNUC__
  				addtobuffer(req, sourcemsg);
  			}
  
*** ./xymond/wwwfiles/gifs/xymonbody.css.orig	2011-03-08 06:05:32.000000000 -0700
--- ./xymond/wwwfiles/gifs/xymonbody.css	2023-10-30 12:55:39.071552606 -0600
***************
*** 32,34 ****
--- 32,99 ----
  	background-image: url(bkg-clear.gif);
  }
  
+ /* table classes definitions */
+ table th {
+   background-color: #eee;
+   color: #666666;
+   font-weight: bold;
+ }
+ 
+ table th, table td {
+   white-space: nowrap;
+   padding-left: 5px;
+   padding-right: 5px;
+ }
+ 
+ /* table cell comment */
+ .CellWithComment {
+   position: relative;
+ }
+ 
+ .CellComment {
+   display: none;
+   position: absolute; 
+   z-index: 100;
+   border: 1px;
+   background-color: gray;
+   border-style: solid;
+   border-width: 1px;
+   border-color: white;
+   border-radius: 6px;
+   padding: 3px;
+   color: white; 
+   top: -5px; 
+   left: 6em;
+ }
+ 
+ .CellWithComment:hover span.CellComment {
+   display: block;
+ }
+ 
+ /* tooltip container */
+ .tooltip {
+   position: relative;
+   display: inline-block;
+ }
+ 
+ /* Tooltip text */
+ .tooltip .tooltiptext {
+   visibility: hidden;
+   position: absolute;
+   z-index: 100;
+   border: 1px;
+   background-color: gray;
+   border-style: solid;
+   border-width: 1px;
+   border-color: white;
+   border-radius: 6px;
+   padding: 3px;
+   color: white;
+   top: -5px; 
+   left: 105%;
+ }
+ 
+ /* Show the tooltip text when you mouse over the tooltip container */
+ .tooltip:hover .tooltiptext {
+   visibility: visible;
+ }


More information about the Xymon mailing list