Commit d12f9524 authored by Mike Gabriel's avatar Mike Gabriel

drop platform support: unifdef __UNIXOS2__.

Fixes ArcticaProject/nx-libs#271.
parent 86a6a340
......@@ -1117,13 +1117,6 @@ XCOMM Keep cpp from replacing path elements containing i486/i586/i686
#endif
#endif
#ifdef emxos2
#define MacroIncludeFile <os2.cf>
#define MacroFile os2.cf
#define OS2Architecture
#define i386Architecture
#endif /* emxos2 */
#if defined(__QNX__) && !defined(__QNXNTO__)
#define MacroIncludeFile <QNX4.cf>
#define MacroFile QNX4.cf
......
......@@ -466,7 +466,7 @@ XCOMM the platform-specific parameters - edit site.def to change
#define HasBasename YES
#endif
#ifndef HasGetopt
# if !defined(Win32Architecture) && !defined(OS2Architecture)
# if !defined(Win32Architecture)
# define HasGetopt YES
# else
# define HasGetopt NO
......
......@@ -513,7 +513,7 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
# if SystemV || SystemV4 || \
(defined(LinuxArchitecture) && !defined(Mc68020Architecture)) || \
defined(i386BsdArchitecture) || defined(LynxOSArchitecture) || \
defined(OS2Architecture) || defined(GNUMachArchitecture) || \
defined(GNUMachArchitecture) || \
(defined(KFreeBSDArchitecture) && defined(i386Architecture))
# define BuildScanpci YES
# else
......
......@@ -340,7 +340,7 @@ typedef long int int64_t;
typedef long long int int64_t;
#endif /* __arch64__ */
#endif /* __STDC__ */
#elif defined(__UNIXOS2__) || defined(__SOL64__)
#elif defined(__SOL64__)
typedef long int int32_t;
typedef long long int int64_t;
#elif defined( __VMS )
......
......@@ -36,11 +36,6 @@
#include "m_debug.h"
#include "m_debug_util.h"
#ifdef __UNIXOS2__
/* The linker doesn't like empty files */
static char dummy;
#endif
#ifdef DEBUG /* This code only used for debugging */
static clip_func *clip_tab[2] = {
......
......@@ -38,11 +38,6 @@
#include "m_debug_util.h"
#ifdef __UNIXOS2__
/* The linker doesn't like empty files */
static char dummy;
#endif
#ifdef DEBUG /* This code only used for debugging */
......
......@@ -37,11 +37,6 @@
#include "m_debug.h"
#include "m_debug_util.h"
#ifdef __UNIXOS2__
/* The linker doesn't like empty files */
static char dummy;
#endif
#ifdef DEBUG /* This code only used for debugging */
......
......@@ -246,12 +246,6 @@ typedef unsigned long fd_mask;
#endif
#endif /* XPG4 else */
#ifdef __UNIXOS2__
typedef unsigned long fd_mask;
#include <limits.h>
#define MAX_PATH _POSIX_PATH_MAX
#endif
#ifdef __GNU__
#define PATH_MAX 4096
#define MAXPATHLEN 4096
......@@ -269,7 +263,7 @@ typedef unsigned long fd_mask;
#define NGROUPS 16
#endif
#if defined(ISC) || defined(__UNIXOS2__) || \
#if defined(ISC) || \
(defined(__linux__) && !defined(__GLIBC__)) || \
(defined(__QNX__) && !defined(UNIXCONN))
/*
......
......@@ -127,11 +127,6 @@ in this Software without prior written authorization from The Open Group.
#define X_NOT_STDC_ENV
#endif
#ifdef __UNIXOS2__
#define USGISH
#define NULL_NOT_ZERO
#endif
#ifdef __DARWIN__
#define NULL_NOT_ZERO
#endif
......
......@@ -31,10 +31,6 @@ in this Software without prior written authorization from The Open Group.
#ifdef USE_DYNAMIC_XCURSOR
#ifdef __UNIXOS2__
#define RTLD_LAZY 1
#define LIBXCURSOR "Xcursor.dll"
#endif
#include <stdio.h>
#include <string.h>
#if defined(hpux)
......
......@@ -184,10 +184,6 @@ XGetDefault(
#ifdef WIN32
char *progname2;
#endif
#ifdef __UNIXOS2__
char *progname2;
char *dotpos;
#endif
/*
* strip path off of program name (XXX - this is OS specific)
......@@ -198,13 +194,6 @@ XGetDefault(
if (progname2 && (!progname || progname < progname2))
progname = progname2;
#endif
#ifdef __UNIXOS2__ /* Very similar to WIN32 */
progname2 = strrchr (prog, '\\');
if (progname2 && (!progname || progname < progname2))
progname = progname2;
dotpos = strrchr (prog, '.');
if (dotpos && (dotpos>progname2)) *dotpos='\0';
#endif /* We take out the .exe suffix */
if (progname)
progname++;
......
......@@ -806,7 +806,7 @@ SRCS3 = \
LockDis.c \
x11_trans.c \
xim_trans.c \
$(XKBSRCS) $(LCSRCS) $(MISCSRCS)
$(XKBSRCS) $(LCSRCS)
OBJS3 = \
Lab.o \
......@@ -889,7 +889,7 @@ OBJS3 = \
LockDis.o \
x11_trans.o \
xim_trans.o \
$(XKBOBJS) $(LCOBJS) $(MISCOBJS)
$(XKBOBJS) $(LCOBJS)
SHAREDLCDEPSYMSRCS = XlcDL.c XlcSL.c
......@@ -1036,14 +1036,6 @@ SHAREDLCOBJS = \
$(SHAREDLCDEPOBJS) \
$(SHAREDI18NSTATICOBJS)
#ifdef OS2Architecture
MISCSRCS = os2Stubs.c
#endif
#ifdef OS2Architecture
MISCOBJS = os2Stubs.o
#endif
OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
EXTRAUNSHAREDOBJS = $(STATICLCOBJS)
......
......@@ -129,9 +129,6 @@ XReadBitmapFileData (
int hx = -1; /* x hotspot */
int hy = -1; /* y hotspot */
#ifdef __UNIXOS2__
filename = __XOS2RedirRoot(filename);
#endif
if (!(fstream = fopen(filename, "r")))
return BitmapOpenFailed;
......
......@@ -99,7 +99,7 @@ _XlcMapOSLocaleName(
char *osname,
char *siname)
{
#if defined(hpux) || defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(sgi) || defined(__osf__) || defined(AIXV3) || defined(ultrix) || defined(WIN32) || defined(__UNIXOS2__) || defined(linux)
#if defined(hpux) || defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(sgi) || defined(__osf__) || defined(AIXV3) || defined(ultrix) || defined(WIN32) || defined(linux)
# ifdef hpux
# ifndef _LastCategory
/* HPUX 9 and earlier */
......@@ -116,7 +116,7 @@ _XlcMapOSLocaleName(
# define STARTCHAR '\001'
# define ENDCHAR '\001'
# else
# if defined(WIN32) || defined(__UNIXOS2__)
# if defined(WIN32)
# define SKIPCOUNT 1
# define STARTCHAR '='
# define ENDCHAR ';'
......
......@@ -122,14 +122,6 @@ void XSetWMProperties (
* systems will have to change this.
*/
char *cp = strrchr (argv[0], '/');
#ifdef __UNIXOS2__
char *os2_cp = strrchr (argv[0],'\\');
char *dot_cp = strrchr (argv[0],'.');
if (os2_cp && (os2_cp > cp)) {
if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
cp=os2_cp;
}
#endif
tmp.res_name = (cp ? cp + 1 : argv[0]);
}
tmp.res_class = classHints->res_class;
......
......@@ -105,9 +105,6 @@ XWriteBitmapFile(
else
name++;
#ifdef __UNIXOS2__
filename = (char*)__XOS2RedirRoot(filename);
#endif
if (!(stream = fopen(filename, "w")))
return(BitmapOpenFailed);
......
......@@ -279,11 +279,7 @@ _XkbGetCharset(void)
else {
struct stat sbuf;
FILE *file;
#ifndef __UNIXOS2__
char *cf = CHARSET_FILE;
#else
char *cf = __XOS2RedirRoot(CHARSET_FILE);
#endif
#ifndef S_ISREG
# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
......
......@@ -51,13 +51,9 @@ in this Software without prior written authorization from The Open Group.
#ifndef X_WCHAR
#include <stddef.h>
#else
#ifdef __UNIXOS2__
#include <stdlib.h>
#else
/* replace this with #include or typedef appropriate for your system */
typedef unsigned long wchar_t;
#endif
#endif
extern int
......
......@@ -169,14 +169,9 @@ extern int _X11TransSocketCongestionChange(XtransConnInfo, int *);
#define ECHECK(err) (WSAGetLastError() == err)
#define ESET(val) WSASetLastError(val)
#else
#ifdef __UNIXOS2__
#define ECHECK(err) (errno == err)
#define ESET(val)
#else
#define ECHECK(err) (errno == err)
#define ESET(val) errno = val
#endif
#endif
#if defined(LOCALCONN) || defined(LACHMAN)
#ifdef EMSGSIZE
......@@ -190,14 +185,6 @@ extern int _X11TransSocketCongestionChange(XtransConnInfo, int *);
#endif
#endif
#ifdef __UNIXOS2__
#if !USE_XCB
#define select(n,r,w,x,t) os2ClientSelect(n,r,w,x,t)
#endif /* !USE_XCB */
#include <limits.h>
#define MAX_PATH _POSIX_PATH_MAX
#endif
#if !USE_XCB
#define STARTITERATE(tpvar,type,start,endcond) \
......@@ -4054,10 +4041,6 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
/* try the places set in the environment */
drive = getenv ("_XBASEDRIVE");
#ifdef __UNIXOS2__
if (!drive)
drive = getenv ("X11ROOT");
#endif
if (!drive)
drive = "C:";
len = strlen (drive) + strlen (path);
......@@ -4070,7 +4053,6 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
return 1;
}
#ifndef __UNIXOS2__
/* one last place to look */
drive = getenv ("HOMEDRIVE");
if (drive) {
......@@ -4105,7 +4087,6 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
}
}
}
#endif
return 0;
}
......
......@@ -1249,12 +1249,6 @@ struct _XConnWatchInfo { /* info from XAddConnectionWatch */
struct _XConnWatchInfo *next;
};
#ifdef __UNIXOS2__
extern char* __XOS2RedirRoot(
char*
);
#endif
extern int _XTextHeight(
XFontStruct* /* font_struct */,
_Xconst char* /* string */,
......
......@@ -305,7 +305,7 @@ typedef unsigned char XrmBits;
static XrmBits const xrmtypes[256] = {
EOS,0,0,0,0,0,0,0,
0,SPACE,EOL,0,0,
#if defined(WIN32) || defined(__UNIXOS2__)
#if defined(WIN32)
EOL, /* treat CR the same as LF, just in case */
#else
0,
......@@ -1575,10 +1575,6 @@ ReadInFile(_Xconst char *filename)
register int fd, size;
char * filebuf;
#ifdef __UNIXOS2__
filename = __XOS2RedirRoot(filename);
#endif
/*
* MS-Windows and OS/2 note: Default open mode includes O_TEXT
*/
......@@ -1610,17 +1606,6 @@ ReadInFile(_Xconst char *filename)
}
size = read (fd, filebuf, size);
#ifdef __UNIXOS2__
{ /* kill CRLF */
int i,k;
for (i=k=0; i<size; i++)
if (filebuf[i] != 0x0d) {
filebuf[k++] = filebuf[i];
}
filebuf[k] = 0;
}
#endif
if (size < 0) {
close (fd);
Xfree(filebuf);
......
......@@ -730,9 +730,6 @@ LoadColornameDB(void)
if ((pathname = getenv("XCMSDB")) == NULL) {
pathname = XCMSDB;
}
#ifdef __UNIXOS2__
pathname = __XOS2RedirRoot(pathname);
#endif
length = strlen(pathname);
if ((length == 0) || (length >= (BUFSIZ - 5))){
......
......@@ -344,15 +344,6 @@ read_line(
cur += len;
str[cur] = '\0';
#ifdef __UNIXOS2__ /* Take out carriage returns under OS/2 */
if (cur>1) {
if (str[cur-2] == '\r' && str[cur-1] == '\n') {
str[cur-2] = '\n';
str[cur-1] = '\0';
cur--;
}
}
#endif
if (!quoted && cur > 1 && str[cur - 2] == SYM_BACKSLASH &&
(str[cur - 1] == SYM_NEWLINE || str[cur-1] == SYM_CR)) {
/* the line is ended backslash followed by newline.
......@@ -1286,11 +1277,7 @@ _XlcCreateLocaleDataBase(
if (name == NULL)
return (XPointer)NULL;
#ifndef __UNIXOS2__
name_q = XrmStringToQuark(name);
#else
name_q = XrmStringToQuark((char*)__XOS2RedirRoot(name));
#endif
for (list = _db_list; list; list = list->next) {
if (name_q == list->name_q) {
list->ref_count++;
......
......@@ -36,9 +36,6 @@
/************************************************************************/
#ifdef __UNIXOS2__
# define seteuid setuid
#endif
#define iscomment(ch) ((ch) == '#' || (ch) == '\0')
#if defined(WIN32)
#define isreadable(f) (_XAccessFile(f))
......@@ -46,11 +43,7 @@
#define isreadable(f) ((access((f), R_OK) != -1) ? 1 : 0)
#endif
#ifndef __UNIXOS2__
#define LC_PATHDELIM ':'
#else
#define LC_PATHDELIM ';'
#endif
#define XLC_BUFSIZE 256
......@@ -92,40 +85,7 @@ parse_line(
return argc;
}
#ifdef __UNIXOS2__
/* fg021216: entries in locale files are separated by colons while under
OS/2, path entries are separated by semicolon, so we need two functions */
static int
parse_line1(
char *line,
char **argv,
int argsize)
{
int argc = 0;
char *p = line;
while (argc < argsize) {
while (isspace(*p)) {
++p;
}
if (*p == '\0') {
break;
}
argv[argc++] = p;
while (*p != ';' && *p != '\n' && *p != '\0') {
++p;
}
if (*p == '\0') {
break;
}
*p++ = '\0';
}
return argc;
}
#elif defined(WIN32)
#if defined(WIN32)
/* this is parse_line but skips drive letters at the beginning of the entry */
static int
......@@ -160,7 +120,7 @@ parse_line1(
return argc;
}
#endif /* __UNIXOS2__ */
#endif /* WIN32 */
/* Splits a colon separated list of directories, and returns the constituent
paths (without trailing slash). At most argsize constituents are stored
......@@ -174,7 +134,7 @@ _XlcParsePath(
char *p = path;
int n, i;
#if !defined(__UNIXOS2__) && !defined(WIN32)
#if !defined(WIN32)
n = parse_line(path, argv, argsize);
#else
n = parse_line1(path, argv, argsize);
......@@ -265,11 +225,7 @@ xlocaledir(
#endif /* NO_XLOCALEDIR */
if (len < buf_len)
#ifndef __UNIXOS2__
strncpy(p, XLOCALEDIR, buf_len - len);
#else
strncpy(p,__XOS2RedirRoot(XLOCALEDIR), buf_len - len);
#endif
buf[buf_len-1] = '\0';
}
......@@ -343,11 +299,7 @@ xlocalelibdir(
#endif /* NO_XLOCALEDIR */
if (len < buf_len)
#ifndef __UNIXOS2__
strncpy(p, XLOCALELIBDIR, buf_len - len);
#else
strncpy(p,__XOS2RedirRoot(XLOCALELIBDIR), buf_len - len);
#endif
buf[buf_len-1] = '\0';
}
......@@ -374,17 +326,6 @@ resolve_name(
char *p = buf;
int n;
char *args[2], *from, *to;
#ifdef __UNIXOS2__ /* Take out CR under OS/2 */
int len;
len = strlen(p);
if (len > 1) {
if (*(p+len-2) == '\r' && *(p+len-1) == '\n') {
*(p+len-2) = '\n';
*(p+len-1) = '\0';
}
}
#endif
while (isspace(*p)) {
++p;
}
......
/*
* (c) Copyright 1996 by Sebastien Marineau and Holger Veit
* <marineau@genie.uottawa.ca>
* <Holger.Veit@gmd.de>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
* shall not be used in advertising or otherwise to promote the sale, use or other
* dealings in this Software without prior written authorization from Holger Veit or
* Sebastien Marineau.
*
*/
/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
* functions and the "optimized" select() for the clients */
#define I_NEED_OS2_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <nx-X11/Xpoll.h>
#include <stdio.h>
#include <sys/errno.h>
#define INCL_DOSSEMAPHORES
#define INCL_DOSNPIPES
#define INCL_DOSMISC
#define INCL_DOSMODULEMGR
#undef BOOL
#undef BYTE
#include <os2.h>
#include <sys/select.h>
#include <sys/time.h>
char *__XOS2RedirRoot(char *fname)
{
/* This adds a further redirection by allowing the ProjectRoot
* to be prepended by the content of the envvar X11ROOT.
* This is for the purpose to move the whole X11 stuff to a different
* disk drive.
* The feature was added despite various environment variables
* because not all file opens respect them.
*/
static char redirname[300]; /* enough for long filenames */
char *root;
/* if name does not start with /, assume it is not root-based */
if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
return fname;
root = (char*)getenv("X11ROOT");
if (root==0 ||
(fname[1]==':' && isalpha(fname[0])) ||
(strlen(fname)+strlen(root)+2) > 300)
return fname;
sprintf(redirname,"%s%s",root,fname);
return redirname;
}
char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
{
/* this first constructs a name from a format and up to three
* components, then adds a path
*/
char buf[300];
sprintf(buf,format,arg1,arg2,arg3);
return __XOS2RedirRoot(buf);
}
/* This below implements select() for the calls in this file. It has been */
/* somewhat optimized for improved performance, but assumes a few */
/* things so it cannot be used as a general select. If both pipes and */
/* sockets are present, this may call the emx select */
HEV hPipeSem;
HMODULE hmod_so32dll;
static int (*os2_tcp_select)(int*,int,int,int,long);
ULONG os2_get_sys_millis();
extern int _files[];
#define MAX_TCP 256
/* These lifted from sys/emx.h. Change if that changes there! */
#define F_SOCKET 0x10000000
#define F_PIPE 0x20000000
struct select_data
{
fd_set read_copy;
fd_set write_copy;
BOOL have_read;
BOOL have_write;
int tcp_select_mask[MAX_TCP];
int tcp_emx_handles[MAX_TCP];
int tcp_select_copy[MAX_TCP];
int socket_nread;
int socket_nwrite;
int socket_ntotal;
int pipe_ntotal;
int pipe_have_write;
int max_fds;
};
int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout)
{
static BOOL FirstTime=TRUE;
static haveTCPIP=TRUE;
ULONG timeout_ms;
ULONG postCount, start_millis,now_millis;
char faildata[16];
struct select_data sd;
BOOL any_ready;
int np,ns, i,ready_handles,n;
APIRET rc;
sd.have_read=FALSE; sd.have_write=FALSE;
sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
sd.max_fds=31; ready_handles=0; any_ready=FALSE;
sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
if(FirstTime){
/* First load the so32dll.dll module and get a pointer to the SELECT fn */
if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
haveTCPIP=FALSE;
}
if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
haveTCPIP=FALSE;
}
/* Call these a first time to set the semaphore */
rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
if(rc) {
fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
return(-1);
}
rc = DosResetEventSem(hPipeSem, &postCount);
FirstTime = FALSE;
}
/* Set up the time delay structs */
if(timeout!=NULL) {
timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
}
else { timeout_ms=1000000; } /* This should be large enough... */
if(timeout_ms>0) start_millis=os2_get_sys_millis();
/* Copy the masks */
{FD_ZERO(&sd.read_copy);}
{FD_ZERO(&sd.write_copy);}
if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
/* And zero the original masks */
if(sd.have_read){ FD_ZERO(readfds);}
if(sd.have_write) {FD_ZERO(writefds);}
if(exceptfds != NULL) {FD_ZERO(exceptfds);}
/* Now we parse the fd_sets passed to select and separate pipe/sockets */
n = os2_parse_select(&sd,nfds);
if(n == -1) {
errno = EBADF;
return (-1);
}
/* Now we have three cases: either we have sockets, pipes, or both */
/* We handle all three cases differently to optimize things */
/* Case 1: only pipes! */
if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
return (np);
}
else if (np == -1) { return(-1); }
while(!any_ready){
rc = DosWaitEventSem(hPipeSem, timeout_ms);
if(rc == 640) {
return(0);
}
if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
np = os2_check_pipes(&sd,readfds,writefds);
if (np > 0){
return(np);
}
else if (np < 0){ return(-1); }
}
}
/* Case 2: only sockets. Just let the os/2 tcp select do the work */
if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
return (ns);
}
/* Case 3: combination of both */
if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
any_ready=TRUE;
ready_handles += np;
}
else if (np == -1) { return(-1); }
ns = os2_check_sockets(&sd,readfds,writefds, 0);
if(ns>0){
ready_handles+=ns;
any_ready = TRUE;
}
else if (ns == -1) {return(-1);}
while (!any_ready && timeout_ms){
rc = DosWaitEventSem(hPipeSem, 10L);
if(rc == 0){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
ready_handles+=np;
any_ready = TRUE;
}
else if (np == -1) {
return(-1); }
}
ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
if(ns>0){
ready_handles+=ns;
any_ready = TRUE;
}
else if (ns == -1) {return(-1);}
if (i%8 == 0) {
now_millis = os2_get_sys_millis();
if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
}
i++;
}
}
return(ready_handles);
}
ULONG os2_get_sys_millis()
{
APIRET rc;
ULONG milli;
rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
if(rc) {
fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
return(0);
}
return(milli);
}
int os2_parse_select(sd,nfds)
struct select_data *sd;
int nfds;
{
int i;
APIRET rc;
/* First we determine up to which descriptor we need to check. */
/* No need to check up to 256 if we don't have to (and usually we dont...)*/
/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
if(nfds > sd->max_fds){
for(i=0;i<((FD_SETSIZE+31)/32);i++){
if(sd->read_copy.fds_bits[i] ||
sd->write_copy.fds_bits[i])
sd->max_fds=(i*32) +32;
}
}
else { sd->max_fds = nfds; }
/* Check if result is greater than specified in select() call */
if(sd->max_fds > nfds) sd->max_fds = nfds;
if (sd->have_read)
{
for (i = 0; i < sd->max_fds; ++i) {
if (FD_ISSET (i, &sd->read_copy)){
if(_files[i] & F_SOCKET)
{
sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
sd->tcp_emx_handles[sd->socket_ntotal]=i;
sd->socket_ntotal++; sd->socket_nread++;
}
else if (_files[i] & F_PIPE)
{
sd -> pipe_ntotal++;
rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
}
}
}
}
if (sd->have_write)
{
for (i = 0; i < sd->max_fds; ++i) {
if (FD_ISSET (i, &sd->write_copy)){
if(_files[i] & F_SOCKET)
{
sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
sd->tcp_emx_handles[sd->socket_ntotal]=i;
sd->socket_ntotal++; sd->socket_nwrite++;
}
else if (_files[i] & F_PIPE)
{
sd -> pipe_ntotal++;
rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
sd -> pipe_have_write=TRUE;
}
}
}
}
return(sd->socket_ntotal);
}
int os2_check_sockets(sd,readfds,writefds)
struct select_data *sd;
fd_set *readfds,*writefds;
{
int e,i;
int j,n;
memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
sd->socket_ntotal*sizeof(int));
e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
sd->socket_nwrite, 0, 0);
if(e == 0) return(e);
/* We have something ready? */
if(e>0){
j = 0; n = 0;
for (i = 0; i < sd->socket_nread; ++i, ++j)
if (sd->tcp_select_copy[j] != -1)
{
FD_SET (sd->tcp_emx_handles[j], readfds);
n ++;
}
for (i = 0; i < sd->socket_nwrite; ++i, ++j)
if (sd->tcp_select_copy[j] != -1)
{
FD_SET (sd->tcp_emx_handles[j], writefds);
n ++;
}
errno = 0;
return n;
}
if(e<0){
/*Error -- TODO */
fprintf(stderr,"Error in server select! e=%d\n",e);
errno = EBADF;
return (-1);
}
}
/* Check to see if anything is ready on pipes */
int os2_check_pipes(sd,readfds,writefds)
struct select_data *sd;
fd_set *readfds,*writefds;
{
int i,e;
ULONG ulPostCount;
PIPESEMSTATE pipeSemState[128];
APIRET rc;
e = 0;
rc = DosResetEventSem(hPipeSem,&ulPostCount);
rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
sizeof(pipeSemState));
if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
i=0;
while (pipeSemState[i].fStatus != 0) {
/*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
pipeSemState[i].usAvail); */
if((pipeSemState[i].fStatus == 1) &&
(FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
FD_SET(pipeSemState[i].usKey,readfds);
e++;
}
else if((pipeSemState[i].fStatus == 2) &&
(FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
FD_SET(pipeSemState[i].usKey,writefds);
e++;
}
else if( (pipeSemState[i].fStatus == 3) &&
( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
(FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
errno = EBADF;
return (-1);
}
i++;
} /* endwhile */
/*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
errno = 0;
return(e);
}
......@@ -523,7 +523,7 @@ SUBDIRS = $(STDDIRS) \
$(IPLANDIRS) $(ILBMDIR) \
$(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS)
#if defined(ServerToInstall) && !defined(OS2Architecture)
#if defined(ServerToInstall)
install::
-(cd $(DESTDIR)$(BINDIR); $(RM) X; $(LN) ServerToInstall X)
#endif
......
......@@ -1481,11 +1481,7 @@ SecurityFreePropertyAccessList(void)
}
} /* SecurityFreePropertyAccessList */
#ifndef __UNIXOS2__
#define SecurityIsWhitespace(c) ( (c == ' ') || (c == '\t') || (c == '\n') )
#else
#define SecurityIsWhitespace(c) ( (c == ' ') || (c == '\t') || (c == '\n') || (c == '\r') )
#endif
static char *
SecuritySkipWhitespace(
......@@ -1774,8 +1770,6 @@ SecurityLoadPropertyAccessList(void)
#endif
#ifndef __UNIXOS2__
#ifdef NXAGENT_SERVER
f = Fopen(_NXGetPolicyFilePath(SecurityPolicyFile), "r");
......@@ -1786,20 +1780,6 @@ SecurityLoadPropertyAccessList(void)
#endif
#else
#ifdef NXAGENT_SERVER
f = Fopen((char*)__XOS2RedirRoot( _NXGetPolicyFilePath(SecurityPolicyFile)), "r");
#else
f = Fopen((char*)__XOS2RedirRoot(SecurityPolicyFile), "r");
#endif
#endif
if (!f)
{
#ifdef NXAGENT_SERVER
......
......@@ -6,11 +6,6 @@ NULL =
SUBDIRS = compext \
$(NULL)
#ifdef OS2Architecture
SRCS1 = os2Stub.c
OBJS1 = os2Stub.o
#endif
SRCS = \
NXwindow.c \
NXevents.c \
......@@ -71,7 +66,6 @@ SRCS = \
stubs.c \
xpstubs.c \
miinitext.c \
$(SRCS1) \
$(NULL)
OBJS = \
......@@ -134,7 +128,6 @@ OBJS = \
stubs.o \
xpstubs.o \
miinitext.o \
$(OBJS1) \
$(NULL)
VFBINCLUDES = \
......
/**************************************************************************/
/* */
/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
/* Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
/* Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
/* Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de> */
/* Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de> */
/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
/* */
/* NXAGENT, NX protocol compression and NX extensions to this software */
/* are copyright of the aforementioned persons and companies. */
/* */
/* Redistribution and use of the present software is allowed according */
/* to terms specified in the file LICENSE which comes in the source */
/* distribution. */
/* */
/* All rights reserved. */
/* */
/* NOTE: This software has received contributions from various other */
/* contributors, only the core maintainers and supporters are listed as */
/* copyright holders. Please contact us, if you feel you should be listed */
/* as copyright holder, as well. */
/* */
/**************************************************************************/
/*
* (c) Copyright 1996 by Sebastien Marineau
* <marineau@genie.uottawa.ca>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* Except as contained in this notice, the name of Sebastien Marineau shall not be
* used in advertising or otherwise to promote the sale, use or other dealings
* in this Software without prior written authorization from Sebastien Marineau.
*
*/
/* This below implements select() for calls in nxagent. It has been */
/* somewhat optimized for improved performance, but assumes a few */
/* things so it cannot be used as a general select. */
#define I_NEED_OS2_H
#include "Xpoll.h"
#include <stdio.h>
#include <sys/select.h>
#include <sys/errno.h>
#include <sys/time.h>
#define INCL_DOSSEMAPHORES
#define INCL_DOSNPIPES
#define INCL_DOSMISC
#define INCL_DOSMODULEMGR
#undef BOOL
#undef BYTE
#include <os2.h>
HEV hPipeSem;
HMODULE hmod_so32dll;
static int (*os2_tcp_select)(int*,int,int,int,long);
ULONG os2_get_sys_millis();
extern int _files[];
#define MAX_TCP 256
/* These lifted from sys/emx.h. Change if that changes there! */
#define F_SOCKET 0x10000000
#define F_PIPE 0x20000000
struct select_data
{
fd_set read_copy;
fd_set write_copy;
BOOL have_read;
BOOL have_write;
int tcp_select_mask[MAX_TCP];
int tcp_emx_handles[MAX_TCP];
int tcp_select_copy[MAX_TCP];
int socket_nread;
int socket_nwrite;
int socket_ntotal;
int pipe_ntotal;
int pipe_have_write;
int max_fds;
};
int os2PseudoSelect(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout)
{
static BOOL FirstTime=TRUE;
static haveTCPIP=TRUE;
ULONG timeout_ms;
ULONG postCount, start_millis,now_millis;
char faildata[16];
struct select_data sd;
BOOL any_ready;
int np,ns, i,ready_handles,n;
APIRET rc;
sd.have_read=FALSE; sd.have_write=FALSE;
sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
sd.max_fds=31; ready_handles=0; any_ready=FALSE;
sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
if(FirstTime){
/* First load the so32dll.dll module and get a pointer to the SELECT function */
if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
haveTCPIP=FALSE;
}
if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
haveTCPIP=FALSE;
}
/* Call these a first time to set the semaphore */
/* rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
if(rc) {
fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
return(-1);
}
rc = DosResetEventSem(hPipeSem, &postCount); */ /* Done in xtrans code for servers*/
fprintf(stderr, "Client select() done first-time stuff, sem handle %d.\n",hPipeSem);
FirstTime = FALSE;
}
/* Set up the time delay structs */
if(timeout!=NULL) {
timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
}
else { timeout_ms=1000000; } /* This should be large enough... */
if(timeout_ms>0) start_millis=os2_get_sys_millis();
/* Copy the masks */
{FD_ZERO(&sd.read_copy);}
{FD_ZERO(&sd.write_copy);}
if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
/* And zero the original masks */
if(sd.have_read){ FD_ZERO(readfds);}
if(sd.have_write) {FD_ZERO(writefds);}
if(exceptfds != NULL) {FD_ZERO(exceptfds);}
/* Now we parse the fd_sets passed to select and separate pipe/sockets */
n = os2_parse_select(&sd,nfds);
if(n == -1) {
errno = EBADF;
return (-1);
}
/* Now we have three cases: either we have sockets, pipes, or both */
/* We handle all three cases differently to optimize things */
/* Case 1: only pipes! */
if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
return (np);
}
else if (np == -1) { return(-1); }
while(!any_ready){
rc = DosWaitEventSem(hPipeSem, timeout_ms);
/* if(rc) fprintf(stderr,"Sem-wait timeout, rc = %d\n",rc); */
if(rc == 640) {
return(0);
}
if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
np = os2_check_pipes(&sd,readfds,writefds);
if (np > 0){
return(np);
}
else if (np < 0){ return(-1); }
}
}
/* Case 2: only sockets. Just let the os/2 tcp select do the work */
if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
return (ns);
}
/* Case 3: combination of both */
if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
any_ready=TRUE;
ready_handles += np;
}
else if (np == -1) { return(-1); }
ns = os2_check_sockets(&sd,readfds,writefds, 0);
if(ns>0){
ready_handles+=ns;
any_ready = TRUE;
}
else if (ns == -1) {return(-1);}
while (!any_ready && timeout_ms){
rc = DosWaitEventSem(hPipeSem, 10L);
if(rc == 0){
np = os2_check_pipes(&sd,readfds,writefds);
if(np > 0){
ready_handles+=np;
any_ready = TRUE;
}
else if (np == -1) {
return(-1); }
}
ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
if(ns>0){
ready_handles+=ns;
any_ready = TRUE;
}
else if (ns == -1) {return(-1);}
if (i%8 == 0) {
now_millis = os2_get_sys_millis();
if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
}
i++;
}
}
return(ready_handles);
}
ULONG os2_get_sys_millis()
{
APIRET rc;
ULONG milli;
rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
if(rc) {
fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
return(0);
}
return(milli);
}
int os2_parse_select(sd,nfds)
struct select_data *sd;
int nfds;
{
int i;
APIRET rc;
/* First we determine up to which descriptor we need to check. */
/* No need to check up to 256 if we don't have to (and usually we dont...)*/
/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX! */
if(nfds > sd->max_fds){
for(i=0;i<((FD_SETSIZE+31)/32);i++){
if(sd->read_copy.fds_bits[i] ||
sd->write_copy.fds_bits[i])
sd->max_fds=(i*32) +32;
}
}
else { sd->max_fds = nfds; }
/* Check if result is greater than specified in select() call */
if(sd->max_fds > nfds) sd->max_fds = nfds;
if (sd->have_read)
{
for (i = 0; i < sd->max_fds; ++i) {
if (FD_ISSET (i, &sd->read_copy)){
if(_files[i] & F_SOCKET)
{
sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
sd->tcp_emx_handles[sd->socket_ntotal]=i;
sd->socket_ntotal++; sd->socket_nread++;
}
else if (_files[i] & F_PIPE)
{
sd -> pipe_ntotal++;
/* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
}
}
}
}
if (sd->have_write)
{
for (i = 0; i < sd->max_fds; ++i) {
if (FD_ISSET (i, &sd->write_copy)){
if(_files[i] & F_SOCKET)
{
sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
sd->tcp_emx_handles[sd->socket_ntotal]=i;
sd->socket_ntotal++; sd->socket_nwrite++;
}
else if (_files[i] & F_PIPE)
{
sd -> pipe_ntotal++;
/* rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;} */
sd -> pipe_have_write=TRUE;
}
}
}
}
return(sd->socket_ntotal);
}
int os2_check_sockets(sd,readfds,writefds)
struct select_data *sd;
fd_set *readfds,*writefds;
{
int e,i;
int j,n;
memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
sd->socket_ntotal*sizeof(int));
e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
sd->socket_nwrite, 0, 0);
if(e == 0) return(e);
/* We have something ready? */
if(e>0){
j = 0; n = 0;
for (i = 0; i < sd->socket_nread; ++i, ++j)
if (sd->tcp_select_copy[j] != -1)
{
FD_SET (sd->tcp_emx_handles[j], readfds);
n ++;
}
for (i = 0; i < sd->socket_nwrite; ++i, ++j)
if (sd->tcp_select_copy[j] != -1)
{
FD_SET (sd->tcp_emx_handles[j], writefds);
n ++;
}
errno = 0;
return n;
}
if(e<0){
/*Error -- TODO. EBADF is a good choice for now. */
fprintf(stderr,"Error in server select! e=%d\n",e);
errno = EBADF;
return (-1);
}
}
/* Check to see if anything is ready on pipes */
int os2_check_pipes(sd,readfds,writefds)
struct select_data *sd;
fd_set *readfds,*writefds;
{
int i,e;
ULONG ulPostCount;
PIPESEMSTATE pipeSemState[128];
APIRET rc;
e = 0;
rc = DosResetEventSem(hPipeSem,&ulPostCount);
rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
sizeof(pipeSemState));
if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
i=0;
while (pipeSemState[i].fStatus != 0) {
/*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
pipeSemState[i].usAvail); */
if((pipeSemState[i].fStatus == 1) &&
(FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
FD_SET(pipeSemState[i].usKey,readfds);
e++;
}
else if((pipeSemState[i].fStatus == 2) &&
(FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
FD_SET(pipeSemState[i].usKey,writefds);
e++;
}
else if( (pipeSemState[i].fStatus == 3) &&
( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
(FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
errno = EBADF;
/* fprintf(stderr,"Pipe has closed down, fd=%d\n",pipeSemState[i].usKey); */
return (-1);
}
i++;
} /* endwhile */
/*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n" i,e);*/
errno = 0;
return(e);
}
......@@ -263,7 +263,7 @@ void OsBlockSignals (void);
void OsReleaseSignals (void);
#if !defined(WIN32) && !defined(__UNIXOS2__)
#if !defined(WIN32)
extern int System(char *);
extern void * Popen(char *, char *);
extern int Pclose(void *);
......
......@@ -327,8 +327,6 @@ SOFTWARE.
#if (defined(SVR4) && defined(i386)) || \
defined(__alpha__) || defined(__alpha) || \
defined(__i386__) || defined(__i386) || \
defined(__UNIXOS2__) || \
defined(__OS2ELF__) || \
defined(__QNX__) || \
defined(__s390x__) || defined(__s390__)
......
......@@ -91,9 +91,6 @@ SOFTWARE.
#include <nx-X11/X.h>
#include "misc.h"
#ifdef __UNIXOS2__
#define select(n,r,w,x,t) os2PseudoSelect(n,r,w,x,t)
#endif
#include "osdep.h"
#include <nx-X11/Xpoll.h>
#include "dixstruct.h"
......
......@@ -1139,9 +1139,6 @@ ResetHosts (char *display)
if (fnamelen > sizeof(fname))
FatalError("Display name `%s' is too long\n", display);
sprintf(fname, ETC_HOST_PREFIX "%s" ETC_HOST_SUFFIX, display);
#ifdef __UNIXOS2__
strcpy(fname, (char*)__XOS2RedirRoot(fname));
#endif /* __UNIXOS2__ */
if ((fd = fopen (fname, "r")) != 0)
{
......@@ -1152,10 +1149,6 @@ ResetHosts (char *display)
continue;
if ((ptr = strchr(ohostname, '\n')) != 0)
*ptr = 0;
#ifdef __UNIXOS2__
if ((ptr = strchr(ohostname, '\r')) != 0)
*ptr = 0;
#endif
hostlen = strlen(ohostname) + 1;
for (i = 0; i < hostlen; i++)
lhostname[i] = tolower(ohostname[i]);
......
......@@ -107,11 +107,6 @@ SOFTWARE.
#include <sys/ioctl.h>
#endif
#ifdef __UNIXOS2__
#define select(n,r,w,x,t) os2PseudoSelect(n,r,w,x,t)
extern __const__ int _nfiles;
#endif
#if defined(TCPCONN)
# include <netinet/in.h>
# include <arpa/inet.h>
......@@ -124,21 +119,17 @@ extern __const__ int _nfiles;
# ifdef CSRG_BASED
# include <sys/param.h>
# endif
# ifndef __UNIXOS2__
# include <netinet/tcp.h>
# endif
# endif
# endif
# include <arpa/inet.h>
#endif
#if !defined(__UNIXOS2__)
#ifndef Lynx
#include <sys/uio.h>
#else
#include <uio.h>
#endif
#endif
#endif /* WIN32 */
#include "misc.h"
#include "osdep.h"
......@@ -173,9 +164,6 @@ Bool AnyClientsWriteBlocked; /* true if some client blocked on write */
Bool RunFromSmartParent; /* send SIGUSR1 to parent process */
Bool PartialNetwork; /* continue even if unable to bind all addrs */
static Pid_t ParentProcess;
#ifdef __UNIXOS2__
Pid_t GetPPID(Pid_t pid);
#endif
static Bool debug_conns = FALSE;
......@@ -314,8 +302,6 @@ InitConnectionLimits(void)
#ifndef __CYGWIN__
#ifndef __UNIXOS2__
#if !defined(XNO_SYSCONF) && defined(_SC_OPEN_MAX)
lastfdesc = sysconf(_SC_OPEN_MAX) - 1;
#endif
......@@ -330,10 +316,6 @@ InitConnectionLimits(void)
lastfdesc = _NFILE - 1;
#endif
#else /* __UNIXOS2__ */
lastfdesc = _nfiles - 1;
#endif
#endif /* __CYGWIN__ */
/* This is the fallback */
......@@ -449,15 +431,6 @@ CreateWellKnownSockets(void)
RunFromSmartParent = TRUE;
OsSignal(SIGUSR1, handler);
ParentProcess = getppid ();
#ifdef __UNIXOS2__
/*
* fg030505: under OS/2, xinit is not the parent process but
* the "grant parent" process of the server because execvpe()
* presents us an additional process number;
* GetPPID(pid) is part of libemxfix
*/
ParentProcess = GetPPID (ParentProcess);
#endif /* __UNIXOS2__ */
if (RunFromSmartParent) {
if (ParentProcess > 1) {
kill (ParentProcess, SIGUSR1);
......
......@@ -70,7 +70,7 @@ SOFTWARE.
#include <nx-X11/Xtrans/Xtrans.h>
#include <nx-X11/Xmd.h>
#include <errno.h>
#if !defined(__UNIXOS2__) && !defined(WIN32)
#if !defined(WIN32)
#ifndef Lynx
#include <sys/uio.h>
#else
......@@ -92,7 +92,6 @@ CallbackListPtr FlushCallback;
/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
* systems are broken and return EWOULDBLOCK when they should return EAGAIN
*/
#ifndef __UNIXOS2__
#ifndef WIN32
#if defined(EAGAIN) && defined(EWOULDBLOCK)
#define ETEST(err) (err == EAGAIN || err == EWOULDBLOCK)
......@@ -106,9 +105,6 @@ CallbackListPtr FlushCallback;
#else /* WIN32 The socket errorcodes differ from the normal errors*/
#define ETEST(err) (err == EAGAIN || err == WSAEWOULDBLOCK)
#endif
#else /* __UNIXOS2__ Writing to full pipes may return ENOSPC */
#define ETEST(err) (err == EAGAIN || err == EWOULDBLOCK || err == ENOSPC)
#endif
Bool CriticalOutputPending;
int timesThisConnection = 0;
......
......@@ -214,9 +214,6 @@ LogInit(const char *fname, const char *backup)
sprintf(suffix, backup, display);
sprintf(oldLog, "%s%s", logFileName, suffix);
free(suffix);
#ifdef __UNIXOS2__
remove(oldLog);
#endif
if (rename(logFileName, oldLog) == -1) {
FatalError("Cannot move old log file (\"%s\" to \"%s\"\n",
logFileName, oldLog);
......
......@@ -397,7 +397,6 @@ OsInitColors(void)
if (!was_here)
{
#ifndef __UNIXOS2__
#ifdef NX_TRANS_SOCKET
/*
* Add the trailing '.txt' if a
......@@ -418,12 +417,6 @@ OsInitColors(void)
strcpy(path, rgbPath);
strcat(path, ".txt");
#endif
#else
char *tmp = (char*)__XOS2RedirRoot(rgbPath);
path = (char*)ALLOCATE_LOCAL(strlen(tmp) +5);
strcpy(path, tmp);
strcat(path, ".txt");
#endif
if (!(rgb = fopen(path, "r")))
{
#ifdef NX_TRANS_SOCKET
......@@ -438,11 +431,7 @@ OsInitColors(void)
while(fgets(line, sizeof(line), rgb))
{
lineno++;
#ifndef __UNIXOS2__
if (sscanf(line,"%d %d %d %[^\n]\n", &red, &green, &blue, name) == 4)
#else
if (sscanf(line,"%d %d %d %[^\n\r]\n", &red, &green, &blue, name) == 4)
#endif
{
if (red >= 0 && red <= 0xff &&
green >= 0 && green <= 0xff &&
......
......@@ -91,7 +91,7 @@ SOFTWARE.
#if defined(NOFILE) && !defined(NOFILES_MAX)
#define OPEN_MAX NOFILE
#else
#if !defined(__UNIXOS2__) && !defined(WIN32)
#if !defined(WIN32)
#define OPEN_MAX NOFILES_MAX
#else
#define OPEN_MAX 256
......
......@@ -133,7 +133,7 @@ OsInit(void)
dup2 (fileno (err), 2);
fclose (err);
}
#if defined(SYSV) || defined(SVR4) || defined(__UNIXOS2__) || defined(WIN32) || defined(__CYGWIN__)
#if defined(SYSV) || defined(SVR4) || defined(WIN32) || defined(__CYGWIN__)
{
static char buf[BUFSIZ];
setvbuf (stderr, buf, _IOLBF, BUFSIZ);
......
......@@ -318,9 +318,7 @@ OsSignal(sig, handler)
* server at a time. This keeps the servers from stomping on each other
* if the user forgets to give them different display numbers.
*/
#ifndef __UNIXOS2__
#define LOCK_DIR "/tmp"
#endif
#define LOCK_TMP_PREFIX "/.tX"
#define LOCK_PREFIX "/.X"
#define LOCK_SUFFIX "-lock"
......@@ -330,10 +328,6 @@ OsSignal(sig, handler)
#include <sys/param.h>
#endif
#ifdef __UNIXOS2__
#define link rename
#endif
#ifndef PATH_MAX
#ifndef Lynx
#include <sys/param.h>
......@@ -372,14 +366,7 @@ LockServer(void)
/*
* Path names
*/
#ifndef __UNIXOS2__
tmppath = LOCK_DIR;
#else
/* OS/2 uses TMP directory, must also prepare for 8.3 names */
tmppath = getenv("TMP");
if (!tmppath)
FatalError("No TMP dir found\n");
#endif
sprintf(port, "%d", atoi(display));
len = strlen(LOCK_PREFIX) > strlen(LOCK_TMP_PREFIX) ? strlen(LOCK_PREFIX) :
......@@ -422,13 +409,11 @@ LockServer(void)
if (write(lfd, pid_str, 11) != 11)
FatalError("Could not write pid to lock file in %s\n", tmp);
#ifndef __UNIXOS2__
#ifndef USE_CHMOD
(void) fchmod(lfd, 0444);
#else
(void) chmod(tmp, 0444);
#endif
#endif
(void) close(lfd);
/*
......@@ -507,9 +492,6 @@ UnlockServer(void)
if (!StillLocking){
#ifdef __UNIXOS2__
(void) chmod(LockFile,S_IREAD|S_IWRITE);
#endif /* __UNIXOS2__ */
(void) unlink(LockFile);
}
}
......@@ -928,7 +910,7 @@ ProcessCommandLine(int argc, char *argv[])
#ifdef SERVER_LOCK
else if ( strcmp ( argv[i], "-nolock") == 0)
{
#if !defined(WIN32) && !defined(__UNIXOS2__) && !defined(__CYGWIN__)
#if !defined(WIN32) && !defined(__CYGWIN__)
if (getuid() != 0)
ErrorF("Warning: the -nolock option can only be used by root\n");
else
......@@ -1260,7 +1242,7 @@ ExpandCommandLine(int *pargc, char ***pargv)
{
int i;
#if !defined(WIN32) && !defined(__UNIXOS2__) && !defined(__CYGWIN__)
#if !defined(WIN32) && !defined(__CYGWIN__)
if (getuid() != geteuid())
return;
#endif
......@@ -1609,7 +1591,7 @@ OsReleaseSignals (void)
#endif
}
#if !defined(WIN32) && !defined(__UNIXOS2__)
#if !defined(WIN32)
/*
* "safer" versions of system(3), popen(3) and pclose(3) which give up
* all privs before running a command.
......@@ -1964,7 +1946,7 @@ Fclose(void * iop)
#endif
}
#endif /* !WIN32 && !__UNIXOS2__ */
#endif /* !WIN32 */
/*
......
......@@ -128,9 +128,6 @@ XkbConfigRtrnPtr rtrn;
sprintf(buf,"X%s-config%s%s",display,(dName[0]?".":""),dName);
}
#endif
#ifdef __UNIXOS2__
strcpy(buf,(char*)__XOS2RedirRoot(buf));
#endif
#ifdef DEBUG
ErrorF("Looking for keyboard configuration in %s...",buf);
#endif
......
......@@ -82,7 +82,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
#define POST_ERROR_MSG2 "\"End of messages from xkbcomp\""
#if defined(__UNIXOS2__) || defined(WIN32)
#if defined(WIN32)
#define PATHSEPARATOR "\\"
#else
#define PATHSEPARATOR "/"
......@@ -558,8 +558,6 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
#endif
#ifndef __UNIXOS2__
#ifdef NXAGENT_SERVER
char *xkbbasedir = _NXGetXkbBasePath(XkbBaseDirectory);
char *xkbbindir = _NXGetXkbCompPath(XkbBinDirectory);
......@@ -568,23 +566,6 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
char *xkbbindir = XkbBinDirectory;
#endif
#else
/* relocate the basedir and replace the slashes with backslashes */
#ifdef NXAGENT_SERVER
char *xkbbasedir = (char*)__XOS2RedirRoot(_NXGetXkbBasePath(XkbBaseDirectory));
char *xkbbindir = (char*)__XOS2RedirRoot(_NXGetXkbCompPath(XkbBinDirectory));
#else
char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory);
char *xkbbindir = (char*)__XOS2RedirRoot(XkbBinDirectory);
#endif
int i;
for (i=0; i<strlen(xkbbasedir); i++)
if (xkbbasedir[i]=='/') xkbbasedir[i]='\\';
for (i=0; i<strlen(xkbbindir); i++)
if (xkbbindir[i]=='/') xkbbindir[i]='\\';
#endif
cmd = Xprintf("\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"",
xkbbindir,
((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)),
......@@ -675,7 +656,6 @@ char tmpname[PATH_MAX];
for xkbcomp. xkbcomp does not read from stdin. */
char *xkmfile = tmpname;
#endif
#ifndef __UNIXOS2__
#ifdef NXAGENT_SERVER
char *xkbbasedir = _NXGetXkbBasePath(XkbBaseDirectory);
char *xkbbindir = _NXGetXkbCompPath(XkbBinDirectory);
......@@ -683,20 +663,6 @@ char tmpname[PATH_MAX];
char *xkbbasedir = XkbBaseDirectory;
char *xkbbindir = XkbBinDirectory;
#endif
#else
int i;
#ifdef NXAGENT_SERVER
char *xkbbasedir = (char*)__XOS2RedirRoot(_NXGetXkbBasePath(XkbBaseDirectory));
char *xkbbindir = (char*)__XOS2RedirRoot(_NXGetXkbCompPath(XkbBinDirectory));
#else
char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory);
char *xkbbindir = (char*)__XOS2RedirRoot(XkbBinDirectory);
#endif
for (i=0; i<strlen(xkbbasedir); i++)
if (xkbbasedir[i]=='/') xkbbasedir[i]='\\';
for (i=0; i<strlen(xkbbindir); i++)
if (xkbbindir[i]=='/') xkbbindir[i]='\\';
#endif
buf = Xprintf(
"\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm \"%s\" -em1 %s -emp %s -eml %s \"%s%s.xkm\"",
......
......@@ -914,7 +914,7 @@ XkbProcessArguments(int argc,char *argv[],int i)
}
else if (strncmp(argv[i], "-xkbdir", 7) == 0) {
if(++i < argc) {
#if !defined(WIN32) && !defined(__UNIXOS2__) && !defined(__CYGWIN__)
#if !defined(WIN32) && !defined(__CYGWIN__)
if (getuid() != geteuid()) {
LogMessage(X_WARNING, "-xkbdir is not available for setuid X servers\n");
return -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment