---
This patch was taken from
https://github.com/gentoo/gentoo/commit/47750a2e4af92aa6566c3225985f7515b63b61dd
and converted from `patch -p1` to `patch -p0` format.

The original patch header follows.
---
From 8cfd570fd14c8fb9983859767ab1851bfd064b64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Wed, 31 Jan 2024 18:41:21 +0100
Subject: [PATCH] Fixed build with gcc-14
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---

diff -ru ../procmail-3.24.orig/initmake ./initmake
--- ../procmail-3.24.orig/initmake	2022-03-02 01:52:56.000000000 -0800
+++ ./initmake	2024-05-26 19:33:27.043216815 -0700
@@ -124,7 +124,7 @@
 fi
 
 cat >_autotst.c <<HERE
-main()
+int main()
 { return 0;
 }
 HERE
@@ -200,7 +200,7 @@
 #include <sys/types.h>
 #include <stdio.h>
 #include <sys/stat.h>
-main()
+int main()
 { struct stat buf;return!&buf;
 }
 HERE
diff -ru ../procmail-3.24.orig/src/autoconf ./src/autoconf
--- ../procmail-3.24.orig/src/autoconf	2022-03-02 01:52:56.000000000 -0800
+++ ./src/autoconf	2024-05-26 19:33:27.046257179 -0700
@@ -363,6 +363,7 @@
 #include <unistd.h>		/* getpid() getppid() */
 #endif
 #include <stdio.h>
+#include <stdlib.h>
 #include <time.h>
 #include <fcntl.h>
 #include <signal.h>		/* SIGKILL */
@@ -416,6 +417,16 @@
 int dolock,child[NR_of_forks],timeout,fdcollect;
 char dirlocktest[]="_locktest";
 
+int killchildren()
+{ int i;
+  i=NR_of_forks;
+  do
+     if(child[--i]>0)
+	kill(child[i],SIGTERM),child[i]=0;
+  while(i);
+  return 0;
+}
+
 void stimeout()
 { timeout=1;close(fdcollect);killchildren();
 }
@@ -437,7 +448,79 @@
   return pid;
 }
 
-int main(argc,argv)char*argv[];
+static int oldfdlock;
+#ifdef F_SETLKW
+static struct flock flck;		/* why can't it be a local variable? */
+#endif
+#ifdef F_LOCK
+static off_t oldlockoffset;
+#endif
+
+int fdlock(int fd)
+{ int i;unsigned gobble[GOBBLE>>2];
+  for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0);		 /* SunOS crash test */
+  oldfdlock=fd;fd=0;
+  if(MSK_fcntl&dolock)
+#ifdef F_SETLKW
+   { static unsigned extra;
+     flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock);
+     if(!extra--)
+	extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck);
+     flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck);
+   }
+#else
+     fd=1;
+#endif
+  if(MSK_lockf&dolock)
+#ifdef F_LOCK
+     oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0);
+#else
+     fd=1;
+#endif
+  if(MSK_flock&dolock)
+#ifdef LOCK_EX
+     fd|=flock(oldfdlock,LOCK_EX);
+#else
+     fd=1;
+#endif
+  return fd;
+}
+
+int sfdlock(int fd)
+{ int i;unsigned gobble[GOBBLE>>2];
+  for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0);		 /* SunOS crash test */
+  return fdlock(fd);
+}
+
+int fdunlock()
+{ int i;unsigned gobble[GOBBLE];
+  for(i=GOBBLE;i;gobble[--i]=~(unsigned)0);  /* some SunOS libs mess this up */
+  if(MSK_flock&dolock)
+#ifdef LOCK_EX
+     i|=flock(oldfdlock,LOCK_UN);
+#else
+     i=1;
+#endif
+  if(MSK_lockf&dolock)
+#ifdef F_LOCK
+   { lseek(oldfdlock,oldlockoffset,SEEK_SET);
+     i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0);
+   }
+#else
+     i=1;
+#endif
+  if(MSK_fcntl&dolock)
+#ifdef F_SETLKW
+     flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck);
+#else
+     i=1;
+#endif
+  if(!i)
+     for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;);
+  return i;
+}
+
+int main(argc,argv)int argc;char*argv[];
 { int goodlock,testlock,i,pip[2],pipw[2];time_t otimet;unsigned dtimet;
   static char filename[]="_locktst.l0";
   close(0);goodlock=0;testlock=FIRST_lock;signal(SIGPIPE,SIG_DFL);
@@ -576,88 +659,6 @@
   puts("Kernel-locking tests completed.");fprintf(stderr,"\n");
   return EXIT_SUCCESS;
 }
-
-int killchildren()
-{ int i;
-  i=NR_of_forks;
-  do
-     if(child[--i]>0)
-	kill(child[i],SIGTERM),child[i]=0;
-  while(i);
-  return 0;
-}
-
-int sfdlock(fd)
-{ int i;unsigned gobble[GOBBLE>>2];
-  for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0);		 /* SunOS crash test */
-  return fdlock(fd);
-}
-
-static oldfdlock;
-#ifdef F_SETLKW
-static struct flock flck;		/* why can't it be a local variable? */
-#endif
-#ifdef F_LOCK
-static off_t oldlockoffset;
-#endif
-
-int fdlock(fd)
-{ int i;unsigned gobble[GOBBLE>>2];
-  for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0);		 /* SunOS crash test */
-  oldfdlock=fd;fd=0;
-  if(MSK_fcntl&dolock)
-#ifdef F_SETLKW
-   { static unsigned extra;
-     flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock);
-     if(!extra--)
-	extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck);
-     flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck);
-   }
-#else
-     fd=1;
-#endif
-  if(MSK_lockf&dolock)
-#ifdef F_LOCK
-     oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0);
-#else
-     fd=1;
-#endif
-  if(MSK_flock&dolock)
-#ifdef LOCK_EX
-     fd|=flock(oldfdlock,LOCK_EX);
-#else
-     fd=1;
-#endif
-  return fd;
-}
-
-int fdunlock()
-{ int i;unsigned gobble[GOBBLE];
-  for(i=GOBBLE;i;gobble[--i]=~(unsigned)0);  /* some SunOS libs mess this up */
-  if(MSK_flock&dolock)
-#ifdef LOCK_EX
-     i|=flock(oldfdlock,LOCK_UN);
-#else
-     i=1;
-#endif
-  if(MSK_lockf&dolock)
-#ifdef F_LOCK
-   { lseek(oldfdlock,oldlockoffset,SEEK_SET);
-     i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0);
-   }
-#else
-     i=1;
-#endif
-  if(MSK_fcntl&dolock)
-#ifdef F_SETLKW
-     flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck);
-#else
-     i=1;
-#endif
-  if(!i)
-     for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;);
-  return i;
-}
 HERE
 
 if $MAKE _autotst >_autotst.rrr 2>&1
@@ -1033,6 +1034,10 @@
 #ifndef NO_COMSAT
 #include "network.h"
 #endif
+#include <string.h>
+#include <unistd.h>
+int setrgid();
+int setresgid();
 int main(){char a[2];
  endpwent();endgrent();memmove(a,"0",1);bcopy("0",a,1);strcspn(a,"0");
  strtol("0",(char**)0,10);strchr("0",'0');strpbrk(a,"0");rename(a,"0");
@@ -1059,7 +1064,7 @@
 echo '	rename, setrgid, setegid, pow, opendir, mkdir, waitpid, fsync,'
 echo '	ftruncate, strtod, strncasecmp, strerror, strlcat,'
 echo '	memset, bzero, and _exit'
-if $MAKE _autotst.$O >$DEVNULL 2>&1
+if $MAKE _autotst.$O >_autotst.rrr 2>&1
 then
 :
 else
