summaryrefslogtreecommitdiff
path: root/editors/emacs21/patches/patch-xx
blob: 16928643d41b871a49240bfab9042bad36b38b05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
$NetBSD: patch-xx,v 1.4 2015/02/19 14:18:52 wiz Exp $

--- src/s/netbsd.h.orig	2002-05-31 12:29:02.000000000 -0400
+++ src/s/netbsd.h	2015-02-16 18:13:17.000000000 -0500
@@ -60,9 +60,17 @@
 #endif /* not NO_SHARED_LIBS and not ELF */
 
 #if !defined (NO_SHARED_LIBS) && defined (__ELF__)
+#if defined(HAVE_NETBSD_CRTI)
+#define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtbegin.o
+#else
 #define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crtbegin.o
+#endif
 #define UNEXEC unexelf.o
+#if defined(HAVE_NETBSD_CRTN)
+#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
+#else
 #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o
+#endif
 #undef LIB_GCC
 #define LIB_GCC
 #endif
@@ -123,3 +131,42 @@
 
 #define GC_MARK_STACK	GC_MAKE_GCPROS_NOOPS
 
+/* Use sigprocmask(2) and friends instead of sigblock(2); the man page
+   of sigblock says it is obsolete.  */
+
+#define POSIX_SIGNALS		1
+
+#ifdef HAVE_PTYFS	/* Support ptyfs */
+
+/* How to iterate over PTYs. */
+#define PTY_ITERATION for (i = 0; i < 1; i++)
+
+/* How to get the device name of the control end of a PTY, if non-standard. */
+#define PTY_NAME_SPRINTF /**/
+
+/* How to open a PTY, if non-standard. */
+#define PTY_OPEN  { \
+	fd = posix_openpt(O_RDWR | O_CLOEXEC | O_NOCTTY); \
+	if (fd < 0 && errno == EINVAL) \
+		fd = posix_openpt(O_RDWR | O_NOCTTY); \
+}
+
+/* How to get device name of the tty end of a PTY, if non-standard. */
+#define PTY_TTY_NAME_SPRINTF  { \
+	char *ptyname = NULL; \
+	sigset_t blocked; \
+	\
+	sigemptyset (&blocked); \
+	sigaddset(&blocked, SIGCHLD); \
+	pthread_sigmask(SIG_BLOCK, &blocked, 0); \
+	if (grantpt(fd) != -1 && unlockpt(fd) != -1) \
+		ptyname = ptsname(fd); \
+		pthread_sigmask(SIG_UNBLOCK, &blocked, 0); \
+		if (!ptyname) { \
+			emacs_close(fd); \
+			 return -1; \
+		} \
+	snprintf(pty_name, sizeof(pty_name), "%s", ptyname); \
+}
+
+#endif	/* HAVE_PTYFS */