Merged the changes from NSPRPUB_PRE_4_2_CLIENT_BRANCH onto the trunk. Most

of these changes are for OS/2.
Modified Files:
	configure.in build/cygwin-wrapper config/rules.mk
	lib/ds/Makefile.in lib/ds/plds.def lib/libc/src/Makefile.in
	lib/libc/src/plc.def pr/include/md/_os2.h pr/src/Makefile.in
	pr/src/nspr.def pr/src/linking/prlink.c
	pr/src/md/os2/Makefile.in pr/src/md/os2/objs.mk
	pr/src/md/os2/os2cv.c pr/src/md/os2/os2misc.c
	pr/src/md/os2/os2poll.c pr/src/md/os2/os2sock.c
	pr/src/md/os2/os2thred.c pr/tests/Makefile.in
	pr/tests/attach.c
This commit is contained in:
wtc%netscape.com 2003-05-14 01:24:08 +00:00
Родитель a0e469fae9
Коммит 2a090e9975
20 изменённых файлов: 303 добавлений и 164 удалений

Просмотреть файл

@ -7,11 +7,17 @@ shift
if test -z "$prog"; then
exit 0
fi
mountpoint=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
if test -z "$mountpoint"; then
print "Cannot determine cygwin mount points. Exiting"
exit 1
fi
mountpoint=`echo $mountpoint | sed 's|/$||'`
if test "$prog" = "-up"; then
prog=$1
shift
args=`echo $* | sed -e 's|-I\(.\):|-I/cygdrive/\1|g;'`
args=`echo $* | sed -e "s|-I\([a-zA-Z]\):/|-I${mountpoint}/\1/|g;"`
else
args=`echo $* | sed -e 's|/cygdrive/\(.\)/|\1:/|g;'`
args=`echo $* | sed -e "s|${mountpoint}/\([a-zA-Z]\)/|\1:/|g;"`
fi
exec $prog $args

Просмотреть файл

@ -311,8 +311,9 @@ endif
$(RANLIB) $@
ifeq ($(OS_TARGET), OS2)
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
$(IMPLIB) $@ $(SHARED_LIBRARY).def
$(IMPORT_LIBRARY): $(MAPFILE)
rm -f $@
$(IMPLIB) $@ $(MAPFILE)
endif
$(SHARED_LIBRARY): $(OBJS) $(MAPFILE)
@ -330,16 +331,9 @@ else # AIX 4.1
ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT)
$(LINK_DLL) -MAP $(DLLBASE) $(DLL_LIBS) $(EXTRA_LIBS) $(OBJS)
else
ifeq ($(OS_ARCH),OS2)
# append ( >> ) doesn't seem to be working under OS/2 gmake. Run through OS/2 shell instead.
@cmd /C "echo LIBRARY $(notdir $(basename $(SHARED_LIBRARY))) INITINSTANCE TERMINSTANCE >$@.def"
@cmd /C "echo PROTMODE >>$@.def"
@cmd /C "echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@.def"
@cmd /C "echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >>$@.def"
@cmd /C "echo EXPORTS >>$@.def"
@cmd /C "$(FILTER) $(LIBRARY) | grep -v _DLL_InitTerm >>$@.def"
$(LINK_DLL) $(DLLBASE) $(OBJS) $(OS_LIBS) $(EXTRA_LIBS) $@.def
else # OS2
ifeq ($(MOZ_OS2_TOOLS),VACPP)
$(LINK_DLL) $(DLLBASE) $(OBJS) $(OS_LIBS) $(EXTRA_LIBS) $(MAPFILE)
else # !os2 vacpp
ifeq ($(OS_TARGET), OpenVMS)
@if test ! -f $(VMS_SYMVEC_FILE); then \
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
@ -349,7 +343,7 @@ ifeq ($(OS_TARGET), OpenVMS)
fi
endif # OpenVMS
$(MKSHLIB) $(OBJS) $(EXTRA_LIBS)
endif # OS2
endif # OS2 vacpp
endif # WINNT
endif # AIX 4.1
ifdef ENABLE_STRIP
@ -378,6 +372,15 @@ ifeq ($(OS_ARCH),SunOS)
grep -v ';-' $< | \
sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@
endif
ifeq ($(OS_ARCH),OS2)
echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@
echo PROTMODE >> $@
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
echo EXPORTS >> $@
grep -v ';+' $< | grep -v ';-' | \
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' >> $@
endif
#
# Translate source filenames to absolute paths. This is required for

