Update from the internal CVS repository /m/src. Includes: first

cut at 64-bit AIX port.
This commit is contained in:
wtc%netscape.com 1999-03-19 22:47:21 +00:00
Родитель 0ec8fa9ab1
Коммит c7e15201d8
12 изменённых файлов: 249 добавлений и 57 удалений

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

@ -65,6 +65,13 @@ CC = xlC_r
CCC = xlC_r
endif
OS_CFLAGS = -qro -qroconst
ifeq ($(USE_64),1)
OBJECT_MODE = 64
export OBJECT_MODE
COMPILER_TAG = _64
else
COMPILER_TAG = _32
endif
CPU_ARCH = rs6000
@ -101,6 +108,11 @@ OS_CFLAGS += -DAIX4_3
endif
endif
# Have the socklen_t data type
ifeq ($(OS_RELEASE),4.3)
OS_CFLAGS += -DHAVE_SOCKLEN_T
endif
ifeq (,$(filter-out 4.2 4.3,$(OS_RELEASE)))
# On these OS revisions, localtime_r() is declared if _THREAD_SAFE
# is defined.

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

@ -439,12 +439,6 @@ PL_DestroyEvent(PLEvent* self);
PR_EXTERN(void)
PL_DequeueEvent(PLEvent* self, PLEventQueue* queue);
#if defined(_WIN32) || defined(WIN16) || defined(XP_OS2)
PR_EXTERN(HWND)
PR_GetEventReceiverWindow();
#endif
/*******************************************************************************
* Private Stuff
******************************************************************************/
@ -465,14 +459,6 @@ struct PLEvent {
**
*/
#ifdef XP_PC
PR_EXTERN(PLEventQueue *)
PL_GetMainEventQueue(void);
/*
** Initializes the main event queue.
*/
PR_EXTERN(void)
PL_InitializeEventsLib(char *name);
/* -----------------------------------------------------------------------
** FUNCTION: PL_GetNativeEventReceiverWindow()
**

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

@ -48,7 +48,11 @@ endif
endif
ifeq ($(OS_ARCH),AIX)
MDCPUCFG_H = _aix.cfg
ifeq ($(USE_64),1)
MDCPUCFG_H = _aix64.cfg
else
MDCPUCFG_H = _aix32.cfg
endif
endif
ifeq ($(OS_ARCH),BSD_OS)

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

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

@ -0,0 +1,122 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nspr_cpucfg___
#define nspr_cpucfg___
#ifndef XP_UNIX
#define XP_UNIX
#endif
#ifndef AIX
#define AIX
#endif
#undef IS_LITTLE_ENDIAN
#define IS_BIG_ENDIAN 1
#define IS_64
#define PR_BYTES_PER_BYTE 1
#define PR_BYTES_PER_SHORT 2
#define PR_BYTES_PER_INT 4
#define PR_BYTES_PER_INT64 8
#define PR_BYTES_PER_LONG 8
#define PR_BYTES_PER_FLOAT 4
#define PR_BYTES_PER_DOUBLE 8
#define PR_BYTES_PER_WORD 8
#define PR_BYTES_PER_DWORD 8
#define PR_BYTES_PER_WORD_LOG2 3
#define PR_BYTES_PER_DWORD_LOG2 3
#define PR_BITS_PER_BYTE 8
#define PR_BITS_PER_SHORT 16
#define PR_BITS_PER_INT 32
#define PR_BITS_PER_INT64 64
#define PR_BITS_PER_LONG 64
#define PR_BITS_PER_FLOAT 32
#define PR_BITS_PER_DOUBLE 64
#define PR_BITS_PER_WORD 64
#define PR_BITS_PER_BYTE_LOG2 3
#define PR_BITS_PER_SHORT_LOG2 4
#define PR_BITS_PER_INT_LOG2 5
#define PR_BITS_PER_INT64_LOG2 6
#define PR_BITS_PER_LONG_LOG2 6
#define PR_BITS_PER_FLOAT_LOG2 5
#define PR_BITS_PER_DOUBLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2 6
#define PR_ALIGN_OF_SHORT 2
#define PR_ALIGN_OF_INT 4
#define PR_ALIGN_OF_LONG 8
#define PR_ALIGN_OF_INT64 8
#define PR_ALIGN_OF_FLOAT 4
#define PR_ALIGN_OF_DOUBLE 4
#define PR_ALIGN_OF_POINTER 8
#define HAVE_LONG_LONG
#undef HAVE_ALIGNED_DOUBLES
#undef HAVE_ALIGNED_LONGLONGS
#ifndef NO_NSPR_10_SUPPORT
#define BYTES_PER_BYTE PR_BYTES_PER_BYTE
#define BYTES_PER_SHORT PR_BYTES_PER_SHORT
#define BYTES_PER_INT PR_BYTES_PER_INT
#define BYTES_PER_INT64 PR_BYTES_PER_INT64
#define BYTES_PER_LONG PR_BYTES_PER_LONG
#define BYTES_PER_FLOAT PR_BYTES_PER_FLOAT
#define BYTES_PER_DOUBLE PR_BYTES_PER_DOUBLE
#define BYTES_PER_WORD PR_BYTES_PER_WORD
#define BYTES_PER_DWORD PR_BYTES_PER_DWORD
#define BITS_PER_BYTE PR_BITS_PER_BYTE
#define BITS_PER_SHORT PR_BITS_PER_SHORT
#define BITS_PER_INT PR_BITS_PER_INT
#define BITS_PER_INT64 PR_BITS_PER_INT64
#define BITS_PER_LONG PR_BITS_PER_LONG
#define BITS_PER_FLOAT PR_BITS_PER_FLOAT
#define BITS_PER_DOUBLE PR_BITS_PER_DOUBLE
#define BITS_PER_WORD PR_BITS_PER_WORD
#define BITS_PER_BYTE_LOG2 PR_BITS_PER_BYTE_LOG2
#define BITS_PER_SHORT_LOG2 PR_BITS_PER_SHORT_LOG2
#define BITS_PER_INT_LOG2 PR_BITS_PER_INT_LOG2
#define BITS_PER_INT64_LOG2 PR_BITS_PER_INT64_LOG2
#define BITS_PER_LONG_LOG2 PR_BITS_PER_LONG_LOG2
#define BITS_PER_FLOAT_LOG2 PR_BITS_PER_FLOAT_LOG2
#define BITS_PER_DOUBLE_LOG2 PR_BITS_PER_DOUBLE_LOG2
#define BITS_PER_WORD_LOG2 PR_BITS_PER_WORD_LOG2
#define ALIGN_OF_SHORT PR_ALIGN_OF_SHORT
#define ALIGN_OF_INT PR_ALIGN_OF_INT
#define ALIGN_OF_LONG PR_ALIGN_OF_LONG
#define ALIGN_OF_INT64 PR_ALIGN_OF_INT64
#define ALIGN_OF_FLOAT PR_ALIGN_OF_FLOAT
#define ALIGN_OF_DOUBLE PR_ALIGN_OF_DOUBLE
#define ALIGN_OF_POINTER PR_ALIGN_OF_POINTER
#define ALIGN_OF_WORD PR_ALIGN_OF_WORD
#define BYTES_PER_WORD_LOG2 PR_BYTES_PER_WORD_LOG2
#define BYTES_PER_DWORD_LOG2 PR_BYTES_PER_DWORD_LOG2
#define WORDS_PER_DWORD_LOG2 PR_WORDS_PER_DWORD_LOG2
#endif /* NO_NSPR_10_SUPPORT */
#endif /* nspr_cpucfg___ */

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

@ -551,11 +551,17 @@ struct stat64 {
long st_pad4[8];
};
typedef struct stat64 _MDStat64;
typedef off64_t _MDOff64_t;
#elif defined(_PR_HAVE_OFF64_T)
typedef struct stat64 _MDStat64;
#elif defined(_PR_HAVE_LARGE_OFF_T) || defined(_PR_NO_LARGE_FILES)
typedef off64_t _MDOff64_t;
#elif defined(_PR_HAVE_LARGE_OFF_T)
typedef struct stat _MDStat64;
typedef off_t _MDOff64_t;
#elif defined(_PR_NO_LARGE_FILES)
typedef struct stat _MDStat64;
typedef PRInt64 _MDOff64_t;
#else
#error "I don't know yet"
#endif
@ -563,11 +569,10 @@ typedef struct stat _MDStat64;
typedef PRIntn (*_MD_Fstat64)(PRIntn osfd, _MDStat64 *buf);
typedef PRIntn (*_MD_Open64)(const char *path, int oflag, ...);
typedef PRIntn (*_MD_Stat64)(const char *path, _MDStat64 *buf);
typedef PRInt64 (*_MD_Lseek64)(PRIntn osfd, PRInt64, PRIntn whence);
typedef PRIntn (*_MD_Lockf64)(PRIntn osfd, PRIntn function, PRInt64 size);
typedef _MDOff64_t (*_MD_Lseek64)(PRIntn osfd, _MDOff64_t, PRIntn whence);
typedef void* (*_MD_Mmap64)(
void *addr, PRSize len, PRIntn prot, PRIntn flags,
PRIntn fildes, PRInt64 offset);
PRIntn fildes, _MDOff64_t offset);
struct _MD_IOVector
{
_MD_Open64 _open64;

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

@ -103,6 +103,8 @@ PRFileDesc *_PR_Getfd()
PR_ASSERT(0 == _pr_fd_cache.count);
_pr_fd_cache.tail = NULL;
}
PR_ASSERT(&_pr_faulty_methods == fd->methods);
PR_ASSERT(PR_INVALID_IO_LAYER == fd->identity);
PR_ASSERT(_PR_FILEDESC_FREED == fd->secret->state);
}
PR_Unlock(_pr_fd_cache.ml);
@ -244,8 +246,8 @@ void _PR_InitFdCache()
if (NULL != high) _pr_fd_cache.limit_high = atoi(high);
/*
**_low is allowed to be zero, _high is not.
** IF _high is zero, we're not doing the caching.
** _low is allowed to be zero, _high is not.
** If _high is zero, we're not doing the caching.
*/
#if defined(DEBUG)

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

@ -154,23 +154,30 @@ static PRFileDesc* PR_CALLBACK pl_TopAccept (
{
PRStatus rv;
PRFileDesc *newfd;
PRFileDesc *newstack;
PR_ASSERT(fd != NULL);
PR_ASSERT(fd->lower != NULL);
newfd = (fd->lower->methods->accept)(fd->lower, addr, timeout);
if (newfd != NULL)
newstack = PR_NEW(PRFileDesc);
if (NULL == newstack)
{
PRFileDesc *newstack = PR_NEW(PRFileDesc);
if (NULL != newstack)
{
*newstack = *fd; /* make a copy of the accepting layer */
rv = PR_PushIOLayer(newfd, PR_TOP_IO_LAYER, newstack);
if (PR_SUCCESS == rv) return newfd; /* that's it */
}
PR_Close(newfd); /* we failed for local reasons */
PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
return NULL;
}
return NULL;
*newstack = *fd; /* make a copy of the accepting layer */
newfd = (fd->lower->methods->accept)(fd->lower, addr, timeout);
if (NULL == newfd)
{
PR_DELETE(newstack);
return NULL;
}
/* this PR_PushIOLayer call cannot fail */
rv = PR_PushIOLayer(newfd, PR_TOP_IO_LAYER, newstack);
PR_ASSERT(PR_SUCCESS == rv);
return newfd; /* that's it */
}
static PRStatus PR_CALLBACK pl_DefBind (PRFileDesc *fd, const PRNetAddr *addr)
@ -253,10 +260,33 @@ static PRInt32 PR_CALLBACK pl_DefAcceptread (
PRFileDesc *sd, PRFileDesc **nd, PRNetAddr **raddr, void *buf,
PRInt32 amount, PRIntervalTime t)
{
PRInt32 nbytes;
PRStatus rv;
PRFileDesc *newstack;
PR_ASSERT(sd != NULL);
PR_ASSERT(sd->lower != NULL);
return sd->lower->methods->acceptread(sd->lower, nd, raddr, buf, amount, t);
newstack = PR_NEW(PRFileDesc);
if (NULL == newstack)
{
PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
return -1;
}
*newstack = *sd; /* make a copy of the accepting layer */
nbytes = sd->lower->methods->acceptread(
sd->lower, nd, raddr, buf, amount, t);
if (-1 == nbytes)
{
PR_DELETE(newstack);
return nbytes;
}
/* this PR_PushIOLayer call cannot fail */
rv = PR_PushIOLayer(*nd, PR_TOP_IO_LAYER, newstack);
PR_ASSERT(PR_SUCCESS == rv);
return nbytes;
}
static PRInt32 PR_CALLBACK pl_DefTransmitfile (

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

@ -265,6 +265,8 @@ PR_StackPush(PRStack *stack, PRStackElem *stack_elem)
PRStackElem *addr;
boolean_t locked = TRUE;
/* Is it safe to cast a pointer to an int? */
PR_ASSERT(sizeof(int) == sizeof(PRStackElem *));
do {
while ((addr = stack->prstk_head.prstk_elem_next) ==
(PRStackElem *)_PR_AIX_ATOMIC_LOCK)
@ -283,6 +285,8 @@ PR_StackPop(PRStack *stack)
PRStackElem *element;
boolean_t locked = TRUE;
/* Is it safe to cast a pointer to an int? */
PR_ASSERT(sizeof(int) == sizeof(PRStackElem *));
do {
while ((element = stack->prstk_head.prstk_elem_next) ==
(PRStackElem *) _PR_AIX_ATOMIC_LOCK)

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

@ -42,7 +42,9 @@
* Make sure _PRSockLen_t is 32-bit, because we will cast a PRUint32* or
* PRInt32* pointer to a _PRSockLen_t* pointer.
*/
#if defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
#if defined(HAVE_SOCKLEN_T)
#define _PRSockLen_t socklen_t
#elif defined(IRIX) || defined(HPUX) || defined(OSF1) || defined(SOLARIS) \
|| defined(AIX4_1) || defined(LINUX) || defined(SONY) \
|| defined(BSDI) || defined(SCO) || defined(NEC) || defined(SNI) \
|| defined(SUNOS4) || defined(NCR) || defined(RHAPSODY) \

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

@ -196,7 +196,8 @@ static PRBool IsValidNetAddrLen(const PRNetAddr *addr, PRInt32 addr_len)
* Latest POSIX defines this type as socklen_t. It may also be
* size_t or int.
*/
#if (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2 \
#if defined(HAVE_SOCKLEN_T) \
|| (defined(LINUX) && defined(__GLIBC__) && __GLIBC__ >= 2 \
&& !defined(__alpha))
typedef socklen_t pt_SockLen;
#elif (defined(AIX) && !defined(AIX4_1)) \
@ -1004,9 +1005,13 @@ static PRBool pt_send_cont(pt_Continuation *op, PRInt16 revents)
op->arg3.amount -= bytes; /* and reduce the required count */
return (0 == op->arg3.amount) ? PR_TRUE : PR_FALSE;
}
else return ((-1 == bytes) &&
(EWOULDBLOCK == op->syserrno || EAGAIN == op->syserrno)) ?
PR_FALSE : PR_TRUE;
else if ((-1 == bytes) && (EWOULDBLOCK != op->syserrno)
&& (EAGAIN != op->syserrno))
{
op->result.code = -1;
return PR_TRUE;
}
else return PR_FALSE;
} /* pt_send_cont */
static PRBool pt_write_cont(pt_Continuation *op, PRInt16 revents)
@ -1030,9 +1035,13 @@ static PRBool pt_write_cont(pt_Continuation *op, PRInt16 revents)
op->arg3.amount -= bytes; /* and reduce the required count */
return (0 == op->arg3.amount) ? PR_TRUE : PR_FALSE;
}
else return ((-1 == bytes) &&
(EWOULDBLOCK == op->syserrno || EAGAIN == op->syserrno)) ?
PR_FALSE : PR_TRUE;
else if ((-1 == bytes) && (EWOULDBLOCK != op->syserrno)
&& (EAGAIN != op->syserrno))
{
op->result.code = -1;
return PR_TRUE;
}
else return PR_FALSE;
} /* pt_write_cont */
static PRBool pt_writev_cont(pt_Continuation *op, PRInt16 revents)
@ -1069,9 +1078,13 @@ static PRBool pt_writev_cont(pt_Continuation *op, PRInt16 revents)
op->arg3.amount -= iov_index; /* and array length */
return (0 == op->arg3.amount) ? PR_TRUE : PR_FALSE;
}
else return ((-1 == bytes) &&
(EWOULDBLOCK == op->syserrno || EAGAIN == op->syserrno)) ?
PR_FALSE : PR_TRUE;
else if ((-1 == bytes) && (EWOULDBLOCK != op->syserrno)
&& (EAGAIN != op->syserrno))
{
op->result.code = -1;
return PR_TRUE;
}
else return PR_FALSE;
} /* pt_writev_cont */
static PRBool pt_sendto_cont(pt_Continuation *op, PRInt16 revents)
@ -1089,9 +1102,13 @@ static PRBool pt_sendto_cont(pt_Continuation *op, PRInt16 revents)
op->arg3.amount -= bytes; /* and reduce the required count */
return (0 == op->arg3.amount) ? PR_TRUE : PR_FALSE;
}
else return ((-1 == bytes) &&
(EWOULDBLOCK == op->syserrno || EAGAIN == op->syserrno)) ?
PR_FALSE : PR_TRUE;
else if ((-1 == bytes) && (EWOULDBLOCK != op->syserrno)
&& (EAGAIN != op->syserrno))
{
op->result.code = -1;
return PR_TRUE;
}
else return PR_FALSE;
} /* pt_sendto_cont */
static PRBool pt_recvfrom_cont(pt_Continuation *op, PRInt16 revents)

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

