aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2023-07-18 14:10:12 +0000
committerCy Schubert <cy@FreeBSD.org>2023-07-18 14:56:40 +0000
commit5ba8ffefe59e7d478164fcacaae5e5aa720c402c (patch)
tree21ddbda44c8683e1fd551ca752a7351426aa62d4
parent1c0793dfc4acf952d7195a114b342d7118d73e5c (diff)
downloadports-5ba8ffefe59e7d478164fcacaae5e5aa720c402c.tar.gz
ports-5ba8ffefe59e7d478164fcacaae5e5aa720c402c.zip
mail/xmail: Fix pty handling
Modernize to work with openpty(). Else we get this: Error: xmail cannot open master/slave pipe connection MFH: 2023Q3
-rw-r--r--mail/xmail/Makefile2
-rw-r--r--mail/xmail/files/patch-Imakefile6
-rw-r--r--mail/xmail/files/patch-callMail.c50
3 files changed, 48 insertions, 10 deletions
diff --git a/mail/xmail/Makefile b/mail/xmail/Makefile
index 2b2d48a81e30..092e307b2878 100644
--- a/mail/xmail/Makefile
+++ b/mail/xmail/Makefile
@@ -14,7 +14,7 @@ LICENSE_FILE= ${WRKSRC}/COPYRIGHT
USES= imake xorg
USE_XORG= ice sm x11 xaw xbitmaps xext xmu xpm xt
-CFLAGS+= -Wno-incompatible-function-pointer-types
+CFLAGS+= -Wno-incompatible-function-pointer-types -lutil
post-patch:
# Fix the build with -fno-common (for Clang 11 and GCC 10)
diff --git a/mail/xmail/files/patch-Imakefile b/mail/xmail/files/patch-Imakefile
index fd65a954a33a..fb417e91b9bd 100644
--- a/mail/xmail/files/patch-Imakefile
+++ b/mail/xmail/files/patch-Imakefile
@@ -1,5 +1,5 @@
---- Imakefile.orig Mon Jan 30 22:41:47 1995
-+++ Imakefile Wed Oct 15 09:52:37 2003
+--- Imakefile.orig 1995-01-30 13:41:47.000000000 -0800
++++ Imakefile 2023-07-18 07:06:05.053673000 -0700
@@ -1,63 +1,62 @@
-/* */#
-/* */# @(#)Imakefile - for xmail version 1 patchlevel 5
@@ -103,7 +103,7 @@
DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
-LOCAL_LIBRARIES = $(LIBXPM) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(COMPFACE) $(LPT)
-+LOCAL_LIBRARIES = $(LIBXPM) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(COMPFACE) $(LPT) -lcompat
++LOCAL_LIBRARIES = $(LIBXPM) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(COMPFACE) $(LPT) -lcompat -lutil
SRCS = Mailwatch.c HelpText.c actions.c callMail.c callbacks.c \
confirm.c directory.c environs.c handler.c mail.c parser.c \
diff --git a/mail/xmail/files/patch-callMail.c b/mail/xmail/files/patch-callMail.c
index 53fcd326af4e..685cdde53584 100644
--- a/mail/xmail/files/patch-callMail.c
+++ b/mail/xmail/files/patch-callMail.c
@@ -1,6 +1,17 @@
---- callMail.c.orig Thu Jan 26 21:52:01 1995
-+++ callMail.c Wed Feb 4 23:30:07 1998
-@@ -38,11 +38,10 @@
+--- callMail.c.orig 1995-01-26 21:52:01.000000000 -0800
++++ callMail.c 2023-07-18 07:01:24.570712000 -0700
+@@ -34,15 +34,21 @@
+ #include <sys/stat.h>
+ #include <signal.h>
+
++#ifdef __FreeBSD__
++#include <sys/types.h>
++#include <sys/ioctl.h>
++#include <termios.h>
++#include <libutil.h>
++#endif
++
+ #if defined(AIXV3) || defined(_IBMR2)
#include <sys/select.h>
#endif
@@ -14,7 +25,7 @@
#include <fcntl.h>
#if defined(att)
#include <sys/stropts.h>
-@@ -81,7 +80,7 @@
+@@ -81,7 +87,7 @@
#ifdef hpux
#define PTYCHAR2 "fedcba9876543210"
#else /* !hpux */
@@ -23,7 +34,23 @@
#endif /* !hpux */
#endif /* !PTYCHAR2 */
-@@ -207,8 +206,8 @@
+@@ -91,6 +97,7 @@
+ char pseudo_tty[20];
+
+
++#ifndef __FreeBSD__
+ /*
+ ** @(#) openMaster - searches for and opens a pty master. If it finds one,
+ ** it returns the value of the file descriptor. If not,
+@@ -197,6 +204,7 @@
+ #endif
+ return(-1); /* look for more master/slave pairs */
+ } /* openSlave */
++#endif /* __FreeBSD__ */
+
+
+ /*
+@@ -207,30 +215,34 @@
callMail(argv)
char *argv[];
{
@@ -34,7 +61,18 @@
#else
struct sgttyb Sgtty;
#endif
-@@ -223,14 +222,14 @@
+ int slave; /* file descriptor to slave pty */
+
+
++#ifdef __FreeBSD__
++ openpty(&mail_fd, &slave, NULL, NULL, NULL);
++#else
+ for (;;) { /* find a pair, or master fails */
+ mail_fd = openMaster();
+ if ((slave = openSlave(mail_fd)) != -1)
+ break;
+ }
++#endif
/*
** Set minimal requirements for slave connection (no echo, no NL->CR, keep TABS)
*/