This does not work fully yet, but at least makes it compile. I will
revisit later on when the 64bit issues are fixed. Also, people doing
ports to other BSDs will still need to revisit this for their OS.
>From c04bd0616dc453dc4e69f3c2e8bb3564d58f6790 Mon Sep 17 00:00:00 2001
From: Pascal Stumpf <pascal.stu...@cubes.de>
Date: Thu, 9 Aug 2012 23:53:47 +0200
Subject: [PATCH] OpenBSD fixes for lib/DtTerm: values.h, #ifdef's and some
constants that are not defined on BSD. Also, leave out
utmp stuff that does not work on BSD. Note that this
terminal allocation does not work properly yet, but this
will be fixed later.
---
cde/lib/DtTerm/Term/TermParse.c | 6 +++++-
cde/lib/DtTerm/TermPrim/TermHeader.h | 2 +-
cde/lib/DtTerm/TermPrim/TermPrimGetPty-bsd.c | 6 +++++-
cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h | 6 ++++++
cde/lib/DtTerm/TermPrim/TermPrimParser.c | 6 +++++-
cde/lib/DtTerm/TermPrim/TermPrimSetPty.c | 11 +++++++++++
cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c | 6 ++++++
cde/lib/DtTerm/TermPrim/TermPrimSubproc.c | 6 +++---
cde/lib/DtTerm/TermPrim/TermPrimUtil.c | 2 +-
9 files changed, 43 insertions(+), 8 deletions(-)
diff --git a/cde/lib/DtTerm/Term/TermParse.c b/cde/lib/DtTerm/Term/TermParse.c
index 2d41043..554c6a2 100644
--- a/cde/lib/DtTerm/Term/TermParse.c
+++ b/cde/lib/DtTerm/Term/TermParse.c
@@ -57,7 +57,11 @@ static char rcs_id[] = "$TOG: TermParse.c /main/3 1999/10/15
12:25:13 mgreess $"
*/
#undef MAXINT
#endif
-#include <values.h>
+#if defined(CSRG_BASED)
+#define MAXSHORT SHRT_MAX
+#else
+#include <values.h>
+#endif
#if defined(USL) || defined(__uxp__)
#include <ctype.h>
diff --git a/cde/lib/DtTerm/TermPrim/TermHeader.h
b/cde/lib/DtTerm/TermPrim/TermHeader.h
index fcee6e3..d955c4d 100644
--- a/cde/lib/DtTerm/TermPrim/TermHeader.h
+++ b/cde/lib/DtTerm/TermPrim/TermHeader.h
@@ -44,7 +44,7 @@
#include <Xm/Xm.h>
#include <X11/Xos.h>
-#if defined(linux) || defined(UXPArchitecture) || (defined(USL) &&
(OSMAJORVERSION > 1))
+#if defined(linux) || defined(UXPArchitecture) || (defined(USL) &&
(OSMAJORVERSION > 1)) || defined(CSRG_BASED)
#define _NFILE FOPEN_MAX
#endif
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimGetPty-bsd.c
b/cde/lib/DtTerm/TermPrim/TermPrimGetPty-bsd.c
index ee7fe60..b8bfd3a 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimGetPty-bsd.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimGetPty-bsd.c
@@ -166,7 +166,7 @@ static struct _pty_dirs {
{PTY_null, PTY_null, PTY_null, PTY_null, PTY_null, False},
};
-#ifdef ALPHA_ARCHITECTURE
+#if defined(ALPHA_ARCHITECTURE) || defined(OpenBSDArchitecture)
/* Use openpty() to open Master/Slave pseudo-terminal pair */
/* Current version of openpty() uses non-STREAM device. BSD name space */
#define TTYNAMELEN 25
@@ -254,7 +254,11 @@ GetPty(char **ptySlave, char **ptyMaster)
* name for the tty that everyone else will
* use...
*/
+#if defined(XTHREADS)
if (c1 = _XTtyname(ttyFd, tty_buf)) {
+#else
+ if (c1 = _XTtyname(ttyFd)) {
+#endif
ttyDev = realloc(ttyDev, strlen(c1) + 1);
(void) strcpy(ttyDev, c1);
}
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h
b/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h
index 47061d7..e5a7b77 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h
+++ b/cde/lib/DtTerm/TermPrim/TermPrimOSDepI.h
@@ -96,6 +96,12 @@
# define USE_TCSENDBREAK /* use tiocbreak() */
#endif /* LINUX_ARCHITECTURE */
+#ifdef OPENBSD_ARCHITECTURE
+# define HAS_SETEUID /* seteuid available */
+# define HAS_SETREUID /* setreuid available */
+# define USE_TCSENDBREAK /* use tiocbreak() */
+#endif /* OPENBSD_ARCHITECTURE */
+
#ifdef SUN_ARCHITECTURE
# define XOR_CAPS_LOCK /* xor caps lock and shift */
# define USE_SRIOCSREDIR /* use SRIOCSREDIR ioctl for -C */
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimParser.c
b/cde/lib/DtTerm/TermPrim/TermPrimParser.c
index 98c606b..f3a6ab7 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimParser.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimParser.c
@@ -47,7 +47,11 @@ static char rcs_id[] = "$TOG: TermPrimParser.c /main/2
1999/10/15 12:23:41 mgree
*/
#undef MAXINT
#endif
-#include <values.h>
+#if defined(CSRG_BASED)
+#define MAXINT INT_MAX
+#else
+#include <values.h>
+#endif
#ifdef BBA
#pragma BBA_IGNORE
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c
b/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c
index 18e84a6..49fc8c9 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c
@@ -109,6 +109,17 @@ static char rcs_id[] = "$TOG: TermPrimSetPty.c /main/2
1998/04/03 17:11:24 mgree
#define XTTYMODE_weras 14
#define XTTYMODE_lnext 15
#define NXTTYMODES 16
+
+#if defined(CSRG_BASED)
+#define TAB3 0x00000000
+#define NLDLY 0x00000000
+#define CRDLY 0x00000000
+#define TABDLY 0x00000000
+#define BSDLY 0x00000000
+#define VTDLY 0x00000000
+#define FFDLY 0x00000000
+#define CBAUD 0x00000000
+#endif
typedef struct _ttyMode
{
char *name;
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c
b/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c
index 5619780..4328bd2 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimSetUtmp.c
@@ -332,6 +332,7 @@ _DtTermPrimUtmpGetUtLine(int pty, char *ptyName)
static char *
UtmpEntryCreate(Widget w, pid_t pid, char *utmpLine)
{
+#if !defined(CSRG_BASED) /* XXX */
DtTermPrimitiveWidget tw = (DtTermPrimitiveWidget) w;
struct termData *tpd = tw->term.tpd;
struct utmp ut;
@@ -489,6 +490,9 @@ UtmpEntryCreate(Widget w, pid_t pid, char *utmpLine)
/* failure... */
(void) endutent();
return((char *) 0);
+#else /* __OpenBSD__ */
+ return(utmpLine);
+#endif
}
/* this is a public wrapper around the previous function that runs the
@@ -511,6 +515,7 @@ _DtTermPrimUtmpEntryCreate(Widget w, pid_t pid, char
*utmpLine)
static void
UtmpEntryDestroy(Widget w, char *utmpLine)
{
+#if !defined(CSRG_BASED)
struct utmp ut;
struct utmp *utPtr;
time_t now;
@@ -537,6 +542,7 @@ UtmpEntryDestroy(Widget w, char *utmpLine)
(void) endutent();
(void) DeleteUtmpInfo(utmpLine);
+#endif /* !__OpenBSD__ */
}
/* this is a public wrapper around the previous function that runs the
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimSubproc.c
b/cde/lib/DtTerm/TermPrim/TermPrimSubproc.c
index b1d706c..207381a 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimSubproc.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimSubproc.c
@@ -38,7 +38,7 @@ static char rcs_id[] = "$TOG: TermPrimSubproc.c /main/11
1998/04/20 12:45:57 mgr
#include "TermHeader.h"
#include <fcntl.h>
-#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) ||
defined(LINUX_ARCHITECTURE)
+#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_BASED) ||
defined(LINUX_ARCHITECTURE)
/* For TIOCSTTY definitions */
#include <sys/ioctl.h>
#endif /* ALPHA_ARCHITECTURE */
@@ -461,7 +461,7 @@ _DtTermPrimSubprocExec(Widget w,
/* child...
*/
_DtTermProcessUnlock();
-#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) ||
defined(LINUX_ARCHITECTURE)
+#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_BASED) ||
defined(LINUX_ARCHITECTURE)
/* establish a new session for child */
setsid();
#else
@@ -482,7 +482,7 @@ _DtTermPrimSubprocExec(Widget w,
(void) _exit(1);
}
-#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) ||
defined(LINUX_ARCHITECTURE)
+#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_BASED) ||
defined(LINUX_ARCHITECTURE)
/* BSD needs to do this to acquire pty as controlling terminal */
if (ioctl(pty, TIOCSCTTY, (char *)NULL) < 0) {
(void) close(pty);
diff --git a/cde/lib/DtTerm/TermPrim/TermPrimUtil.c
b/cde/lib/DtTerm/TermPrim/TermPrimUtil.c
index 608171d..1d9a638 100644
--- a/cde/lib/DtTerm/TermPrim/TermPrimUtil.c
+++ b/cde/lib/DtTerm/TermPrim/TermPrimUtil.c
@@ -462,7 +462,7 @@ _DtTermPrimStartLog(Widget w)
** reset signals
*/
(void) signal(SIGHUP, SIG_DFL);
- (void) signal(SIGCLD, SIG_DFL);
+ (void) signal(SIGCHLD, SIG_DFL);
#ifdef BBA
_bA_dump();
#endif /* BBA */
--
1.7.6
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel