[packages/imap] Rel 10; patches from Debian including SNI support

arekm arekm at pld-linux.org
Tue Mar 4 13:17:57 CET 2025


commit 857dcd4eceb136e2d0becd15480fc002367eb6b8
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Tue Mar 4 12:24:44 2025 +0100

    Rel 10; patches from Debian including SNI support

 ...error.patch => 1002_flock_fix_syslog_args.patch |   7 +-
 ...ix_zero_len_when_mail_fetch_body_is_empty.patch |  23 ++
 ...ns.patch => 1004_support_rfc5464_METADATA.patch | 165 ++++-----
 1005_poll.patch                                    | 233 ++++++++++++
 1006_openssl1.1_autoverify.patch                   |  58 +++
 2004_no_binaries_below_etc.patch                   |  17 +
 2010_disallow_escaping_home.patch                  |  11 +
 2011_disable_version_check.patch                   |  27 ++
 2013_disable_rsh.patch                             |  11 +
 2014_openssl1.1.1_sni.patch                        |  42 +++
 fix-ftbfs-with-gcc-14.patch                        | 401 +++++++++++++++++++++
 imap-headers_fix.patch                             |  46 ---
 imap.patch                                         |  25 +-
 imap.spec                                          |  52 ++-
 no-ustat.h.patch                                   |  22 --
 openssl.patch                                      |  58 ---
 stop-ignoring-build-errors.patch                   |  25 ++
 17 files changed, 968 insertions(+), 255 deletions(-)
---
diff --git a/imap.spec b/imap.spec
index b4b48b0..513129e 100644
--- a/imap.spec
+++ b/imap.spec
@@ -12,7 +12,7 @@ Summary(uk.UTF-8):	Забезпечує підтримку мережевого
 Summary(zh_CN.UTF-8):	IMAP和POP服务器
 Name:		imap
 Version:	2007f
-Release:	9
+Release:	10
 Epoch:		1
 License:	Apache v2.0
 Group:		Networking/Daemons
@@ -36,11 +36,18 @@ Patch4:		%{name}-mailpath.patch
 Patch5:		%{name}-man.patch
 Patch6:		%{name}-overflow.patch
 Patch7:		%{name}-version-pld.patch
-Patch8:		%{name}-headers_fix.patch
-Patch9:		%{name}-annotations.patch
-Patch10:	%{name}-werror.patch
-Patch11:	no-ustat.h.patch
-Patch12:	openssl.patch
+Patch8:		fix-ftbfs-with-gcc-14.patch
+Patch9:		1005_poll.patch
+Patch10:	1002_flock_fix_syslog_args.patch
+Patch11:	2004_no_binaries_below_etc.patch
+Patch12:	2014_openssl1.1.1_sni.patch
+Patch13:	stop-ignoring-build-errors.patch
+Patch14:	1003_fix_zero_len_when_mail_fetch_body_is_empty.patch
+Patch15:	1004_support_rfc5464_METADATA.patch
+Patch16:	1006_openssl1.1_autoverify.patch
+Patch17:	2010_disallow_escaping_home.patch
+Patch18:	2011_disable_version_check.patch
+Patch19:	2013_disable_rsh.patch
 URL:		http://www.washington.edu/imap/
 BuildRequires:	/sbin/ldconfig
 BuildRequires:	openssl-devel >= 0.9.7d
@@ -307,19 +314,26 @@ Statyczna biblioteka IMAP.
 
 %prep
 %setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
+%patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
+%patch -P3 -p1
+%patch -P4 -p1
+%patch -P5 -p1
+%patch -P6 -p1
+%patch -P7 -p1
+%patch -P8 -p1
+%patch -P9 -p1
+%patch -P10 -p1
+%patch -P11 -p1
+%patch -P12 -p1
+%patch -P13 -p1
+%patch -P14 -p1
+%patch -P15 -p1
+%patch -P16 -p1
+%patch -P17 -p1
+%patch -P18 -p1
+%patch -P19 -p1
 
 cd docs/rfc
 ls rfc* > ../INDEX.rfc
diff --git a/imap-werror.patch b/1002_flock_fix_syslog_args.patch
similarity index 55%
rename from imap-werror.patch
rename to 1002_flock_fix_syslog_args.patch
index 1be8e3d..0fafc82 100644
--- a/imap-werror.patch
+++ b/1002_flock_fix_syslog_args.patch
@@ -1,12 +1,11 @@
-diff -ur imap-2007f.orig/src/osdep/unix/flocklnx.c imap-2007f.fix/src/osdep/unix/flocklnx.c
---- imap-2007f.orig/src/osdep/unix/flocklnx.c	2011-07-23 00:20:11.000000000 +0000
-+++ imap-2007f.fix/src/osdep/unix/flocklnx.c	2013-11-14 11:48:37.216449543 +0000
+--- a/src/osdep/unix/flocklnx.c
++++ b/src/osdep/unix/flocklnx.c
 @@ -57,7 +57,7 @@
      case ENOLCK:		/* lock table is full */
        sprintf (tmp,"File locking failure: %s",strerror (errno));
        mm_log (tmp,WARN);	/* give the user a warning of what happened */
 -      if (!logged++) syslog (LOG_ERR,tmp);
-+      if (!logged++) syslog ("%s",LOG_ERR,tmp);
++	  if (!logged++) syslog (LOG_ERR,"%s",tmp);
  				/* return failure if non-blocking lock */
        if (op & LOCK_NB) return -1;
        sleep (5);		/* slow down in case it loops */
diff --git a/1003_fix_zero_len_when_mail_fetch_body_is_empty.patch b/1003_fix_zero_len_when_mail_fetch_body_is_empty.patch
new file mode 100644
index 0000000..ef3de0f
--- /dev/null
+++ b/1003_fix_zero_len_when_mail_fetch_body_is_empty.patch
@@ -0,0 +1,23 @@
+Description: Properly zero out len when mail_fetch_body() returns an empty string
+Forwarded: no
+Origin: Vladimir Kolesnikov, https://bugs.launchpad.net/ubuntu/+source/uw-imap/+bug/617876/+attachment/1489969/+files/mail.c.diff
+Author: Vladimir Kolesnikov
+Reviewed-By: Daniel T Chen <crimsun at ubuntu.com>
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/uw-imap/+bug/617876
+Bug-Debian: http://bugs.debian.org/635839
+Last-Update: 2011-07-28
+
+--- a/src/c-client/mail.c
++++ b/src/c-client/mail.c
+@@ -1932,7 +1932,10 @@
+   memset (&stream->private.string,NIL,sizeof (STRING));
+   if (!(section && *section))	/* top-level text wanted? */
+     return mail_fetch_message (stream,msgno,len,flags);
+-  else if (strlen (section) > (MAILTMPLEN - 20)) return "";
++  else if (strlen (section) > (MAILTMPLEN - 20)) {
++    if (len) *len = 0;
++    return "";
++  }
+   flags &= ~FT_INTERNAL;	/* can't win with this set */
+ 				/* initialize message data identifier */
+   INIT_GETS (md,stream,msgno,section,0,0);
diff --git a/imap-annotations.patch b/1004_support_rfc5464_METADATA.patch
similarity index 81%
rename from imap-annotations.patch
rename to 1004_support_rfc5464_METADATA.patch
index cf672c2..cf2c856 100644
--- a/imap-annotations.patch
+++ b/1004_support_rfc5464_METADATA.patch
@@ -1,9 +1,15 @@
-Provides get/set ANNOTATIONS support to the c-client library. [Version: 2006j2]
+Description: Implement support for IMAP extension METADATA (rfc5464)
+ Provides get/set ANNOTATIONS support to the c-client library.
+ .
+ [Version: 2006j2]
+Forwarded: no
+Origin: http://www-old.kolab.org/cgi-bin/viewcvs-kolab.cgi/server/patches/imap/
+Bug-Debian: http://bugs.debian.org/456591
+Last-Update: 2012-04-07
 
-diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
---- a/src/c-client/imap4r1.c	Sat Sep 29 11:01:45 2007 +0200
-+++ b/src/c-client/imap4r1.c	Wed Oct 10 18:32:39 2007 +0200
-@@ -135,7 +135,8 @@ typedef struct imap_argument {
+--- a/src/c-client/imap4r1.c
++++ b/src/c-client/imap4r1.c
+@@ -133,7 +133,8 @@
  #define MULTIAPPEND 13
  #define SNLIST 14
  #define MULTIAPPENDREDO 15
@@ -13,7 +19,7 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
  
  /* Append data */
  
-@@ -205,12 +206,15 @@ void imap_gc_body (BODY *body);
+@@ -203,12 +204,15 @@
  void imap_gc_body (BODY *body);
  void imap_capability (MAILSTREAM *stream);
  long imap_acl_work (MAILSTREAM *stream,char *command,IMAPARG *args[]);
@@ -29,7 +35,7 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
  IMAPPARSEDREPLY *imap_send_literal (MAILSTREAM *stream,char *tag,char **s,
  				    STRING *st);
  IMAPPARSEDREPLY *imap_send_spgm (MAILSTREAM *stream,char *tag,char *base,
-@@ -2748,6 +2752,84 @@ long imap_getacl (MAILSTREAM *stream,cha
+@@ -2763,6 +2767,84 @@
      args[0] = &ambx; args[1] = NIL;
    return imap_acl_work (stream,"GETACL",args);
  }
@@ -44,18 +50,18 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +{
 +  IMAPARG *args[4],ambx,apth,aval;
 +  long ret;
-+  
++
 +  ambx.type = ASTRING;
 +  ambx.text = (void *) annotation->mbox;
 +  args[0] = &ambx;
-+  
++
 +  apth.type = QSTRING;
 +  apth.text = (void *) annotation->entry;
 +  args[1] = &apth;
 +
 +  STRINGLIST *st,*l;
 +  ANNOTATION_VALUES *v;
-+  
++
 +  l = st = mail_newstringlist();
 +  v = annotation->values;
 +  while(v){
@@ -69,19 +75,19 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +    }
 +    v = v->next;
 +  }
-+  
++
 +  aval.type = QLIST;
 +  aval.text = (void *)st;
 +  args[2] = &aval;
 +  args[3] = NIL;
-+  
++
 +  ret = imap_annotation_work(stream, "SETANNOTATION",args);
 +  mail_free_stringlist(&st);
 +  return ret;
 +}
-+  
-+  
-+  
++
++
++
 +/* IMAP get annotation
 + * Accepts: mail stream
 + *          mailbox name
@@ -96,9 +102,9 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +  long ret;
 +  ambx.type = ASTRING;
 +  ambx.text = (void*) mailbox;
-+  args[0] = &ambx; 
++  args[0] = &ambx;
++
 +
-+ 
 +  apth.type = QLIST;
 +  apth.text = (void*) entries;
 +  args[1] = &apth;
@@ -114,7 +120,7 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
  

  /* IMAP list rights
   * Accepts: mail stream
-@@ -2800,6 +2882,16 @@ long imap_acl_work (MAILSTREAM *stream,c
+@@ -2815,6 +2897,16 @@
    else mm_log ("ACL not available on this IMAP server",ERROR);
    return ret;
  }
@@ -131,7 +137,7 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
  

  /* IMAP set quota
   * Accepts: mail stream
-@@ -2932,6 +3024,11 @@ IMAPPARSEDREPLY *imap_send (MAILSTREAM *
+@@ -2947,6 +3039,11 @@
        if (reply = imap_send_astring (stream,tag,&s,&st,NIL,CMDBASE+MAXCOMMAND))
  	return reply;
        break;
@@ -143,30 +149,29 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
      case LITERAL:		/* literal, as a stringstruct */
        if (reply = imap_send_literal (stream,tag,&s,arg->text)) return reply;
        break;
-@@ -2942,6 +3039,18 @@ IMAPPARSEDREPLY *imap_send (MAILSTREAM *
-       do {			/* for each list item */
- 	*s++ = c;		/* write prefix character */
- 	if (reply = imap_send_astring (stream,tag,&s,&list->text,NIL,
-+				       CMDBASE+MAXCOMMAND)) return reply;
-+	c = ' ';		/* prefix character for subsequent strings */
-+      }
-+      while (list = list->next);
-+      *s++ = ')';		/* close list */
-+      break;
+@@ -2963,6 +3060,18 @@
+       while (list = list->next);
+       *s++ = ')';		/* close list */
+       break;
 +    case QLIST:			/* list of strings */
 +      list = (STRINGLIST *) arg->text;
 +      c = '(';			/* open paren */
 +      do {			/* for each list item */
 +	*s++ = c;		/* write prefix character */
 +	if (reply = imap_send_qstring (stream,tag,&s,&list->text,
- 				       CMDBASE+MAXCOMMAND)) return reply;
- 	c = ' ';		/* prefix character for subsequent strings */
-       }
-@@ -3114,6 +3223,32 @@ IMAPPARSEDREPLY *imap_send (MAILSTREAM *
-   reply = imap_sout (stream,tag,CMDBASE,&s);
++				       CMDBASE+MAXCOMMAND)) return reply;
++	c = ' ';		/* prefix character for subsequent strings */
++      }
++      while (list = list->next);
++      *s++ = ')';		/* close list */
++      break;
+     case SEARCHPROGRAM:		/* search program */
+       if (reply = imap_send_spgm (stream,tag,CMDBASE,&s,arg->text,
+ 				  CMDBASE+MAXCOMMAND))
+@@ -3130,6 +3239,32 @@
    mail_unlock (stream);		/* unlock stream */
    return reply;
-+}
+ }
 +
 +/* IMAP send quoted-string
 + * Accepts: MAIL stream
@@ -192,28 +197,29 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +  for (j = 0; j < as->size; j++) *(*s)++ = as->data[j];
 +  *(*s)++ = '"';	/* write close quote */
 +  return NIL;
- }
++}
  

  /* IMAP send atom-string
-@@ -4034,6 +4169,50 @@ void imap_parse_unsolicited (MAILSTREAM 
+  * Accepts: MAIL stream
+@@ -4059,6 +4194,50 @@
      }
    }
  

 +  else if (!strcmp (reply->key,"ANNOTATION") && (s = reply->text)){
-+    char * mbox;    
++    char * mbox;
 +    /* response looks like ANNOTATION "mailbox" "entry" ("attr" "value" ["attr" "value"]) ["entry" ("attr "value" ["attr" "value"] )]*/
 +    getannotation_t an = (getannotation_t) mail_parameters (NIL,GET_ANNOTATION,NIL);
-+    
++
 +    mbox = imap_parse_astring (stream, &s, reply,NIL);
-+    
++
 +    while(*s){
-+      ANNOTATION * al = mail_newannotation();    
++      ANNOTATION * al = mail_newannotation();
 +      al->mbox = cpystr(mbox);
 +      t = imap_parse_astring (stream, &s, reply,NIL);
 +      al->entry = t;
 +      STRINGLIST *strlist;
 +      if (s){while (*s == ' ')s++;}
-+      
++
 +      strlist = imap_parse_stringlist(stream, &s,reply);
 +
 +      ANNOTATION_VALUES *vlIter, *vlBegin;
@@ -228,8 +234,8 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +            vlBegin = vlIter;
 +          }
 +          if ( strlist->text.size )
-+            vlIter->attr = cpystr (strlist->text.data);        
-+          strlist = strlist->next;        
++            vlIter->attr = cpystr (strlist->text.data);
++          strlist = strlist->next;
 +          if(!strlist) continue;
 +          if ( strlist->text.size )
 +            vlIter->value = cpystr (strlist->text.data);
@@ -237,7 +243,7 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
 +        }
 +      }
 +      al->values = vlBegin;
-+      if (an) 
++      if (an)
 +        (*an) (stream,al);
 +      mail_free_annotation(&al);
 +    }
@@ -246,19 +252,17 @@ diff -r 1e76e41a2cd8 src/c-client/imap4r1.c
    else if (!strcmp (reply->key,"ACL") && (s = reply->text) &&
  	   (t = imap_parse_astring (stream,&s,reply,NIL))) {
      getacl_t ar = (getacl_t) mail_parameters (NIL,GET_ACL,NIL);
-diff -r 1e76e41a2cd8 src/c-client/imap4r1.h
---- a/src/c-client/imap4r1.h	Sat Sep 29 11:01:45 2007 +0200
-+++ b/src/c-client/imap4r1.h	Wed Oct 10 18:32:39 2007 +0200
-@@ -273,3 +273,5 @@ long imap_setquota (MAILSTREAM *stream,c
+--- a/src/c-client/imap4r1.h
++++ b/src/c-client/imap4r1.h
+@@ -279,3 +279,5 @@
  long imap_setquota (MAILSTREAM *stream,char *qroot,STRINGLIST *limits);
  long imap_getquota (MAILSTREAM *stream,char *qroot);
  long imap_getquotaroot (MAILSTREAM *stream,char *mailbox);
 +long imap_getannotation (MAILSTREAM *stream,char *mailbox,STRINGLIST *entries,STRINGLIST *attributes);
-+long imap_setannotation (MAILSTREAM *stream,ANNOTATION *annotation); 
-diff -r 1e76e41a2cd8 src/c-client/mail.c
---- a/src/c-client/mail.c	Sat Sep 29 11:01:45 2007 +0200
-+++ b/src/c-client/mail.c	Wed Oct 10 18:32:39 2007 +0200
-@@ -69,6 +69,7 @@ static newsrcquery_t mailnewsrcquery = N
++long imap_setannotation (MAILSTREAM *stream,ANNOTATION *annotation);
+--- a/src/c-client/mail.c
++++ b/src/c-client/mail.c
+@@ -67,6 +67,7 @@
  static newsrcquery_t mailnewsrcquery = NIL;
  				/* ACL results callback */
  static getacl_t mailaclresults = NIL;
@@ -266,7 +270,7 @@ diff -r 1e76e41a2cd8 src/c-client/mail.c
  				/* list rights results callback */
  static listrights_t maillistrightsresults = NIL;
  				/* my rights results callback */
-@@ -598,6 +599,11 @@ void *mail_parameters (MAILSTREAM *strea
+@@ -596,6 +597,11 @@
      ret = (void *) (debugsensitive ? VOIDT : NIL);
      break;
  

@@ -278,16 +282,15 @@ diff -r 1e76e41a2cd8 src/c-client/mail.c
    case SET_ACL:
      mailaclresults = (getacl_t) value;
    case GET_ACL:
-@@ -5678,7 +5684,15 @@ ACLLIST *mail_newacllist (void)
+@@ -5717,7 +5723,15 @@
    return (ACLLIST *) memset (fs_get (sizeof (ACLLIST)),0,sizeof (ACLLIST));
  }
  
--
 +ANNOTATION *mail_newannotation (void)
 +{
 +  return (ANNOTATION *) memset (fs_get (sizeof (ANNOTATION)),0,sizeof(ANNOTATION));
 +}
-+
+ 
 +ANNOTATION_VALUES *mail_newannotationvalue (void)
 +{
 +  return (ANNOTATION_VALUES *) memset (fs_get (sizeof (ANNOTATION_VALUES)),0,sizeof(ANNOTATION_VALUES));
@@ -295,7 +298,7 @@ diff -r 1e76e41a2cd8 src/c-client/mail.c
  /* Mail instantiate new quotalist
   * Returns: new quotalist
   */
-@@ -6001,6 +6015,25 @@ void mail_free_acllist (ACLLIST **al)
+@@ -6040,6 +6054,25 @@
    }
  }
  
@@ -321,10 +324,9 @@ diff -r 1e76e41a2cd8 src/c-client/mail.c
  
  /* Mail garbage collect quotalist
   * Accepts: pointer to quotalist pointer
-diff -r 1e76e41a2cd8 src/c-client/mail.h
---- a/src/c-client/mail.h	Sat Sep 29 11:01:45 2007 +0200
-+++ b/src/c-client/mail.h	Wed Oct 10 18:32:39 2007 +0200
-@@ -351,6 +351,8 @@
+--- a/src/c-client/mail.h
++++ b/src/c-client/mail.h
+@@ -353,6 +353,8 @@
  #define SET_SCANCONTENTS (long) 573
  #define GET_MHALLOWINBOX (long) 574
  #define SET_MHALLOWINBOX (long) 575
@@ -333,12 +335,10 @@ diff -r 1e76e41a2cd8 src/c-client/mail.h
  

  /* Driver flags */
  
-@@ -1041,6 +1043,24 @@ ACLLIST {
-   char *identifier;		/* authentication identifier */
-   char *rights;			/* access rights */
+@@ -1048,6 +1050,24 @@
    ACLLIST *next;
-+};
-+
+ };
+ 
 +/* ANNOTATION Response */
 +
 +#define ANNOTATION_VALUES struct annotation_value_list
@@ -355,10 +355,12 @@ diff -r 1e76e41a2cd8 src/c-client/mail.h
 +	char *mbox;
 +	char *entry;
 +	ANNOTATION_VALUES * values;
- };
- 
++};
++
  /* Quota resource list */
-@@ -1351,6 +1371,7 @@ typedef void (*logouthook_t) (void *data
+ 
+ #define QUOTALIST struct quota_list
+@@ -1356,6 +1376,7 @@
  typedef void (*logouthook_t) (void *data);
  typedef char *(*sslclientcert_t) (void);
  typedef char *(*sslclientkey_t) (void);
@@ -366,7 +368,7 @@ diff -r 1e76e41a2cd8 src/c-client/mail.h
  

  /* Globals */
  
-@@ -1768,7 +1789,10 @@ SORTPGM *mail_newsortpgm (void);
+@@ -1774,7 +1795,10 @@
  SORTPGM *mail_newsortpgm (void);
  THREADNODE *mail_newthreadnode (SORTCACHE *sc);
  ACLLIST *mail_newacllist (void);
@@ -377,10 +379,9 @@ diff -r 1e76e41a2cd8 src/c-client/mail.h
  void mail_free_body (BODY **body);
  void mail_free_body_data (BODY *body);
  void mail_free_body_parameter (PARAMETER **parameter);
-diff -r 1e76e41a2cd8 src/mtest/mtest.c
---- a/src/mtest/mtest.c	Sat Sep 29 11:01:45 2007 +0200
-+++ b/src/mtest/mtest.c	Wed Oct 10 18:32:39 2007 +0200
-@@ -145,6 +145,8 @@ int main ()
+--- a/src/mtest/mtest.c
++++ b/src/mtest/mtest.c
+@@ -145,6 +145,8 @@
  #endif
    return NIL;
  }
@@ -389,7 +390,7 @@ diff -r 1e76e41a2cd8 src/mtest/mtest.c
  

  /* MM command loop
   * Accepts: MAIL stream
-@@ -195,6 +197,28 @@ void mm (MAILSTREAM *stream,long debug)
+@@ -195,6 +197,28 @@
  	mail_setflag (stream,arg,"\\DELETED");
        else puts ("?Bad message number");
        break;
@@ -403,22 +404,22 @@ diff -r 1e76e41a2cd8 src/mtest/mtest.c
 +          STRINGLIST *cur = entries;
 +          cur->text.size = strlen((char *) (cur->text.data = (unsigned char*)cpystr (parms)));
 +          cur->next = NIL;
-+          
++
 +          STRINGLIST *attributes = mail_newstringlist();
 +          cur = attributes;
 +          cur->text.size = strlen((char *) (cur->text.data = (unsigned char*)cpystr ("*")));
 +          cur->next = NIL;
-+          
++
 +          imap_getannotation(stream,"INBOX",entries,attributes);
 +          mail_free_stringlist(&entries);
 +          mail_free_stringlist(&attributes);
 +        }
 +      }
-+      break;  
++      break;
      case 'E':			/* Expunge command */
        mail_expunge (stream);
        last = 0;
-@@ -347,7 +371,7 @@ void mm (MAILSTREAM *stream,long debug)
+@@ -347,7 +371,7 @@
      case '?':			/* ? command */
        puts ("Body, Check, Delete, Expunge, Find, GC, Headers, Literal,");
        puts (" MailboxStatus, New Mailbox, Overview, Ping, Quit, Send, Type,");
@@ -427,7 +428,7 @@ diff -r 1e76e41a2cd8 src/mtest/mtest.c
        break;
      default:			/* bogus command */
        printf ("?Unrecognized command: %s\n",cmd);
-@@ -600,6 +624,18 @@ void prompt (char *msg,char *txt)
+@@ -600,6 +624,18 @@
  

  /* Interfaces to C-client */
  
diff --git a/1005_poll.patch b/1005_poll.patch
new file mode 100644
index 0000000..8594a4a
--- /dev/null
+++ b/1005_poll.patch
@@ -0,0 +1,233 @@
+Description: Use poll(2) instead of select(2) to support more than 1024 file descriptors
+Author: Ben Smithurst <ben.smithurst at gradwell.com>
+Author: David Duncan Ross Palmer <david.palmer at gradwell.com>
+Bug-Debian: https://bugs.debian.org/478193
+Bug-Debian: https://bugs.debian.org/770022
+
+diff --git a/src/osdep/unix/os_lnx.c b/src/osdep/unix/os_lnx.c
+index 03fd17d..671bbd6 100644
+--- a/src/osdep/unix/os_lnx.c
++++ b/src/osdep/unix/os_lnx.c
+@@ -41,6 +41,7 @@
+ extern int errno;		/* just in case */
+ #include <pwd.h>
+ #include "misc.h"
++#include <poll.h>
+ 
+ 
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/os_slx.c b/src/osdep/unix/os_slx.c
+index c94d632..f6bf27d 100644
+--- a/src/osdep/unix/os_slx.c
++++ b/src/osdep/unix/os_slx.c
+@@ -42,6 +42,7 @@ extern int errno;		/* just in case */
+ #include <pwd.h>
+ #include <shadow.h>
+ #include "misc.h"
++#include <poll.h>
+ 
+ 
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/tcp_unix.c b/src/osdep/unix/tcp_unix.c
+index 795fb4f..c69eaec 100644
+--- a/src/osdep/unix/tcp_unix.c
++++ b/src/osdep/unix/tcp_unix.c
+@@ -235,12 +235,11 @@ TCPSTREAM *tcp_open (char *host,char *service,unsigned long port)
+ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ 		     char *tmp,int *ctr,char *hst)
+ {
+-  int i,ti,sock,flgs;
++  int i,ti,sock,flgs,tmo;
++  struct pollfd pfd;
+   size_t len;
+   time_t now;
+   struct protoent *pt = getprotobyname ("tcp");
+-  fd_set rfds,wfds,efds;
+-  struct timeval tmo;
+   struct sockaddr *sadr = ip_sockaddr (family,adr,adrlen,port,&len);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+ 				/* fetid Solaris */
+@@ -252,14 +251,6 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+     sprintf (tmp,"Unable to create TCP socket: %s",strerror (errno));
+     (*bn) (BLOCK_NONSENSITIVE,data);
+   }
+-  else if (sock >= FD_SETSIZE) {/* unselectable sockets are useless */
+-    sprintf (tmp,"Unable to create selectable TCP socket (%d >= %d)",
+-	     sock,FD_SETSIZE);
+-    (*bn) (BLOCK_NONSENSITIVE,data);
+-    close (sock);
+-    sock = -1;
+-    errno = EMFILE;
+-  }
+ 

+   else {			/* get current socket flags */
+     flgs = fcntl (sock,F_GETFL,0);
+@@ -284,16 +275,11 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+     if ((sock >= 0) && ctr) {	/* want open timeout? */
+       now = time (0);		/* open timeout */
+       ti = ttmo_open ? now + ttmo_open : 0;
+-      tmo.tv_usec = 0;
+-      FD_ZERO (&rfds);		/* initialize selection vector */
+-      FD_ZERO (&wfds);		/* initialize selection vector */
+-      FD_ZERO (&efds);		/* handle errors too */
+-      FD_SET (sock,&rfds);	/* block for error or readable or writable */
+-      FD_SET (sock,&wfds);
+-      FD_SET (sock,&efds);
++      pfd.fd = sock;
++      pfd.events = POLLIN | POLLOUT;
+       do {			/* block under timeout */
+-	tmo.tv_sec = ti ? ti - now : 0;
+-	i = select (sock+1,&rfds,&wfds,&efds,ti ? &tmo : NIL);
++	tmo = ti ? ti - now : 0;
++	i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ 	now = time (0);		/* fake timeout if interrupt & time expired */
+ 	if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+       } while ((i < 0) && (errno == EINTR));
+@@ -302,7 +288,7 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ 	fcntl (sock,F_SETFL,flgs);
+ 	/* This used to be a zero-byte read(), but that crashes Solaris */
+ 				/* get socket status */
+-	if(FD_ISSET(sock, &rfds)) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
++	if(pfd.revents & POLLIN) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
+       }	
+       if (i <= 0) {		/* timeout or error? */
+ 	i = i ? errno : ETIMEDOUT;/* determine error code */
+@@ -545,9 +531,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+     stream->ictr -=n;
+   }
+   if (size) {
+-    int i;
+-    fd_set fds,efds;
+-    struct timeval tmo;
++    int i, tmo;
++    struct pollfd pfd;
+     time_t t = time (0);
+     blocknotify_t bn=(blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+     (*bn) (BLOCK_TCPREAD,NIL);
+@@ -556,16 +541,13 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+       time_t now = tl;
+       time_t ti = ttmo_read ? now + ttmo_read : 0;
+       if (tcpdebug) mm_log ("Reading TCP buffer",TCPDEBUG);
+-      tmo.tv_usec = 0;
+-      FD_ZERO (&fds);		/* initialize selection vector */
+-      FD_ZERO (&efds);		/* handle errors too */
+-				/* set bit in selection vectors */
+-      FD_SET (stream->tcpsi,&fds);
+-      FD_SET (stream->tcpsi,&efds);
++
++      pfd.events = POLLIN;
++      pfd.fd = stream->tcpsi;
+       errno = NIL;		/* initially no error */
+       do {			/* block under timeout */
+-	tmo.tv_sec = ti ? ti - now : 0;
+-	i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++	tmo = ti ? ti - now : 0;
++	i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ 	now = time (0);		/* fake timeout if interrupt & time expired */
+ 	if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+       } while ((i < 0) && (errno == EINTR));
+@@ -605,9 +587,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+ 
+ long tcp_getdata (TCPSTREAM *stream)
+ {
+-  int i;
+-  fd_set fds,efds;
+-  struct timeval tmo;
++  int i, tmo;
++  struct pollfd pfd;
+   time_t t = time (0);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+   if (stream->tcpsi < 0) return NIL;
+@@ -617,15 +598,12 @@ long tcp_getdata (TCPSTREAM *stream)
+     time_t now = tl;
+     time_t ti = ttmo_read ? now + ttmo_read : 0;
+     if (tcpdebug) mm_log ("Reading TCP data",TCPDEBUG);
+-    tmo.tv_usec = 0;
+-    FD_ZERO (&fds);		/* initialize selection vector */
+-    FD_ZERO (&efds);		/* handle errors too */
+-    FD_SET (stream->tcpsi,&fds);/* set bit in selection vectors */
+-    FD_SET (stream->tcpsi,&efds);
++    pfd.fd = stream->tcpsi;
++    pfd.events = POLLIN;
+     errno = NIL;		/* initially no error */
+     do {			/* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);		/* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+     } while ((i < 0) && (errno == EINTR));
+@@ -677,9 +655,8 @@ long tcp_soutr (TCPSTREAM *stream,char *string)
+ 
+ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+ {
+-  int i;
+-  fd_set fds,efds;
+-  struct timeval tmo;
++  int i, tmo;
++  struct pollfd pfd;
+   time_t t = time (0);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+   if (stream->tcpso < 0) return NIL;
+@@ -689,15 +666,12 @@ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+     time_t now = tl;
+     time_t ti = ttmo_write ? now + ttmo_write : 0;
+     if (tcpdebug) mm_log ("Writing to TCP",TCPDEBUG);
+-    tmo.tv_usec = 0;
+-    FD_ZERO (&fds);		/* initialize selection vector */
+-    FD_ZERO (&efds);		/* handle errors too */
+-    FD_SET (stream->tcpso,&fds);/* set bit in selection vector */
+-    FD_SET(stream->tcpso,&efds);/* set bit in error selection vector */
++    pfd.fd = stream->tcpso;
++    pfd.events = POLLOUT;
+     errno = NIL;		/* block and write */
+     do {			/* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (stream->tcpso+1,NIL,&fds,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);		/* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+     } while ((i < 0) && (errno == EINTR));
+--- uw-imap.orig/src/osdep/unix/ssl_unix.c	2014-06-04 15:34:16.000000000 +0100
++++ uw-imap/src/osdep/unix/ssl_unix.c	2014-06-04 15:34:21.000000000 +0100
+@@ -472,16 +472,14 @@
+ 
+ long ssl_getdata (SSLSTREAM *stream)
+ {
+-  int i,sock;
+-  fd_set fds,efds;
+-  struct timeval tmo;
++  int i,sock,tmo;
++  struct pollfd pfd;
+   tcptimeout_t tmoh = (tcptimeout_t) mail_parameters (NIL,GET_TIMEOUT,NIL);
+   long ttmo_read = (long) mail_parameters (NIL,GET_READTIMEOUT,NIL);
+   time_t t = time (0);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+   if (!stream->con || ((sock = SSL_get_fd (stream->con)) < 0)) return NIL;
+ 				/* tcp_unix should have prevented this */
+-  if (sock >= FD_SETSIZE) fatal ("unselectable socket in ssl_getdata()");
+   (*bn) (BLOCK_TCPREAD,NIL);
+   while (stream->ictr < 1) {	/* if nothing in the buffer */
+     time_t tl = time (0);	/* start of request */
+@@ -490,15 +488,12 @@
+     if (SSL_pending (stream->con)) i = 1;
+     else {
+       if (tcpdebug) mm_log ("Reading SSL data",TCPDEBUG);
+-      tmo.tv_usec = 0;
+-      FD_ZERO (&fds);		/* initialize selection vector */
+-      FD_ZERO (&efds);		/* handle errors too */
+-      FD_SET (sock,&fds);	/* set bit in selection vector */
+-      FD_SET (sock,&efds);	/* set bit in error selection vector */
++      pfd.fd = sock;
++      pfd.events = POLLIN;
+       errno = NIL;		/* block and read */
+       do {			/* block under timeout */
+-	tmo.tv_sec = ti ? ti - now : 0;
+-	i = select (sock+1,&fds,0,&efds,ti ? &tmo : 0);
++	tmo = ti ? ti - now : 0;
++	i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ 	now = time (0);		/* fake timeout if interrupt & time expired */
+ 	if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+       } while ((i < 0) && (errno == EINTR));
diff --git a/1006_openssl1.1_autoverify.patch b/1006_openssl1.1_autoverify.patch
new file mode 100644
index 0000000..087e747
--- /dev/null
+++ b/1006_openssl1.1_autoverify.patch
@@ -0,0 +1,58 @@
+Description: Support OpenSSL 1.1
+ When building with OpenSSL 1.1 and newer, use the new built-in
+ hostname verification instead of code that doesn't compile due to
+ structs having been made opaque.
+Bug-Debian: https://bugs.debian.org/828589
+
+--- a/src/osdep/unix/ssl_unix.c
++++ b/src/osdep/unix/ssl_unix.c
+@@ -227,8 +227,16 @@ static char *ssl_start_work (SSLSTREAM *
+ 				/* disable certificate validation? */
+   if (flags & NET_NOVALIDATECERT)
+     SSL_CTX_set_verify (stream->context,SSL_VERIFY_NONE,NIL);
+-  else SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
++  else {
++#if OPENSSL_VERSION_NUMBER >= 0x10100000      
++      X509_VERIFY_PARAM *param = SSL_CTX_get0_param(stream->context);
++      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
++      X509_VERIFY_PARAM_set1_host(param, host, 0);
++#endif
++
++      SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
+ 				/* set default paths to CAs... */
++  }
+   SSL_CTX_set_default_verify_paths (stream->context);
+ 				/* ...unless a non-standard path desired */
+   if (s = (char *) mail_parameters (NIL,GET_SSLCAPATH,NIL))
+@@ -266,6 +274,7 @@ static char *ssl_start_work (SSLSTREAM *
+   if (SSL_write (stream->con,"",0) < 0)
+     return ssl_last_error ? ssl_last_error : "SSL negotiation failed";
+ 				/* need to validate host names? */
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+   if (!(flags & NET_NOVALIDATECERT) &&
+       (err = ssl_validate_cert (cert = SSL_get_peer_certificate (stream->con),
+ 				host))) {
+@@ -275,6 +284,7 @@ static char *ssl_start_work (SSLSTREAM *
+     sprintf (tmp,"*%.128s: %.255s",err,cert ? cert->name : "???");
+     return ssl_last_error = cpystr (tmp);
+   }
++#endif
+   return NIL;
+ }
+ 

+@@ -313,6 +323,7 @@ static int ssl_open_verify (int ok,X509_
+  * Returns: NIL if validated, else string of error message
+  */
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ static char *ssl_validate_cert (X509 *cert,char *host)
+ {
+   int i,n;
+@@ -342,6 +353,7 @@ static char *ssl_validate_cert (X509 *ce
+   else ret = "Unable to locate common name in certificate";
+   return ret;
+ }
++#endif
+ 

+ /* Case-independent wildcard pattern match
+  * Accepts: base string
diff --git a/2004_no_binaries_below_etc.patch b/2004_no_binaries_below_etc.patch
new file mode 100644
index 0000000..fccc1bf
--- /dev/null
+++ b/2004_no_binaries_below_etc.patch
@@ -0,0 +1,17 @@
+--- a/src/osdep/unix/tcp_unix.c
++++ b/src/osdep/unix/tcp_unix.c
+@@ -348,12 +348,12 @@
+ 				/* return immediately if ssh disabled */
+     if (!(sshpath && (ti = sshtimeout))) return NIL;
+ 				/* ssh command prototype defined yet? */
+-    if (!sshcommand) sshcommand = cpystr ("%s %s -l %s exec /etc/r%sd");
++    if (!sshcommand) sshcommand = cpystr ("%s %s -l %s exec /usr/sbin/r%sd");
+   }
+ 				/* want rsh? */
+   else if (rshpath && (ti = rshtimeout)) {
+ 				/* rsh command prototype defined yet? */
+-    if (!rshcommand) rshcommand = cpystr ("%s %s -l %s exec /etc/r%sd");
++    if (!rshcommand) rshcommand = cpystr ("%s %s -l %s exec /usr/sbin/r%sd");
+   }
+   else return NIL;		/* rsh disabled */
+ 				/* look like domain literal? */
diff --git a/2010_disallow_escaping_home.patch b/2010_disallow_escaping_home.patch
new file mode 100644
index 0000000..5c1b396
--- /dev/null
+++ b/2010_disallow_escaping_home.patch
@@ -0,0 +1,11 @@
+--- a/src/osdep/unix/env_unix.c
++++ b/src/osdep/unix/env_unix.c
+@@ -77,7 +77,7 @@
+ static short anonymous = NIL;	/* is anonymous */
+ static short blackBox = NIL;	/* is a black box */
+ static short closedBox = NIL;	/* is a closed box (uses chroot() jail) */
+-static short restrictBox = NIL;	/* is a restricted box */
++static short restrictBox = -1;	/* is a restricted box */
+ static short has_no_life = NIL;	/* is a cretin with no life */
+ 				/* block environment init */
+ static short block_env_init = NIL;
diff --git a/2011_disable_version_check.patch b/2011_disable_version_check.patch
new file mode 100644
index 0000000..4b14859
--- /dev/null
+++ b/2011_disable_version_check.patch
@@ -0,0 +1,27 @@
+Description: Disable version check
+ The version check in mail_versioncheck(), called via #include "linkage.c",
+ Prevents new versions of the shared library to be used without rebuilding
+ all applications, even if there wouldn't be any other problems doing so.
+ Package dependencies, SONAME, and Debian's build system make sure that
+ a compatible version will be loaded; therefore we remove this check.
+Author: Magnus Holmgren <holmgren at debian.org>
+Bug-Debian: http://bugs.debian.org/682256
+
+--- a/src/c-client/mail.c
++++ b/src/c-client/mail.c
+@@ -293,13 +293,8 @@ static void mail_string_setpos (STRING *
+ 
+ void mail_versioncheck (char *version)
+ {
+-				/* attempt to protect again wrong .h */
+-  if (strcmp (version,mailcclientversion)) {
+-    char tmp[MAILTMPLEN];
+-    sprintf (tmp,"c-client library version skew, app=%.100s library=%.100s",
+-	     version,mailcclientversion);
+-    fatal (tmp);
+-  }
++	/* Skip unnecessarily strict version check. */
++	;
+ }
+ 
+ 
diff --git a/2013_disable_rsh.patch b/2013_disable_rsh.patch
new file mode 100644
index 0000000..7a68644
--- /dev/null
+++ b/2013_disable_rsh.patch
@@ -0,0 +1,11 @@
+--- a/src/osdep/unix/Makefile
++++ b/src/osdep/unix/Makefile
+@@ -985,7 +985,7 @@ onceenv:
+ 	 -DMD5ENABLE=\"$(MD5PWD)\" -DMAILSPOOL=\"$(MAILSPOOL)\" \
+ 	 -DANONYMOUSHOME=\"$(MAILSPOOL)/anonymous\" \
+ 	 -DACTIVEFILE=\"$(ACTIVEFILE)\" -DNEWSSPOOL=\"$(NEWSSPOOL)\" \
+-	 -DRSHPATH=\"$(RSHPATH)\" -DLOCKPGM=\"$(LOCKPGM)\" \
++	 -DLOCKPGM=\"$(LOCKPGM)\" \
+ 	 -DLOCKPGM1=\"$(LOCKPGM1)\" -DLOCKPGM2=\"$(LOCKPGM2)\" \
+ 	 -DLOCKPGM3=\"$(LOCKPGM3)\" > OSCFLAGS
+ 	echo $(BASELDFLAGS) $(EXTRALDFLAGS) > LDFLAGS
diff --git a/2014_openssl1.1.1_sni.patch b/2014_openssl1.1.1_sni.patch
new file mode 100644
index 0000000..0d753dd
--- /dev/null
+++ b/2014_openssl1.1.1_sni.patch
@@ -0,0 +1,42 @@
+Bug-Debian: https://bugs.debian.org/916041
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1834340
+Description: 
+ Google IMAP servers require SNI if TLSv1.3 is used,
+ otherwise it sends a self-signed certificate which
+ fails validation.
+
+ OpenSSL support/versions:
+ - TLSv1.3 on 1.1.1,
+ - a2i_IPADDRESS() on 0.9.8'ish,
+ - SSL_set_tlsext_host_name() on 0.9.8'ish/1.0.0;
+ per 'git blame/describe' and the CHANGES file.
+
+ So check for TLSv1.3 support / OpenSSL 1.1.1
+ not to incur behavior changes on pre-TLSv1.3,
+ and set host_name to 'host' (ssl_open_verify()
+ validates this, via 'ssl_last_host' variable)
+
+ This patch just combines these two patches:
+ - BTS#916041 (message #5) by Ed Spiridonov,
+ - LP#1834340 (comment #6) by David Zuelke.
+Author: Mauricio Faria de Oliveira <mfo at canonical.com>
+ 
+Index: uw-imap-2007f~dfsg/src/osdep/unix/ssl_unix.c
+===================================================================
+--- uw-imap-2007f~dfsg.orig/src/osdep/unix/ssl_unix.c
++++ uw-imap-2007f~dfsg/src/osdep/unix/ssl_unix.c
+@@ -266,6 +266,14 @@ static char *ssl_start_work (SSLSTREAM *
+ 				/* create connection */
+   if (!(stream->con = (SSL *) SSL_new (stream->context)))
+     return "SSL connection failed";
++#if OPENSSL_VERSION_NUMBER >= 0x10101000
++  /* Use SNI in case server requires it with TLSv1.3.
++   * Literal IP addresses not permitted per RFC 6066. */
++  if (!a2i_IPADDRESS(host)) {
++    ERR_clear_error();
++    SSL_set_tlsext_host_name(stream->con,host);
++  }
++#endif
+   bio = BIO_new_socket (stream->tcpstream->tcpsi,BIO_NOCLOSE);
+   SSL_set_bio (stream->con,bio,bio);
+   SSL_set_connect_state (stream->con);
diff --git a/fix-ftbfs-with-gcc-14.patch b/fix-ftbfs-with-gcc-14.patch
new file mode 100644
index 0000000..14636d3
--- /dev/null
+++ b/fix-ftbfs-with-gcc-14.patch
@@ -0,0 +1,401 @@
+From: Chris Hofstaedtler <zeha at debian.org>
+Date: Tue, 31 Dec 2024 08:00:53 +0100
+X-Dgit-Generated: 8:2007f~dfsg-7.1 2e6f7847a9cd0e08e6a7b0a84a8e2d98329cffd3
+Subject: Fix FTBFS with gcc-14
+
+Include necessary headers, use sys4 utime wrapper on both Linux
+platforms, replace gets with fgets, et al.
+
+Closes: #1075612
+
+---
+
+diff --git a/src/mlock/mlock.c b/src/mlock/mlock.c
+index 1dca40e..b686bf0 100644
+--- a/src/mlock/mlock.c
++++ b/src/mlock/mlock.c
+@@ -40,6 +40,9 @@
+ #include <netdb.h>
+ #include <ctype.h>
+ #include <string.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include <time.h>
+ 
+ #define LOCKTIMEOUT 5		/* lock timeout in minutes */
+ #define LOCKPROTECTION 0664
+diff --git a/src/mtest/mtest.c b/src/mtest/mtest.c
+index 675aac7..5926c35 100644
+--- a/src/mtest/mtest.c
++++ b/src/mtest/mtest.c
+@@ -38,6 +38,7 @@
+ #include <signal.h>
+ #include "c-client.h"
+ #include "imap4r1.h"
++#include <stdio.h>
+ 
+ /* Excellent reasons to hate ifdefs, and why my real code never uses them */
+ 
+@@ -81,7 +82,7 @@ void overview_header (MAILSTREAM *stream,unsigned long uid,OVERVIEW *ov,
+ void header (MAILSTREAM *stream,long msgno);
+ void display_body (BODY *body,char *pfx,long i);
+ void status (MAILSTREAM *stream);
+-void prompt (char *msg,char *txt);
++void prompt (const char *msg,char *txt);
+ void smtptest (long debug);
+ 

+ /* Main program - initialization */
+@@ -616,10 +617,10 @@ void status (MAILSTREAM *stream)
+  *          pointer to input buffer
+  */
+ 
+-void prompt (char *msg,char *txt)
++void prompt (const char *msg,char *txt)
+ {
+   printf ("%s",msg);
+-  gets (txt);
++  fgets (txt, MAILTMPLEN-1, stdin);
+ }
+ 

+ /* Interfaces to C-client */
+@@ -815,7 +816,7 @@ void smtptest (long debug)
+   puts (" Msg (end with a line with only a '.'):");
+   body->type = TYPETEXT;
+   *text = '\0';
+-  while (gets (line)) {
++  while (fgets (line, MAILTMPLEN-1, stdin)) {
+     if (line[0] == '.') {
+       if (line[1] == '\0') break;
+       else strcat (text,".");
+diff --git a/src/osdep/unix/mh.c b/src/osdep/unix/mh.c
+index 0226b7a..a23d5d5 100644
+--- a/src/osdep/unix/mh.c
++++ b/src/osdep/unix/mh.c
+@@ -103,8 +103,8 @@ long mh_copy (MAILSTREAM *stream,char *sequence,char *mailbox,
+ 	      long options);
+ long mh_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);
+ 
+-int mh_select (struct direct *name);
+-int mh_numsort (const void *d1,const void *d2);
++int mh_select (const struct direct *name);
++int mh_numsort (const struct dirent** d1, const struct dirent** d2);
+ char *mh_file (char *dst,char *name);
+ long mh_canonicalize (char *pattern,char *ref,char *pat);
+ void mh_setdate (char *file,MESSAGECACHE *elt);
+@@ -1194,10 +1194,10 @@ long mh_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data)
+  * Returns: T to use file name, NIL to skip it
+  */
+ 
+-int mh_select (struct direct *name)
++int mh_select (const struct direct *name)
+ {
+   char c;
+-  char *s = name->d_name;
++  const char *s = name->d_name;
+   while (c = *s++) if (!isdigit (c)) return NIL;
+   return T;
+ }
+@@ -1209,13 +1209,14 @@ int mh_select (struct direct *name)
+  * Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2
+  */
+ 
+-int mh_numsort (const void *d1,const void *d2)
++int mh_numsort (const struct dirent** d1, const struct dirent** d2)
+ {
+-  return atoi ((*(struct direct **) d1)->d_name) -
+-    atoi ((*(struct direct **) d2)->d_name);
++  return atoi ((*d1)->d_name) -
++    atoi ((*d2)->d_name);
+ }
+ 
+ 
++
+ /* MH mail build file name
+  * Accepts: destination string
+  *          source
+diff --git a/src/osdep/unix/mix.c b/src/osdep/unix/mix.c
+index fbf4a02..b798981 100644
+--- a/src/osdep/unix/mix.c
++++ b/src/osdep/unix/mix.c
+@@ -114,7 +114,7 @@ MIXBURP {
+ DRIVER *mix_valid (char *name);
+ long mix_isvalid (char *name,char *meta);
+ void *mix_parameters (long function,void *value);
+-long mix_dirfmttest (char *name);
++long mix_dirfmttest (const char *name);
+ void mix_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents);
+ long mix_scan_contents (char *name,char *contents,unsigned long csiz,
+ 			unsigned long fsiz);
+@@ -125,7 +125,7 @@ long mix_unsubscribe (MAILSTREAM *stream,char *mailbox);
+ long mix_create (MAILSTREAM *stream,char *mailbox);
+ long mix_delete (MAILSTREAM *stream,char *mailbox);
+ long mix_rename (MAILSTREAM *stream,char *old,char *newname);
+-int mix_rselect (struct direct *name);
++int mix_rselect (const struct direct *name);
+ MAILSTREAM *mix_open (MAILSTREAM *stream);
+ void mix_close (MAILSTREAM *stream,long options);
+ void mix_abort (MAILSTREAM *stream);
+@@ -140,8 +140,8 @@ THREADNODE *mix_thread (MAILSTREAM *stream,char *type,char *charset,
+ long mix_ping (MAILSTREAM *stream);
+ void mix_check (MAILSTREAM *stream);
+ long mix_expunge (MAILSTREAM *stream,char *sequence,long options);
+-int mix_select (struct direct *name);
+-int mix_msgfsort (const void *d1,const void *d2);
++int mix_select (const struct direct *name);
++int mix_msgfsort (const struct dirent **d1,const struct dirent **d2);
+ long mix_addset (SEARCHSET **set,unsigned long start,unsigned long size);
+ long mix_burp (MAILSTREAM *stream,MIXBURP *burp,unsigned long *reclaimed);
+ long mix_burp_check (SEARCHSET *set,size_t size,char *file);
+@@ -284,7 +284,7 @@ void *mix_parameters (long function,void *value)
+  * Returns: T if internal name, NIL otherwise
+  */
+ 
+-long mix_dirfmttest (char *name)
++long mix_dirfmttest (const char *name)
+ {
+ 				/* belongs to MIX if starts with .mix */
+   return strncmp (name,MIXNAME,sizeof (MIXNAME) - 1) ? NIL : LONGT;
+@@ -587,7 +587,7 @@ long mix_rename (MAILSTREAM *stream,char *old,char *newname)
+  * Returns: T if mix file name, NIL otherwise
+  */
+ 
+-int mix_rselect (struct direct *name)
++int mix_rselect (const struct direct *name)
+ {
+   return mix_dirfmttest (name->d_name);
+ }
+@@ -1146,7 +1146,7 @@ long mix_expunge (MAILSTREAM *stream,char *sequence,long options)
+  * ".mix" with no suffix was used by experimental versions
+  */
+ 
+-int mix_select (struct direct *name)
++int mix_select (const struct direct *name)
+ {
+   char c,*s;
+ 				/* make sure name has prefix */
+@@ -1165,10 +1165,10 @@ int mix_select (struct direct *name)
+  * Returns: -1 if d1 < d2, 0 if d1 == d2, 1 d1 > d2
+  */
+ 
+-int mix_msgfsort (const void *d1,const void *d2)
++int mix_msgfsort (const struct dirent **d1,const struct dirent **d2)
+ {
+-  char *n1 = (*(struct direct **) d1)->d_name + sizeof (MIXNAME) - 1;
+-  char *n2 = (*(struct direct **) d2)->d_name + sizeof (MIXNAME) - 1;
++  const char *n1 = (*(const struct direct **) d1)->d_name + sizeof (MIXNAME) - 1;
++  const char *n2 = (*(const struct direct **) d2)->d_name + sizeof (MIXNAME) - 1;
+   return compare_ulong (*n1 ? strtoul (n1,NIL,16) : 0,
+ 			*n2 ? strtoul (n2,NIL,16) : 0);
+ }
+diff --git a/src/osdep/unix/mx.c b/src/osdep/unix/mx.c
+index 4549527..1a5d04d 100644
+--- a/src/osdep/unix/mx.c
++++ b/src/osdep/unix/mx.c
+@@ -98,8 +98,8 @@ long mx_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);
+ long mx_append_msg (MAILSTREAM *stream,char *flags,MESSAGECACHE *elt,
+ 		    STRING *st,SEARCHSET *set);
+ 
+-int mx_select (struct direct *name);
+-int mx_numsort (const void *d1,const void *d2);
++int mx_select (const struct direct *name);
++int mx_numsort (const struct dirent** d1, const struct dirent** d2);
+ char *mx_file (char *dst,char *name);
+ long mx_lockindex (MAILSTREAM *stream);
+ void mx_unlockindex (MAILSTREAM *stream);
+@@ -1110,10 +1110,10 @@ long mx_append_msg (MAILSTREAM *stream,char *flags,MESSAGECACHE *elt,
+  * Returns: T to use file name, NIL to skip it
+  */
+ 
+-int mx_select (struct direct *name)
++int mx_select (const struct direct *name)
+ {
+   char c;
+-  char *s = name->d_name;
++  const char *s = name->d_name;
+   while (c = *s++) if (!isdigit (c)) return NIL;
+   return T;
+ }
+@@ -1125,13 +1125,14 @@ int mx_select (struct direct *name)
+  * Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2
+  */
+ 
+-int mx_numsort (const void *d1,const void *d2)
++int mx_numsort (const struct dirent** d1, const struct dirent** d2)
+ {
+-  return atoi ((*(struct direct **) d1)->d_name) -
+-    atoi ((*(struct direct **) d2)->d_name);
++  return atoi ((*d1)->d_name) -
++    atoi ((*d2)->d_name);
+ }
+ 
+ 
++
+ /* MX mail build file name
+  * Accepts: destination string
+  *          source
+diff --git a/src/osdep/unix/news.c b/src/osdep/unix/news.c
+index 4cf5bb7..536ca50 100644
+--- a/src/osdep/unix/news.c
++++ b/src/osdep/unix/news.c
+@@ -76,8 +76,8 @@ long news_create (MAILSTREAM *stream,char *mailbox);
+ long news_delete (MAILSTREAM *stream,char *mailbox);
+ long news_rename (MAILSTREAM *stream,char *old,char *newname);
+ MAILSTREAM *news_open (MAILSTREAM *stream);
+-int news_select (struct direct *name);
+-int news_numsort (const void *d1,const void *d2);
++int news_select (const struct direct *name);
++int news_numsort (const struct dirent **d1,const struct dirent **d2);
+ void news_close (MAILSTREAM *stream,long options);
+ void news_fast (MAILSTREAM *stream,char *sequence,long flags);
+ void news_flags (MAILSTREAM *stream,char *sequence,long flags);
+@@ -402,10 +402,10 @@ MAILSTREAM *news_open (MAILSTREAM *stream)
+  * Returns: T to use file name, NIL to skip it
+  */
+ 
+-int news_select (struct direct *name)
++int news_select (const struct direct *name)
+ {
+   char c;
+-  char *s = name->d_name;
++  const char *s = name->d_name;
+   while (c = *s++) if (!isdigit (c)) return NIL;
+   return T;
+ }
+@@ -417,10 +417,10 @@ int news_select (struct direct *name)
+  * Returns: negative if d1 < d2, 0 if d1 == d2, postive if d1 > d2
+  */
+ 
+-int news_numsort (const void *d1,const void *d2)
++int news_numsort (const struct dirent** d1, const struct dirent** d2)
+ {
+-  return atoi ((*(struct direct **) d1)->d_name) -
+-    atoi ((*(struct direct **) d2)->d_name);
++  return atoi ((*d1)->d_name) -
++    atoi ((*d2)->d_name);
+ }
+ 
+ 
+diff --git a/src/osdep/unix/os_lnx.c b/src/osdep/unix/os_lnx.c
+index 671bbd6..df87d7d 100644
+--- a/src/osdep/unix/os_lnx.c
++++ b/src/osdep/unix/os_lnx.c
+@@ -53,3 +53,4 @@ extern int errno;		/* just in case */
+ #include "gr_waitp.c"
+ #include "tz_sv4.c"
+ #include "flocklnx.c"
++#include "utime.c"
+diff --git a/src/osdep/unix/os_lnx.h b/src/osdep/unix/os_lnx.h
+index b5f39ff..31e7bda 100644
+--- a/src/osdep/unix/os_lnx.h
++++ b/src/osdep/unix/os_lnx.h
+@@ -12,7 +12,7 @@
+  */
+ 
+ /*
+- * Program:	Operating-system dependent routines -- Linux version
++ * Program:	Operating-system dependent routines -- Linux version [lnx]
+  *
+  * Author:	Mark Crispin
+  *		Networks and Distributed Computing
+@@ -31,12 +31,7 @@
+  *** Alpha.
+  */
+ 
+-#ifndef _XOPEN_SOURCE
+-#define _XOPEN_SOURCE 1
+-#endif /* _XOPEN_SOURCE */
+-#ifndef _BSD_SOURCE
+-#define _BSD_SOURCE 1
+-#endif /* _BSD_SOURCE */
++#define _DEFAULT_SOURCE 1
+ 
+ /* end Debian Linux on Alpha strangeness */
+ 
+@@ -49,7 +44,9 @@
+ #include <fcntl.h>
+ #include <syslog.h>
+ #include <sys/file.h>
+-
++#include <utime.h>
++#include <sys/time.h>
++#include <ctype.h>
+ 
+ /* Linux gets this wrong */
+ 
+@@ -57,8 +54,14 @@
+ 
+ #define direct dirent
+ 
++/* in flocklnx.c */
++int safe_flock (int fd,int op);
++
+ #define flock safe_flock
+ 
++#define utime portable_utime
++int portable_utime (char *file,time_t timep[2]);
++
+ 
+ #include "env_unix.h"
+ #include "fs.h"
+diff --git a/src/osdep/unix/os_slx.c b/src/osdep/unix/os_slx.c
+index f6bf27d..44b10be 100644
+--- a/src/osdep/unix/os_slx.c
++++ b/src/osdep/unix/os_slx.c
+@@ -55,3 +55,4 @@ extern int errno;		/* just in case */
+ #include "gr_waitp.c"
+ #include "tz_sv4.c"
+ #include "flocklnx.c"
++#include "utime.c"
+diff --git a/src/osdep/unix/os_slx.h b/src/osdep/unix/os_slx.h
+index b5f39ff..80c306e 100644
+--- a/src/osdep/unix/os_slx.h
++++ b/src/osdep/unix/os_slx.h
+@@ -12,7 +12,7 @@
+  */
+ 
+ /*
+- * Program:	Operating-system dependent routines -- Linux version
++ * Program:	Operating-system dependent routines -- Linux version [slx]
+  *
+  * Author:	Mark Crispin
+  *		Networks and Distributed Computing
+@@ -31,12 +31,7 @@
+  *** Alpha.
+  */
+ 
+-#ifndef _XOPEN_SOURCE
+-#define _XOPEN_SOURCE 1
+-#endif /* _XOPEN_SOURCE */
+-#ifndef _BSD_SOURCE
+-#define _BSD_SOURCE 1
+-#endif /* _BSD_SOURCE */
++#define _DEFAULT_SOURCE 1
+ 
+ /* end Debian Linux on Alpha strangeness */
+ 
+@@ -49,7 +44,9 @@
+ #include <fcntl.h>
+ #include <syslog.h>
+ #include <sys/file.h>
+-
++#include <utime.h>
++#include <sys/time.h>
++#include <ctype.h>
+ 
+ /* Linux gets this wrong */
+ 
+@@ -57,8 +54,14 @@
+ 
+ #define direct dirent
+ 
++/* in flocklnx.c */
++int safe_flock (int fd,int op);
++
+ #define flock safe_flock
+ 
++#define utime portable_utime
++int portable_utime (char *file,time_t timep[2]);
++
+ 
+ #include "env_unix.h"
+ #include "fs.h"
diff --git a/imap-headers_fix.patch b/imap-headers_fix.patch
deleted file mode 100644
index ffb304b..0000000
--- a/imap-headers_fix.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-diff -urNp -x '*.orig' imap-2007f.org/src/osdep/unix/os_lnx.h imap-2007f/src/osdep/unix/os_lnx.h
---- imap-2007f.org/src/osdep/unix/os_lnx.h	2021-09-29 21:57:47.276008132 +0200
-+++ imap-2007f/src/osdep/unix/os_lnx.h	2021-09-29 21:57:47.349341303 +0200
-@@ -26,19 +26,6 @@
-  * Last Edited:	30 August 2006
-  */
- 

--/*
-- *** These lines are claimed to be necessary to build on Debian Linux on an
-- *** Alpha.
-- */
--
--#ifndef _XOPEN_SOURCE
--#define _XOPEN_SOURCE 1
--#endif /* _XOPEN_SOURCE */
--#ifndef _BSD_SOURCE
--#define _BSD_SOURCE 1
--#endif /* _BSD_SOURCE */
--
--/* end Debian Linux on Alpha strangeness */
- 
- #include <stdlib.h>
- #include <string.h>
-diff -urNp -x '*.orig' imap-2007f.org/src/osdep/unix/os_slx.h imap-2007f/src/osdep/unix/os_slx.h
---- imap-2007f.org/src/osdep/unix/os_slx.h	2021-09-29 21:57:47.276008132 +0200
-+++ imap-2007f/src/osdep/unix/os_slx.h	2021-09-29 21:57:47.349341303 +0200
-@@ -26,19 +26,6 @@
-  * Last Edited:	30 August 2006
-  */
- 

--/*
-- *** These lines are claimed to be necessary to build on Debian Linux on an
-- *** Alpha.
-- */
--
--#ifndef _XOPEN_SOURCE
--#define _XOPEN_SOURCE 1
--#endif /* _XOPEN_SOURCE */
--#ifndef _BSD_SOURCE
--#define _BSD_SOURCE 1
--#endif /* _BSD_SOURCE */
--
--/* end Debian Linux on Alpha strangeness */
- 
- #include <stdlib.h>
- #include <string.h>
diff --git a/imap.patch b/imap.patch
index e7d0c2d..2a3b89c 100644
--- a/imap.patch
+++ b/imap.patch
@@ -40,27 +40,4 @@
  
  sl4:	# Secure Linux using libc4
  	@echo You are building for libc4 versions of Secure Linux
-diff -ur imap-2004/src/osdep/unix/os_lnx.h imap-patched/src/osdep/unix/os_lnx.h
---- imap-2004/src/osdep/unix/os_lnx.h	Tue Jul 15 22:53:32 2003
-+++ imap-patched/src/osdep/unix/os_lnx.h	Sun May 30 06:31:26 2004
-@@ -37,7 +37,7 @@
- #include <fcntl.h>
- #include <syslog.h>
- #include <sys/file.h>
--
-+#include <ustat.h>
- 
- /* Linux gets this wrong */
- 
-diff -ur imap-2004/src/osdep/unix/os_slx.h imap-patched/src/osdep/unix/os_slx.h
---- imap-2004/src/osdep/unix/os_slx.h	Tue Jul 15 22:53:32 2003
-+++ imap-patched/src/osdep/unix/os_slx.h	Sun May 30 06:31:26 2004
-@@ -37,7 +37,7 @@
- #include <fcntl.h>
- #include <syslog.h>
- #include <sys/file.h>
--
-+#include <ustat.h>
- 
- /* Linux gets this wrong */
- 
+
diff --git a/no-ustat.h.patch b/no-ustat.h.patch
deleted file mode 100644
index 701f71c..0000000
--- a/no-ustat.h.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- imap-2007f/src/osdep/unix/os_lnx.h~	2018-08-06 20:01:34.000000000 +0000
-+++ imap-2007f/src/osdep/unix/os_lnx.h	2018-08-06 20:04:43.542554901 +0000
-@@ -36,7 +36,7 @@
- #include <fcntl.h>
- #include <syslog.h>
- #include <sys/file.h>
--#include <ustat.h>
-+//#include <ustat.h>
- 
- /* Linux gets this wrong */
- 
---- imap-2007f/src/osdep/unix/os_slx.h~	2018-08-06 20:01:34.000000000 +0000
-+++ imap-2007f/src/osdep/unix/os_slx.h	2018-08-06 20:03:23.613729212 +0000
-@@ -36,7 +36,7 @@
- #include <fcntl.h>
- #include <syslog.h>
- #include <sys/file.h>
--#include <ustat.h>
-+//#include <ustat.h>
- 
- /* Linux gets this wrong */
- 
diff --git a/openssl.patch b/openssl.patch
deleted file mode 100644
index 1a06341..0000000
--- a/openssl.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -urN imap-2007f.org/src/osdep/unix/ssl_unix.c imap-2007f/src/osdep/unix/ssl_unix.c
---- imap-2007f.org/src/osdep/unix/ssl_unix.c	2011-07-23 02:20:10.000000000 +0200
-+++ imap-2007f/src/osdep/unix/ssl_unix.c	2018-09-19 09:48:16.264495807 +0200
-@@ -269,10 +269,21 @@
-   if (!(flags & NET_NOVALIDATECERT) &&
-       (err = ssl_validate_cert (cert = SSL_get_peer_certificate (stream->con),
- 				host))) {
-+    X509_NAME *subject_name;
-+    char *cert_name = NULL;
-+    if (cert) {
-+      subject_name = X509_get_subject_name(cert);
-+      cert_name = X509_NAME_oneline(subject_name, NULL, 0);
-+    }
-+    if (scq) {
-+      sprintf (tmp,"*%.255s",err,cert_name ? cert_name : "???");
-+      OPENSSL_free(cert_name);
- 				/* application callback */
--    if (scq) return (*scq) (err,host,cert ? cert->name : "???") ? NIL : "";
-+      return (*scq) (err,host,cert ? tmp : "???") ? NIL : "";
-+    }
- 				/* error message to return via mm_log() */
--    sprintf (tmp,"*%.128s: %.255s",err,cert ? cert->name : "???");
-+    sprintf (tmp,"*%.128s: %.255s",err,cert_name ? cert_name : "???");
-+    OPENSSL_free(cert_name);
-     return ssl_last_error = cpystr (tmp);
-   }
-   return NIL;
-@@ -319,12 +330,20 @@
-   char *s,*t,*ret;
-   void *ext;
-   GENERAL_NAME *name;
-+
-+  X509_NAME *subject_name;
-+  char *cert_name = NULL;
-+  if (cert) {
-+    subject_name = X509_get_subject_name(cert);
-+    cert_name = X509_NAME_oneline(subject_name, NULL, 0);
-+  }
-+
- 				/* make sure have a certificate */
-   if (!cert) ret = "No certificate from server";
- 				/* and that it has a name */
--  else if (!cert->name) ret = "No name in certificate";
-+  else if (!cert_name) ret = "No name in certificate";
- 				/* locate CN */
--  else if (s = strstr (cert->name,"/CN=")) {
-+  else if (s = strstr (cert_name,"/CN=")) {
-     if (t = strchr (s += 4,'/')) *t = '\0';
- 				/* host name matches pattern? */
-     ret = ssl_compare_hostnames (host,s) ? NIL :
-@@ -340,6 +359,7 @@
- 	    ssl_compare_hostnames (host,s)) ret = NIL;
-   }
-   else ret = "Unable to locate common name in certificate";
-+  OPENSSL_free(cert_name);
-   return ret;
- }
- 

diff --git a/stop-ignoring-build-errors.patch b/stop-ignoring-build-errors.patch
new file mode 100644
index 0000000..ab97543
--- /dev/null
+++ b/stop-ignoring-build-errors.patch
@@ -0,0 +1,25 @@
+From: Chris Hofstaedtler <zeha at debian.org>
+Date: Tue, 31 Dec 2024 09:13:10 +0100
+X-Dgit-Generated: 8:2007f~dfsg-7.1 4c56abb2b57c9316db774f68fcc38174c9f17139
+Subject: Stop ignoring build errors
+
+
+---
+
+diff --git a/Makefile b/Makefile
+index 78f5ba8..9543c10 100644
+--- a/Makefile
++++ b/Makefile
+@@ -717,9 +717,9 @@ bundled:
+ 	$(CD) imapd;$(MAKE)
+ 	$(CD) mailutil;$(MAKE)
+ 	@$(SH) -c '(test -f /usr/include/sysexits.h ) || make sysexitwarn'
+-	$(CD) mlock;$(MAKE) || true
+-	$(CD) dmail;$(MAKE) || true
+-	$(CD) tmail;$(MAKE) || true
++	$(CD) mlock;$(MAKE)
++	$(CD) dmail;$(MAKE)
++	$(CD) tmail;$(MAKE)
+ 
+ 
+ sysexitwarn:
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/imap.git/commitdiff/857dcd4eceb136e2d0becd15480fc002367eb6b8



More information about the pld-cvs-commit mailing list