@ -482,6 +482,7 @@ static ParseTest parseArray[] =
{
/* |<----- expected result ------------------------------------------->| */
/* "string to test" usec sec min hour day mo year wday julian {gmtoff, dstoff }*/
{ "Thursday 1 Jan 1970 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "1 Jan 1970 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "1-Jan-1970 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "01-Jan-1970 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
@ -498,13 +499,18 @@ static ParseTest parseArray[] =
{ "70/1/1 00:00:", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "00:00 Thursday, January 1, 1970",{ 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "1-Jan-70 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "70-01-01 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
{ "70/01/01 00:00:00", { 000000, 00, 00, 00, 1, 0, 1970, 4, 0, {-28800, 0 }}},
/* 31-Dec-1969 */
{ "Wed 31 Dec 1969 00:00:00", { 000000, 00, 00, 00, 31, 11, 1969, 3, 364, {-28800, 0 }}},
{ "31 Dec 1969 00:00:00", { 000000, 00, 00, 00, 31, 11, 1969, 3, 364, {-28800, 0 }}},
{ "12/31/69 00:00:00", { 000000, 00, 00, 00, 31, 11, 2069, 2, 364, {-28800, 0 }}},
{ "12/31/1969 00:00:00", { 000000, 00, 00, 00, 31, 11, 1969, 3, 364, {-28800, 0 }}},
{ "12-31-69 00:00:00", { 000000, 00, 00, 00, 31, 11, 2069, 2, 364, {-28800, 0 }}},
{ "12-31-1969 00:00:00", { 000000, 00, 00, 00, 31, 11, 1969, 3, 364, {-28800, 0 }}},
{ "69-12-31 00:00:00", { 000000, 00, 00, 00, 31, 11, 2069, 2, 364, {-28800, 0 }}},
{ "69/12/31 00:00:00", { 000000, 00, 00, 00, 31, 11, 2069, 2, 364, {-28800, 0 }}},
/* 31-Dec-1999 */
{ "31 Dec 1999 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
@ -512,6 +518,8 @@ static ParseTest parseArray[] =
{ "12/31/1999 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
{ "12-31-99 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
{ "12-31-1999 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
{ "99-12-31 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
{ "99/12/31 00:00:00", { 000000, 00, 00, 00, 31, 11, 1999, 5, 364, {-28800, 0 }}},
/* 01-Jan-2000 */
{ "01 Jan 2000 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
@ -520,7 +528,7 @@ static ParseTest parseArray[] =
{ "1-1-00 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
{ "1-1-2000 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
{ "01-01-00 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
{ "01-01-2000 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
{ "Saturday 01-01-2000 00:00:00", { 000000, 00, 00, 00, 1, 0, 2000, 6, 0, {-28800, 0 }}},
/* 29-Feb-2000 */
{ "29 Feb 2000 00:00:00", { 000000, 00, 00, 00, 29, 1, 2000, 2, 59, {-28800, 0 }}},
@ -581,6 +589,7 @@ static ParseTest parseArray[] =
{ "9-9-1999 00:00:00", { 000000, 00, 00, 00, 9, 8, 1999, 4, 251, {-28800, 3600 }}},
{ "09-09-99 00:00:00", { 000000, 00, 00, 00, 9, 8, 1999, 4, 251, {-28800, 3600 }}},
{ "09-09-1999 00:00:00", { 000000, 00, 00, 00, 9, 8, 1999, 4, 251, {-28800, 3600 }}},
{ "99-09-09 00:00:00", { 000000, 00, 00, 00, 9, 8, 1999, 4, 251, {-28800, 3600 }}},
/* last element. string must be null */
{ NULL }
@ -614,8 +623,7 @@ static PRStatus TestParseTime( void )
rc = PR_ParseTimeString( sp, PR_FALSE, &ct );
if ( PR_FAILURE == rc )
{
PR_LOG( lm, PR_LOG_ERROR,
("TestParseTime(): PR_ParseTimeString() failed to convert: %s", sp ));
printf("TestParseTime(): PR_ParseTimeString() failed to convert: %s\n", sp );
rv = PR_FAILURE;
failed_already = 1;
}
@ -625,8 +633,7 @@ static PRStatus TestParseTime( void )
if ( !ExplodedTimeIsEqual( &cet, &ptp->et ))
{
PR_LOG( lm, PR_LOG_ERROR,
("TestParseTime(): Exploded time compare failed: %s", sp ));
printf("TestParseTime(): Exploded time compare failed: %s\n", sp );
if ( debug_mode )
{
PrintExplodedTime( &cet );
@ -691,23 +698,24 @@ int main(int argc, char** argv)
PR_LOG( lm, PR_LOG_ERROR,
("TestExplodeImplodeTime() failed"));
}
printf("Test 1: Calendar Time Test passed\n");
else
printf("Test 1: Calendar Time Test passed\n");
if ( PR_FAILURE == TestNormalizeTime())
{
PR_LOG( lm, PR_LOG_ERROR,
("TestNormalizeTime() failed"));
}
printf("Test 2: Normalize Time Test passed\n");
else
printf("Test 2: Normalize Time Test passed\n");
if ( PR_FAILURE == TestParseTime())
{
PR_LOG( lm, PR_LOG_ERROR,
("TestParseTime() failed"));
}
printf("Test 3: Parse Time Test passed\n");
else
printf("Test 3: Parse Time Test passed\n");
#ifdef XP_MAC
if (1)