[packages/sendmail] - GCC 15 fix

hawk hawk at pld-linux.org
Wed Sep 10 14:56:09 CEST 2025


commit 84ae827c7efee02f020bc7e5b2b85872b879138c
Author: Marcin Krol <hawk at tld-linux.org>
Date:   Tue Sep 9 23:39:25 2025 +0200

    - GCC 15 fix

 gcc-15-fix.patch | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 sendmail.spec    |   2 +
 2 files changed, 117 insertions(+)
---
diff --git a/sendmail.spec b/sendmail.spec
index 473d02b..65df1c6 100644
--- a/sendmail.spec
+++ b/sendmail.spec
@@ -53,6 +53,7 @@ Patch7:		%{name}-cyrus.patch
 # https://blue-labs.org/software/sm-pgsql/sendmail.php
 # https://blue-labs.org/software/sm-pgsql/bluelabs-smpgsql-8.14.3.patch.bz2
 Patch8:		bluelabs-smpgsql-8.14.3.patch
+Patch9:		gcc-15-fix.patch
 URL:		https://www.sendmail.org/
 BuildRequires:	cyrus-sasl-devel >= 2.1.21
 BuildRequires:	db-devel >= 5.0
@@ -185,6 +186,7 @@ Pliki nagłówkowe i statyczna biblioteka libmilter.
 %patch -P6 -p1
 %patch -P7 -p1
 %{?with_pgsql:%patch8 -p1}
+%patch -P9 -p1
 
 sed -e 's|@@PATH@@|\.\.|' < %{SOURCE6} > cf/cf/pld.mc
 
diff --git a/gcc-15-fix.patch b/gcc-15-fix.patch
new file mode 100644
index 0000000..1b38cea
--- /dev/null
+++ b/gcc-15-fix.patch
@@ -0,0 +1,115 @@
+diff --git a/libsm/vfscanf.c b/libsm/vfscanf.c
+index e1b7830..b0aa923 100644
+--- a/libsm/vfscanf.c
++++ b/libsm/vfscanf.c
+@@ -37,6 +37,7 @@ SM_IDSTR(id, "@(#)$Id: vfscanf.c,v 1.55 2013-11-22 20:51:44 ca Exp $")
+ #define SUPPRESS	0x10	/* suppress assignment */
+ #define POINTER		0x20	/* weird %p pointer (`fake hex') */
+ #define NOSKIP		0x40	/* do not skip blanks */
++#define UNSIGNED	0x80	/* unsigned conversions */
+ 
+ /*
+ **  The following are used in numeric conversions only:
+@@ -122,9 +123,6 @@ sm_vfscanf(fp, timeout, fmt0, ap)
+ 	int nassigned;		/* number of fields assigned */
+ 	int nread;		/* number of characters consumed from fp */
+ 	int base;		/* base argument to strtoll/strtoull */
+-
+-	/* conversion function (strtoll/strtoull) */
+-	ULONGLONG_T (*ccfn) __P((const char *, char **, int));
+ 	char ccltab[256];	/* character class table for %[...] */
+ 	char buf[BUF];		/* buffer for numeric conversions */
+ 	SM_EVENT *evt = NULL;
+@@ -160,7 +158,6 @@ sm_vfscanf(fp, timeout, fmt0, ap)
+ 	nassigned = 0;
+ 	nread = 0;
+ 	base = 0;		/* XXX just to keep gcc happy */
+-	ccfn = NULL;		/* XXX just to keep gcc happy */
+ 	for (;;)
+ 	{
+ 		c = *fmt++;
+@@ -240,13 +237,11 @@ literal:
+ 			/* FALLTHROUGH */
+ 		  case 'd':
+ 			c = CT_INT;
+-			ccfn = (ULONGLONG_T (*)())sm_strtoll;
+ 			base = 10;
+ 			break;
+ 
+ 		  case 'i':
+ 			c = CT_INT;
+-			ccfn = (ULONGLONG_T (*)())sm_strtoll;
+ 			base = 0;
+ 			break;
+ 
+@@ -255,21 +250,20 @@ literal:
+ 			/* FALLTHROUGH */
+ 		  case 'o':
+ 			c = CT_INT;
+-			ccfn = sm_strtoull;
++			flags |= UNSIGNED;
+ 			base = 8;
+ 			break;
+ 
+ 		  case 'u':
+ 			c = CT_INT;
+-			ccfn = sm_strtoull;
++			flags |= UNSIGNED;
+ 			base = 10;
+ 			break;
+ 
+ 		  case 'X':
+ 		  case 'x':
+-			flags |= PFXOK;	/* enable 0x prefixing */
++			flags |= PFXOK | UNSIGNED;
+ 			c = CT_INT;
+-			ccfn = sm_strtoull;
+ 			base = 16;
+ 			break;
+ 
+@@ -297,9 +291,8 @@ literal:
+ 			break;
+ 
+ 		  case 'p':	/* pointer format is like hex */
+-			flags |= POINTER | PFXOK;
++			flags |= POINTER | PFXOK | UNSIGNED;
+ 			c = CT_INT;
+-			ccfn = sm_strtoull;
+ 			base = 16;
+ 			break;
+ 
+@@ -324,7 +317,6 @@ literal:
+ 			if (isupper(c))
+ 				flags |= LONG;
+ 			c = CT_INT;
+-			ccfn = (ULONGLONG_T (*)()) sm_strtoll;
+ 			base = 10;
+ 			break;
+ 		}
+@@ -628,7 +620,12 @@ literal:
+ 				ULONGLONG_T res;
+ 
+ 				*p = 0;
+-				res = (*ccfn)(buf, (char **)NULL, base);
++				if (flags & UNSIGNED)
++					res = sm_strtoull(buf, (char **)NULL,
++							  base);
++				else
++					res = sm_strtoll(buf, (char **)NULL,
++							 base);
+ 				if (flags & POINTER)
+ 					*SM_VA_ARG(ap, void **) =
+ 					    (void *)(long) res;
+diff --git a/mailstats/mailstats.c b/mailstats/mailstats.c
+index 6b34a57..5395bec 100644
+--- a/mailstats/mailstats.c
++++ b/mailstats/mailstats.c
+@@ -65,7 +65,7 @@ main(argc, argv)
+ 	char sfilebuf[MAXPATHLEN];
+ 	char buf[MAXLINE];
+ 	struct statistics stats;
+-	extern char *ctime();
++	extern char *ctime(const time_t *);
+ 	extern char *optarg;
+ 	extern int optind;
+ # define MSOPTS "cC:f:opP"
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/sendmail.git/commitdiff/84ae827c7efee02f020bc7e5b2b85872b879138c



More information about the pld-cvs-commit mailing list