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

Reply via email to