summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormkaply%us.ibm.com <devnull@localhost>2004-04-19 16:28:00 +0000
committermkaply%us.ibm.com <devnull@localhost>2004-04-19 16:28:00 +0000
commitf70daeec9ae46bae2cd770fc162217e66ce7c1d5 (patch)
tree49255fbcd80fa55d286a0607079c07c8eeb540dd
parent86a38a05ee685993cccbf9a4f458d36351b59aa9 (diff)
downloadnspr-hg-f70daeec9ae46bae2cd770fc162217e66ce7c1d5.tar.gz
#239663
r=mkaply, sr=blizzard (platform specific) OS/2 only - bring back VACPP support for NSPR and DBM mainly so VACPP can still be used with NSS
-rw-r--r--config/rules.mk5
-rw-r--r--configure.in2
-rw-r--r--pr/include/md/_os2.h7
-rw-r--r--pr/include/md/_os2_errors.h2
-rw-r--r--pr/include/prio.h2
-rw-r--r--pr/include/private/primpl.h4
-rw-r--r--pr/include/prtypes.h15
-rw-r--r--pr/src/io/prsocket.c6
-rw-r--r--pr/src/md/os2/os2_errors.c2
-rw-r--r--pr/src/md/os2/os2sock.c17
-rw-r--r--pr/src/md/os2/os2thred.c8
-rw-r--r--pr/src/misc/prnetdb.c6
12 files changed, 60 insertions, 16 deletions
diff --git a/config/rules.mk b/config/rules.mk
index beb3072a..200f6634 100644
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -378,11 +378,16 @@ ifeq ($(OS_ARCH),OS2)
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
echo EXPORTS >> $@
+ifeq ($(MOZ_OS2_TOOLS),VACPP)
+ grep -v ';+' $< | grep -v ';-' | \
+ sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
+else
grep -v ';+' $< | grep -v ';-' | \
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' -e 's,\([\t ]*\),\1_,' | \
awk 'BEGIN {ord=1;} { print($$0 " @" ord " RESIDENTNAME"); ord++;}' >> $@
$(ADD_TO_DEF_FILE)
endif
+endif
#
# Translate source filenames to absolute paths. This is required for
diff --git a/configure.in b/configure.in
index 8084f1d0..5770eaeb 100644
--- a/configure.in
+++ b/configure.in
@@ -1789,6 +1789,8 @@ mips-sony-newsos*)
*-os2*)
AC_DEFINE(XP_OS2)
AC_DEFINE(XP_PC)
+ AC_DEFINE(BSD_SELECT)
+ AC_DEFINE(TCPV40HDRS)
LIB_SUFFIX=lib
DLL_SUFFIX=dll
RC=rc.exe
diff --git a/pr/include/md/_os2.h b/pr/include/md/_os2.h
index 4f97703a..8dbbafde 100644
--- a/pr/include/md/_os2.h
+++ b/pr/include/md/_os2.h
@@ -242,9 +242,6 @@ extern PRInt32 _MD_CloseFile(PRInt32 osfd);
/* --- Socket IO stuff --- */
-#define TCPV40HDRS
-#define BSD_SELECT
-
/* The ones that don't map directly may need to be re-visited... */
#ifdef XP_OS2_VACPP
#define EPIPE EBADF
@@ -286,7 +283,11 @@ extern PRInt32 _MD_CloseSocket(PRInt32 osfd);
#define _MD_CLOSE_SOCKET _MD_CloseSocket
#define _MD_SENDTO (_PR_MD_SENDTO)
#define _MD_RECVFROM (_PR_MD_RECVFROM)
+#ifdef XP_OS2_VACPP
+#define _MD_SOCKETPAIR(s, type, proto, sv) -1
+#else
#define _MD_SOCKETPAIR (_PR_MD_SOCKETPAIR)
+#endif
#define _MD_GETSOCKNAME (_PR_MD_GETSOCKNAME)
#define _MD_GETPEERNAME (_PR_MD_GETPEERNAME)
#define _MD_GETSOCKOPT (_PR_MD_GETSOCKOPT)
diff --git a/pr/include/md/_os2_errors.h b/pr/include/md/_os2_errors.h
index b872fac8..1eae688b 100644
--- a/pr/include/md/_os2_errors.h
+++ b/pr/include/md/_os2_errors.h
@@ -127,8 +127,10 @@ NSPR_API(void) _MD_os2_map_listen_error(PRInt32 err);
NSPR_API(void) _MD_os2_map_shutdown_error(PRInt32 err);
#define _PR_MD_MAP_SHUTDOWN_ERROR _MD_os2_map_shutdown_error
+#ifndef XP_OS2_VACPP
NSPR_API(void) _MD_os2_map_socketpair_error(int err);
#define _PR_MD_MAP_SOCKETPAIR_ERROR _MD_os2_map_socketpair_error
+#endif
NSPR_API(void) _MD_os2_map_getsockname_error(PRInt32 err);
#define _PR_MD_MAP_GETSOCKNAME_ERROR _MD_os2_map_getsockname_error
diff --git a/pr/include/prio.h b/pr/include/prio.h
index 50bfa811..dbda0788 100644
--- a/pr/include/prio.h
+++ b/pr/include/prio.h
@@ -194,7 +194,7 @@ union PRNetAddr {
PRIPv6Addr ip; /* the actual 128 bits of address */
PRUint32 scope_id; /* set of interfaces for a scope */
} ipv6;
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
struct { /* Unix domain socket address */
PRUint16 family; /* address family (AF_UNIX) */
#ifdef XP_OS2
diff --git a/pr/include/private/primpl.h b/pr/include/private/primpl.h
index db323306..e39ba6a1 100644
--- a/pr/include/private/primpl.h
+++ b/pr/include/private/primpl.h
@@ -1395,7 +1395,7 @@ extern PRUintn _PR_NetAddrSize(const PRNetAddr* addr);
** struct sockaddr_in6.
*/
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
#define PR_NETADDR_SIZE(_addr) \
((_addr)->raw.family == PR_AF_INET \
? sizeof((_addr)->inet) \
@@ -1411,7 +1411,7 @@ extern PRUintn _PR_NetAddrSize(const PRNetAddr* addr);
#else
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
#define PR_NETADDR_SIZE(_addr) \
((_addr)->raw.family == PR_AF_INET \
? sizeof((_addr)->inet) \
diff --git a/pr/include/prtypes.h b/pr/include/prtypes.h
index 819f9c16..b7ee24f4 100644
--- a/pr/include/prtypes.h
+++ b/pr/include/prtypes.h
@@ -158,6 +158,21 @@
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x
+#elif defined(XP_OS2_VACPP)
+
+#define PR_EXPORT(__type) extern __type
+#define PR_EXPORT_DATA(__type) extern __type
+#define PR_IMPORT(__type) extern __type
+#define PR_IMPORT_DATA(__type) extern __type
+
+#define PR_EXTERN(__type) extern __type
+#define PR_IMPLEMENT(__type) __type
+#define PR_EXTERN_DATA(__type) extern __type
+#define PR_IMPLEMENT_DATA(__type) __type
+#define PR_CALLBACK _Optlink
+#define PR_CALLBACK_DECL
+#define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK
+
#else /* Unix */
#define PR_EXPORT(__type) extern __type
diff --git a/pr/src/io/prsocket.c b/pr/src/io/prsocket.c
index 999fc03d..7f5a7065 100644
--- a/pr/src/io/prsocket.c
+++ b/pr/src/io/prsocket.c
@@ -44,7 +44,7 @@
PRBool IsValidNetAddr(const PRNetAddr *addr)
{
if ((addr != NULL)
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
&& (addr->raw.family != PR_AF_LOCAL)
#endif
&& (addr->raw.family != PR_AF_INET6)
@@ -61,7 +61,7 @@ static PRBool IsValidNetAddrLen(const PRNetAddr *addr, PRInt32 addr_len)
* is not uniform, so we don't check it.
*/
if ((addr != NULL)
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
&& (addr->raw.family != AF_UNIX)
#endif
&& (PR_NETADDR_SIZE(addr) != addr_len)) {
@@ -1273,7 +1273,7 @@ PR_IMPLEMENT(PRFileDesc*) PR_Socket(PRInt32 domain, PRInt32 type, PRInt32 proto)
if (!_pr_initialized) _PR_ImplicitInitialization();
if (PR_AF_INET != domain
&& PR_AF_INET6 != domain
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
&& PR_AF_LOCAL != domain
#endif
) {
diff --git a/pr/src/md/os2/os2_errors.c b/pr/src/md/os2/os2_errors.c
index 7c270c4d..1d29bf20 100644
--- a/pr/src/md/os2/os2_errors.c
+++ b/pr/src/md/os2/os2_errors.c
@@ -875,6 +875,7 @@ void _MD_os2_map_shutdown_error(PRInt32 err)
}
}
+#ifndef XP_OS2_VACPP
void _MD_os2_map_socketpair_error(PRInt32 err)
{
switch (err) {
@@ -898,6 +899,7 @@ void _MD_os2_map_socketpair_error(PRInt32 err)
return;
}
}
+#endif
void _MD_os2_map_getsockname_error(PRInt32 err)
{
diff --git a/pr/src/md/os2/os2sock.c b/pr/src/md/os2/os2sock.c
index 8830a675..0b2653b1 100644
--- a/pr/src/md/os2/os2sock.c
+++ b/pr/src/md/os2/os2sock.c
@@ -53,6 +53,14 @@
#define READ_FD 1
#define WRITE_FD 2
+#ifdef XP_OS2_VACPP
+#define _OS2_WRITEV writev
+#define _OS2_IOCTL ioctl
+#else
+#define _OS2_WRITEV so_writev
+#define _OS2_IOCTL so_ioctl
+#endif
+
void
_PR_MD_INIT_IO()
{
@@ -100,7 +108,7 @@ _MD_SocketAvailable(PRFileDesc *fd)
{
PRInt32 result;
- if (so_ioctl(fd->secret->md.osfd, FIONREAD, (char *) &result, sizeof(result)) < 0) {
+ if (_OS2_IOCTL(fd->secret->md.osfd, FIONREAD, (char *) &result, sizeof(result)) < 0) {
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, sock_errno());
return -1;
}
@@ -539,7 +547,7 @@ _PR_MD_WRITEV(PRFileDesc *fd, const PRIOVec *iov, PRInt32 iov_size,
}
}
- while ((rv = so_writev(osfd, (const struct iovec*)iov, iov_size)) == -1) {
+ while ((rv = _OS2_WRITEV(osfd, (const struct iovec*)iov, iov_size)) == -1) {
err = sock_errno();
if ((err == EWOULDBLOCK)) {
if (fd->secret->nonblocking) {
@@ -584,6 +592,7 @@ _PR_MD_SHUTDOWN(PRFileDesc *fd, PRIntn how)
return rv;
}
+#ifndef XP_OS2_VACPP
PRInt32
_PR_MD_SOCKETPAIR(int af, int type, int flags, PRInt32 *osfd)
{
@@ -596,7 +605,7 @@ _PR_MD_SOCKETPAIR(int af, int type, int flags, PRInt32 *osfd)
}
return rv;
}
-
+#endif
PRStatus
_PR_MD_GETSOCKNAME(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen)
@@ -666,7 +675,7 @@ _MD_MakeNonblock(PRFileDesc *fd)
return;
}
- err = so_ioctl( osfd, FIONBIO, (char *) &one, sizeof(one));
+ err = _OS2_IOCTL( osfd, FIONBIO, (char *) &one, sizeof(one));
if ( err != 0 )
{
err = sock_errno();
diff --git a/pr/src/md/os2/os2thred.c b/pr/src/md/os2/os2thred.c
index 45613573..d6d35b70 100644
--- a/pr/src/md/os2/os2thred.c
+++ b/pr/src/md/os2/os2thred.c
@@ -220,10 +220,18 @@ _PR_MD_CREATE_THREAD(PRThread *thread,
PARAMSTORE* params = PR_Malloc(sizeof(PARAMSTORE));
params->start = start;
params->thread = thread;
+#ifdef XP_OS2_VACPP /* No exception handler for VACPP */
+ thread->md.handle = thread->id = (TID) _beginthread(
+ (void(* _Optlink)(void*))start,
+ NULL,
+ thread->stack->stackSize,
+ thread);
+#else
thread->md.handle = thread->id = (TID) _beginthread(ExcpStartFunc,
NULL,
thread->stack->stackSize,
params);
+#endif
if(thread->md.handle == -1) {
return PR_FAILURE;
}
diff --git a/pr/src/misc/prnetdb.c b/pr/src/misc/prnetdb.c
index b26b7539..c0d548d2 100644
--- a/pr/src/misc/prnetdb.c
+++ b/pr/src/misc/prnetdb.c
@@ -693,7 +693,7 @@ PR_IMPLEMENT(PRStatus) PR_GetHostByName(
#ifdef XP_OS2_VACPP
h = GETHOSTBYNAME((char *)name);
#else
- h = GETHOSTBYNAME(name);
+ h = GETHOSTBYNAME(name);
#endif
if (NULL == h)
@@ -924,7 +924,7 @@ PR_IMPLEMENT(PRStatus) PR_GetIPNodeByName(
#else /* _PR_INET6 */
LOCK_DNS();
#ifdef XP_OS2_VACPP
- h = GETHOSTBYNAME((char *)name);
+ h = GETHOSTBYNAME((char *)name);
#else
h = GETHOSTBYNAME(name);
#endif
@@ -1373,7 +1373,7 @@ PRUintn _PR_NetAddrSize(const PRNetAddr* addr)
#else
addrsize = sizeof(addr->ipv6);
#endif
-#if defined(XP_UNIX) || defined(XP_OS2)
+#if defined(XP_UNIX) || defined(XP_OS2_EMX)
else if (AF_UNIX == addr->raw.family)
addrsize = sizeof(addr->local);
#endif