Просмотреть файл

@ -342,7 +342,7 @@ if test -n "$MOZ_DEBUG"; then
beos*)
DEFINES="$DEFINES -DDEBUG_${USER}"
;;
msvc*|mks*|cygwin*|mingw*)
msvc*|mks*|cygwin*|mingw*|os2*)
DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
;;
*)
@ -451,7 +451,7 @@ fi
if test "$GXX" = "yes"; then
GNU_CXX=1
fi
if test "`echo | $AS -V 2>&1 | grep -c GNU`" != "0"; then
if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
GNU_AS=1
fi
rm -f a.out
@ -1771,10 +1771,8 @@ mips-sony-newsos*)
AC_DEFINE(XP_PC)
AC_DEFINE(BSD_SELECT)
AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
OBJ_SUFFIX=obj
LIB_SUFFIX=lib
DLL_SUFFIX=dll
ASM_SUFFIX=asm
RC=rc.exe
PR_MD_ARCH_DIR=os2
PROG_SUFFIX=.exe
@ -1783,40 +1781,43 @@ mips-sony-newsos*)
RESOLVE_LINK_SYMBOLS=1
# EMX/GCC build
if test "$GNU_CC"; then
if test -n "$GNU_CC"; then
AC_DEFINE(XP_OS2_EMX)
AC_DEFINE(OS2)
AR=emxomfar
AR_FLAGS='-p256 r $@'
CFLAGS="-Zmtd -Zomf"
HOST_CFLAGS="$CFLAGS"
CXXFLAGS="-Zmtd -Zomf"
OS_LIBS="-lsocket -lemxio"
LD='$(CC)'
IMPLIB='emximp -o'
FILTER='emxexp'
OS_DLLFLAGS='$(DSO_LDOPTS) -o $@'
CFLAGS="$CFLAGS -Wall -Zmtd -Zomf"
CXXFLAGS="$CFLAGS -Wall -Zmtd -Zomf"
MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
DSO_CFLAGS=
DSO_LDOPTS='-Zomf -Zdll -Zmtd'
_OPTIMIZE_FLAGS="-O2 -s"
_DEBUG_FLAGS=-g
if test -n "$MOZ_DEBUG"; then
DLLFLAGS='-g'
EXEFLAGS='-g $(OMF_FLAG) -Zmtd -L$(DIST)/lib -o $@'
DSO_LDOPTS='-g -Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
else
DLLFLAGS=
EXEFLAGS='-Zmtd -o $@'
DSO_LDOPTS='-Zomf -Zdll -Zmt -Zcrtdll -Zlinker /NOO'
_DEBUG_FLAGS="-g -fno-inline"
if test -n "$MOZ_OPTIMIZE"; then
DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
fi
fi
OS_LIBS="-lsocket -lemxio"
IMPLIB='emximp -o'
FILTER='emxexp -o'
if test -z "$EMXOMFLD_LINKER"; then
# using LINK386.EXE
DSO_LDOPTS="$DSO_LDOPTS -Zlinker /NOO"
fi
# GCC for OS/2 currently predefines these, but we don't want them
DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
# Visual Age C++ build
if test "$VACPP" = "yes"; then
elif test "$VACPP" = "yes"; then
AC_DEFINE(XP_OS2_VACPP)
AC_DEFINE(OS2,4)
AC_DEFINE(TCPV40HDRS)
AC_DEFINE(_X86_)
OBJ_SUFFIX=obj
AS=alp
ASFLAGS='-Mb'
ASM_SUFFIX=asm
AR=-ilib
AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
CFLAGS='/Q /qlibansi /Gd+ /Gm+ /Su4 /Mp /Tl9'
@ -1829,7 +1830,7 @@ mips-sony-newsos*)
MKSHLIB='$(LD) $(DSO_LDOPTS)'
IMPLIB='implib -nologo -noignorecase'
FILTER='cppfilt -q -B -P'
_OPTIMIZE_FLAGS='/O+ /Gl+ /Gx+ /qtune=pentium /qarch=pentium'
_OPTIMIZE_FLAGS='/O+ /Gl+ /qtune=pentium /qarch=pentium'
_DEBUG_FLAGS='/Ti+ '
LDFLAGS='/NOL /M /L'
DLLFLAGS='/O:$@ /DLL /INC:_dllentry /MAP:$(@:.dll=.map) /L /NOL'

Просмотреть файл

@ -95,6 +95,12 @@ MKSHLIB += -M $(MAPFILE)
endif
endif
ifeq ($(OS_ARCH),OS2)
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
GARBAGE += $(MAPFILE)
MKSHLIB += $(MAPFILE)
endif
EXTRA_LIBS = $(LIBNSPR)
# On NCR and SCOOS, we can't link with extra libraries when

Просмотреть файл

@ -1,6 +1,51 @@
# nm -n -C -p libplds4.so | awk '/[^ ]* T PL_/ {print $3}'
NSPR_4.0 {
global:
;+#
;+# The contents of this file are subject to the Mozilla Public
;+# License Version 1.1 (the "License"); you may not use this file
;+# except in compliance with the License. You may obtain a copy of
;+# the License at http://www.mozilla.org/MPL/
;+#
;+# Software distributed under the License is distributed on an "AS
;+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
;+# implied. See the License for the specific language governing
;+# rights and limitations under the License.
;+#
;+# The Original Code is the Netscape Portable Runtime (NSPR).
;+#
;+# The Initial Developer of the Original Code is Netscape
;+# Communications Corporation. Portions created by Netscape are
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
;+# Rights Reserved.
;+#
;+# Contributor(s):
;+#
;+# Alternatively, the contents of this file may be used under the
;+# terms of the GNU General Public License Version 2 or later (the
;+# "GPL"), in which case the provisions of the GPL are applicable
;+# instead of those above. If you wish to allow use of your
;+# version of this file only under the terms of the GPL and not to
;+# allow others to use your version of this file under the MPL,
;+# indicate your decision by deleting the provisions above and
;+# replace them with the notice and other provisions required by
;+# the GPL. If you do not delete the provisions above, a recipient
;+# may use your version of this file under either the MPL or the
;+# GPL.
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+NSPR_4.0 {
;+ global:
LIBRARY plds4 ;-
EXPORTS ;-
PL_ArenaAllocate;
PL_ArenaFinish;
PL_ArenaGrow;
@ -23,11 +68,11 @@ PL_HashTableRemove;
PL_InitArenaPool;
PL_NewHashTable;
libVersionPoint;
local: *;
};
NSPR_4.1 {
global:
;+ local: *;
;+};
;+
;+NSPR_4.1 {
;+ global:
PL_HashTableLookupConst;
PL_HashTableRawLookupConst;
} NSPR_4.0;
;+} NSPR_4.0;

Просмотреть файл

@ -105,6 +105,12 @@ MKSHLIB += -M $(MAPFILE)
endif
endif
ifeq ($(OS_ARCH),OS2)
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
GARBAGE += $(MAPFILE)
MKSHLIB += $(MAPFILE)
endif
EXTRA_LIBS = $(LIBNSPR)
# On NCR and SCOOS, we can't link with extra libraries when

Просмотреть файл

@ -1,6 +1,51 @@
# nm -n -C -p libplc4.so | awk '/[^ ]* T PL_/ {print $3}'
NSPR_4.0 {
global:
;+#
;+# The contents of this file are subject to the Mozilla Public
;+# License Version 1.1 (the "License"); you may not use this file
;+# except in compliance with the License. You may obtain a copy of
;+# the License at http://www.mozilla.org/MPL/
;+#
;+# Software distributed under the License is distributed on an "AS
;+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
;+# implied. See the License for the specific language governing
;+# rights and limitations under the License.
;+#
;+# The Original Code is the Netscape Portable Runtime (NSPR).
;+#
;+# The Initial Developer of the Original Code is Netscape
;+# Communications Corporation. Portions created by Netscape are
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
;+# Rights Reserved.
;+#
;+# Contributor(s):
;+#
;+# Alternatively, the contents of this file may be used under the
;+# terms of the GNU General Public License Version 2 or later (the
;+# "GPL"), in which case the provisions of the GPL are applicable
;+# instead of those above. If you wish to allow use of your
;+# version of this file only under the terms of the GPL and not to
;+# allow others to use your version of this file under the MPL,
;+# indicate your decision by deleting the provisions above and
;+# replace them with the notice and other provisions required by
;+# the GPL. If you do not delete the provisions above, a recipient
;+# may use your version of this file under either the MPL or the
;+# GPL.
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+NSPR_4.0 {
;+ global:
LIBRARY plc4 ;-
EXPORTS ;-
PL_Base64Decode;
PL_Base64Encode;
PL_CreateOptState;
@ -40,10 +85,10 @@ PL_strrchr;
PL_strrstr;
PL_strstr;
libVersionPoint;
local: *;
};
NSPR_4.2 {
global:
;+ local: *;
;+};
;+
;+NSPR_4.2 {
;+ global:
PL_strtok_r;
} NSPR_4.0;
;+} NSPR_4.0;

Просмотреть файл

@ -47,7 +47,10 @@
#include <errno.h>
#ifdef XP_OS2_VACPP
/* TODO RAMSEMs need to be written for GCC/EMX */
#define USE_RAMSEM
#endif
#ifdef USE_RAMSEM
#pragma pack(4)
@ -75,15 +78,14 @@ APIRET _Optlink SemReleasex86(PRAMSEM, ULONG);
#ifdef XP_OS2_EMX
/*
* EMX-specific tweaks:
* o Use stricmp instead of strcmpi.
* o Use errno rather than sock_errno()
* o Use close rather than soclose
* o Ignore sock_init calls.
*/
#define strcmpi stricmp
#define sock_errno() errno
#define soclose close
#define sock_init()
#include <string.h>
#endif
/*
@ -308,11 +310,13 @@ extern PRInt32 _MD_SELECT(int nfds, fd_set *readfds, fd_set *writefds,
#define _MD_FSYNC _PR_MD_FSYNC
#define _MD_SET_FD_INHERITABLE (_PR_MD_SET_FD_INHERITABLE)
#ifdef _PR_HAVE_ATOMIC_OPS
#define _MD_INIT_ATOMIC()
#define _MD_ATOMIC_INCREMENT _PR_MD_ATOMIC_INCREMENT
#define _MD_ATOMIC_ADD _PR_MD_ATOMIC_ADD
#define _MD_ATOMIC_DECREMENT _PR_MD_ATOMIC_DECREMENT
#define _MD_ATOMIC_SET _PR_MD_ATOMIC_SET
#endif
#define _MD_INIT_IO (_PR_MD_INIT_IO)
#define _MD_PR_POLL (_PR_MD_PR_POLL)

Просмотреть файл

@ -141,6 +141,12 @@ endif
endif
endif
ifeq ($(OS_ARCH),OS2)
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).def
GARBAGE += $(MAPFILE)
MKSHLIB += $(MAPFILE)
endif
ifeq ($(OS_ARCH),OSF1)
ifeq ($(USE_PTHREADS), 1)
OS_LIBS = -lpthread -lrt

Просмотреть файл

@ -580,9 +580,11 @@ pr_UnlockedFindLibrary(const char *name)
while (lm) {
const char* cp = strrchr(lm->name, PR_DIRECTORY_SEPARATOR);
cp = cp ? cp + 1 : lm->name;
#ifdef XP_PC
#ifdef WIN32
/* Windows DLL names are case insensitive... */
if (strcmpi(np, cp) == 0)
#elif defined(XP_OS2)
if (stricmp(np, cp) == 0)
#else
if (strcmp(np, cp) == 0)
#endif

Просмотреть файл

@ -62,6 +62,10 @@ ifeq ($(MOZ_OS2_TOOLS),VACPP)
ASFILES = os2vacpp.asm
endif
ifeq ($(MOZ_OS2_TOOLS),EMX)
ASFILES = os2emx.s
endif
TARGETS = $(OBJS)
INCLUDES = -I$(dist_includedir) -I$(topsrcdir)/pr/include -I$(topsrcdir)/pr/include/private

Просмотреть файл

@ -52,6 +52,10 @@ ifeq ($(MOZ_OS2_TOOLS),VACPP)
ASFILES = os2vacpp.asm
endif
OBJS += $(addprefix md/os2/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
$(addprefix md/os2/$(OBJDIR)/,$(ASFILES:.asm=.$(OBJ_SUFFIX)))
ifeq ($(MOZ_OS2_TOOLS),EMX)
ASFILES = os2emx.s
endif
OBJS += $(addprefix md/os2/$(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \
$(addprefix md/os2/$(OBJDIR)/,$(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)))

Просмотреть файл

@ -51,6 +51,10 @@
#ifdef USE_RAMSEM
ULONG _Far16 _Pascal Dos16GetInfoSeg(PSEL pselGlobal, PSEL pselLocal);
#ifdef XP_OS2_EMX
typedef unsigned short BOOL16;
#endif
typedef struct _LINFOSEG
{
USHORT pidCurrent;

Просмотреть файл

@ -518,43 +518,3 @@ unsigned long _System _DLL_InitTerm( unsigned long mod_handle, unsigned long fla
return rc;
}
#ifndef XP_OS2_VACPP
PRInt32 _PR_MD_ATOMIC_SET(PRInt32 *intp, PRInt32 val)
{
PRInt32 result;
asm volatile ("lock ; xchg %0, %1"
: "=r"(result), "=m"(intp)
: "0"(val), "m"(intp));
return result;
}
PRInt32 _PR_MD_ATOMIC_ADD(PRInt32 *intp, PRInt32 val)
{
PRInt32 result;
asm volatile ("lock ; xadd %0, %1"
: "=r"(result), "=m"(intp)
: "0"(val), "m"(intp));
return result + val;
}
PRInt32 _PR_MD_ATOMIC_INCREMENT(PRInt32 *val)
{
PRInt32 result;
asm volatile ("lock ; xadd %0, %1"
: "=r"(result), "=m"(*val)
: "0"(1), "m"(*val));
return result + 1;
}
PRInt32 _PR_MD_ATOMIC_DECREMENT(PRInt32 *val)
{
PRInt32 result;
asm volatile ("lock ; xadd %0, %1"
: "=r"(result), "=m"(*val)
: "0"(1), "m"(*val));
return result - 1;
}
#endif

Просмотреть файл

@ -265,7 +265,7 @@ retry:
ready = _MD_SELECT(socks, rd, wt, ex, msecs);
#endif
if (ready == -1 && errno == SOCEINTR)
if (ready == -1 && errno == EINTR)
{
if (timeout == PR_INTERVAL_NO_TIMEOUT)
goto retry;
@ -357,8 +357,8 @@ retry:
if (getsockopt(bottom->secret->md.osfd, SOL_SOCKET,
SO_TYPE, (char *) &optval, &optlen) == -1)
{
PR_ASSERT(sock_errno() == SOCENOTSOCK);
if (sock_errno() == SOCENOTSOCK)
PR_ASSERT(sock_errno() == ENOTSOCK);
if (sock_errno() == ENOTSOCK)
{
pd->out_flags = PR_POLL_NVAL;
ready++;

Просмотреть файл

@ -151,7 +151,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
else
rv = _MD_SELECT(socks, 0, 1, 0, lTimeout);
#endif
if (rv == -1 && (syserror = sock_errno()) != SOCEINTR) {
if (rv == -1 && (syserror = sock_errno()) != EINTR) {
_PR_MD_MAP_SELECT_ERROR(syserror);
break;
}
@ -209,7 +209,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
/*
* we don't consider EINTR a real error
*/
if (rv == -1 && (syserror = sock_errno()) != SOCEINTR) {
if (rv == -1 && (syserror = sock_errno()) != EINTR) {
_PR_MD_MAP_SELECT_ERROR(syserror);
break;
}
@ -223,7 +223,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
* We loop again if _MD_SELECT timed out or got interrupted
* by a signal, and the timeout deadline has not passed yet.
*/
if (rv == 0 || (rv == -1 && syserror == SOCEINTR)) {
if (rv == 0 || (rv == -1 && syserror == EINTR)) {
/*
* If _MD_SELECT timed out, we know how much time
* we spent in blocking, so we can avoid a
@ -252,7 +252,7 @@ socket_io_wait( PRInt32 osfd, PRInt32 fd_type, PRIntervalTime timeout )
remaining = timeout - elapsed;
}
}
} while (rv == 0 || (rv == -1 && syserror == SOCEINTR));
} while (rv == 0 || (rv == -1 && syserror == EINTR));
break;
}
return(rv);
@ -269,14 +269,14 @@ _MD_Accept(PRFileDesc *fd, PRNetAddr *addr,
while ((rv = accept(osfd, (struct sockaddr*) addr, (int*)addrlen)) == -1)
{
err = sock_errno();
if ((err == SOCEWOULDBLOCK) || (err == SOCECONNABORTED))
if ((err == EWOULDBLOCK) || (err == ECONNABORTED))
{
if (fd->secret->nonblocking) {
break;
}
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
goto done;
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
continue;
} else {
break;
@ -314,7 +314,7 @@ retry:
{
err = sock_errno();
if (err == SOCEINTR) {
if (err == EINTR) {
if (_PR_PENDING_INTERRUPT(me)) {
me->flags &= ~_PR_INTERRUPT;
PR_SetError( PR_PENDING_INTERRUPT_ERROR, 0);
@ -323,7 +323,7 @@ retry:
goto retry;
}
if (!fd->secret->nonblocking && (err == SOCEINPROGRESS))
if (!fd->secret->nonblocking && (err == EINPROGRESS))
{
/*
* socket_io_wait() may return -1 or 1.
@ -391,13 +391,13 @@ _PR_MD_RECV(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
while ((rv = recv(osfd,buf,amount,flags)) == -1)
{
err = sock_errno();
if ((err == SOCEWOULDBLOCK)) {
if ((err == EWOULDBLOCK)) {
if (fd->secret->nonblocking) {
break;
}
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
goto done;
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
continue;
} else {
break;
@ -421,13 +421,13 @@ _PR_MD_SEND(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
while ((rv = send(osfd,buf,amount,flags)) == -1)
{
err = sock_errno();
if ((err == SOCEWOULDBLOCK)) {
if ((err == EWOULDBLOCK)) {
if (fd->secret->nonblocking) {
break;
}
if ((rv = socket_io_wait(osfd, WRITE_FD, timeout)) < 0)
goto done;
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
continue;
} else {
break;
@ -465,7 +465,7 @@ _PR_MD_SENDTO(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags,
(struct sockaddr *) addr, addrlen)) == -1)
{
err = sock_errno();
if ((err == SOCEWOULDBLOCK))
if ((err == EWOULDBLOCK))
{
if (fd->secret->nonblocking) {
break;
@ -498,13 +498,13 @@ _PR_MD_RECVFROM(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags,
(struct sockaddr *) addr, (int *)addrlen)) == -1))
{
err = sock_errno();
if ((err == SOCEWOULDBLOCK)) {
if ((err == EWOULDBLOCK)) {
if (fd->secret->nonblocking) {
break;
}
if ((rv = socket_io_wait(osfd, READ_FD, timeout)) < 0)
goto done;
} else if ((err == SOCEINTR) && (!_PR_PENDING_INTERRUPT(me))){
} else if ((err == EINTR) && (!_PR_PENDING_INTERRUPT(me))){
continue;
} else {
break;
@ -541,7 +541,7 @@ _PR_MD_WRITEV(PRFileDesc *fd, const PRIOVec *iov, PRInt32 iov_size,
while ((rv = writev(osfd, (const struct iovec*)iov, iov_size)) == -1) {
err = sock_errno();
if ((err == SOCEWOULDBLOCK)) {
if ((err == EWOULDBLOCK)) {
if (fd->secret->nonblocking) {
break;
}

Просмотреть файл

@ -93,14 +93,6 @@ PRStatus
_PR_MD_INIT_THREAD(PRThread *thread)
{
APIRET rv;
#ifdef XP_OS2_EMX
/* disable SIGPIPE */
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sa.sa_flags = 0;
sigemptyset( &sa.sa_mask);
sigaction( SIGPIPE, &sa, NULL);
#endif
if (thread->flags & (_PR_PRIMORDIAL | _PR_ATTACHED)) {
_pr_SetThreadMDHandle(thread);

Просмотреть файл

@ -1,6 +1,52 @@
# nm -n -C -p libnspr4.so | awk '/[^ ]* T PR_/ {print $3}'
NSPR_4.0 {
global:
;+#
;+# The contents of this file are subject to the Mozilla Public
;+# License Version 1.1 (the "License"); you may not use this file
;+# except in compliance with the License. You may obtain a copy of
;+# the License at http://www.mozilla.org/MPL/
;+#
;+# Software distributed under the License is distributed on an "AS
;+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
;+# implied. See the License for the specific language governing
;+# rights and limitations under the License.
;+#
;+# The Original Code is the Netscape Portable Runtime (NSPR).
;+#
;+# The Initial Developer of the Original Code is Netscape
;+# Communications Corporation. Portions created by Netscape are
;+# Copyright (C) 2002-2003 Netscape Communications Corporation. All
;+# Rights Reserved.
;+#
;+# Contributor(s):
;+#
;+# Alternatively, the contents of this file may be used under the
;+# terms of the GNU General Public License Version 2 or later (the
;+# "GPL"), in which case the provisions of the GPL are applicable
;+# instead of those above. If you wish to allow use of your
;+# version of this file only under the terms of the GPL and not to
;+# allow others to use your version of this file under the MPL,
;+# indicate your decision by deleting the provisions above and
;+# replace them with the notice and other provisions required by
;+# the GPL. If you do not delete the provisions above, a recipient
;+# may use your version of this file under either the MPL or the
;+# GPL.
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX, OS/2 and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+#
;+NSPR_4.0 {
;+ global:
LIBRARY nspr4 ;-
EXPORTS ;-
LL_MaxInt;
LL_MinInt;
LL_Zero;
@ -365,19 +411,19 @@ NSPR_4.0 {
PRP_NewNakedCondVar;
PRP_TryLock;
libVersionPoint;
local: *;
};
NSPRprivate {
global:
;+ local: *;
;+};
;+
;+NSPRprivate {
;+ global:
GetExecutionEnvironment;
PT_FPrintStats;
SetExecutionEnvironment;
local: *;
};
NSPR_4.1 {
global:
;+ local: *;
;+};
;+
;+NSPR_4.1 {
;+ global:
PR_ConnectContinue;
PR_CreateIOLayer;
PR_EmulateAcceptRead;
@ -388,16 +434,16 @@ NSPR_4.1 {
PR_GetNumberOfProcessors;
PR_ImportPipe;
PR_SetEnv;
} NSPR_4.0;
NSPR_4.3 {
global:
;+} NSPR_4.0;
;+
;+NSPR_4.3 {
;+ global:
LL_MaxUint;
PR_CallOnceWithArg;
PR_GetLibraryFilePathname;
} NSPR_4.1;
NSPR_4.4 {
global:
;+} NSPR_4.1;
;+
;+NSPR_4.4 {
;+ global:
PR_GetPathSeparator;
} NSPR_4.3;
;+} NSPR_4.3;

Просмотреть файл

@ -233,9 +233,8 @@ ifeq ($(OS_ARCH),OS2)
ifeq ($(MOZ_OS2_TOOLS),VACPP)
LDOPTS = -NOE -DEBUG -nologo -PMTYPE:VIO
else
ifeq ($(MOZ_OS2_EMX_OBJECTFORMAT),OMF)
LDOPTS = -Zlinker /PM:VIO
endif
EXTRA_LIBS = $(OS_LIBS)
LDOPTS = -Zmtd -Zomf -Zlinker /PM:VIO -Zlinker /ST:0x30000
endif
endif
@ -487,7 +486,7 @@ $(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX)
ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT)
link $(LDOPTS) $(EXTRA_LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -out:$@
else
ifeq ($(OS_ARCH),OS2)
ifeq ($(MOZ_OS2_TOOLS),VACPP)
$(LD) $(EXEFLAGS) $(LDOPTS) $< $(LIBPLC) $(LIBNSPR) $(OS_LIBS) $(EXTRA_LIBS)
else
$(PURE) $(CC) $(XCFLAGS) $< $(LDOPTS) $(LIBPLC) $(LIBNSPR) $(EXTRA_LIBS) -o $@

Просмотреть файл

@ -329,19 +329,25 @@ int main(int argc, char **argv)
#elif defined(OS2)
# ifdef __EMX__
threadID = (TID) _beginthread((void *)threadStartFunc, NULL,
32768, NULL);
# else
threadID = (TID) _beginthread((void(* _Optlink)(void*))threadStartFunc, NULL,
32768, NULL);
# endif
if (threadID == -1) {
fprintf(stderr, "thread creation failed: error code %d\n", errno);
failed_already=1;
goto exit_now;
failed_already=1;
goto exit_now;
}
rv = DosWaitThread(&threadID, DCWW_WAIT);
if (debug_mode)PR_ASSERT(rv == NO_ERROR);
else if (rv == NO_ERROR) {
failed_already=1;
goto exit_now;
}
if (debug_mode) {
PR_ASSERT(rv == NO_ERROR);
} else if (rv != NO_ERROR) {
failed_already=1;
goto exit_now;
}
#elif defined(XP_BEOS)