From 19647809e430bc00ec7f66769295a2ef56739f79 Mon Sep 17 00:00:00 2001 From: Pascal Stumpf 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 2d41043c6..554c6a246 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 +#if defined(CSRG_BASED) +#define MAXSHORT SHRT_MAX +#else +#include +#endif #if defined(USL) || defined(__uxp__) #include diff --git a/cde/lib/DtTerm/TermPrim/TermHeader.h b/cde/lib/DtTerm/TermPrim/TermHeader.h index fcee6e3c8..d955c4dcd 100644 --- a/cde/lib/DtTerm/TermPrim/TermHeader.h +++ b/cde/lib/DtTerm/TermPrim/TermHeader.h @@ -44,7 +44,7 @@ #include #include -#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 ee7fe6011..b8bfd3a03 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 47061d717..e5a7b7767 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 98c606b85..f3a6ab7ea 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 +#if defined(CSRG_BASED) +#define MAXINT INT_MAX +#else +#include +#endif #ifdef BBA #pragma BBA_IGNORE diff --git a/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c b/cde/lib/DtTerm/TermPrim/TermPrimSetPty.c index 18e84a682..49fc8c9de 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 5619780d8..4328bd25a 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 b1d706c74..207381add 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 -#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_ARCHITECTURE) || defined(LINUX_ARCHITECTURE) +#if defined(ALPHA_ARCHITECTURE) || defined(CSRG_BASED) || defined(LINUX_ARCHITECTURE) /* For TIOCSTTY definitions */ #include #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 608171db4..1d9a638da 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 */