зеркало из https://github.com/mozilla/gecko-dev.git
Update from the internal CVS repository /m/src. Includes: first
cut at 64-bit AIX port.
This commit is contained in:
Родитель
0ec8fa9ab1
Коммит
c7e15201d8
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче