openbsd-ports/shells/zsh/patches/patch-Src_Modules_zpty_c
kmos bd9277892c Change our patches to use "#elif defined" rather than "#elifdef" since
neither base-gcc nor ports-gcc understands "#elifdef"

Fixes build on sparc64

ok tb@
2022-05-30 20:54:47 +00:00

64 lines
1.6 KiB
Plaintext

Index: Src/Modules/zpty.c
--- Src/Modules/zpty.c.orig
+++ Src/Modules/zpty.c
@@ -37,6 +37,15 @@
#endif
#endif
+#ifdef HAVE_OPENPTY
+#ifdef OPENPTY_REQUIRES_PTY
+#include <pty.h>
+#elif defined(OPENPTY_REQUIRES_UTIL)
+#include <termios.h>
+#include <util.h>
+#endif
+#endif
+
/* The number of bytes we normally read when given no pattern and the
* upper bound on the number of bytes we read (even if we are give a
* pattern). */
@@ -161,9 +170,27 @@ getptycmd(char *name)
return NULL;
}
-/* posix_openpt() seems to have some problem on OpenBSD */
-#if defined(USE_DEV_PTMX) && !defined(__OpenBSD__)
+#ifdef HAVE_OPENPTY
+static int
+get_pty(int master, int *retfd)
+{
+ static int mfd, sfd;
+
+ if (master) {
+ if (openpty(&mfd, &sfd, NULL, NULL, NULL) == -1) {
+ return 1;
+ }
+ *retfd = mfd;
+ return 0;
+ }
+
+ *retfd = sfd;
+ return 0;
+}
+
+#elif defined USE_DEV_PTMX
+
#ifdef HAVE_SYS_STROPTS_H
#include <sys/stropts.h>
#endif
@@ -261,12 +288,7 @@ get_pty(int master, int *retfd)
#elif defined(__FreeBSD__) || defined(__DragonFly__)
static char char1[] = "pqrsPQRS";
static char char2[] = "0123456789abcdefghijklmnopqrstuv";
-#elif defined(__OpenBSD__)
- static char char1[] = "pqrstuvwxyzPQRST";
- static char char2[] = "0123456789"
- "abcdefghijklmnopqrstuvwxyz"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-#else /* __FreeBSD__ || __DragonFly__ || __OpenBSD*/
+#else /* __FreeBSD__ || __DragonFly__ */
static char char1[] = "pqrstuvwxyzPQRST";
static char char2[] = "0123456789abcdef";
#endif