Fixed portability issues with PRTime & PRInt64 values

git-svn-id: svn://10.0.0.236/trunk@111496 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mostafah%oeone.com
2002-01-07 18:23:31 +00:00
parent dc6c6834e3
commit 92eedca45b
3 changed files with 65 additions and 44 deletions

View File

@@ -44,6 +44,7 @@
#include "stdlib.h"
icaltimetype ConvertFromPrtime( PRTime indate );
PRTime ConvertToPrtime ( icaltimetype indate );
/* Implementation file */
NS_IMPL_ISUPPORTS1(oeDateTimeImpl, oeIDateTime)
@@ -145,8 +146,7 @@ NS_IMETHODIMP oeDateTimeImpl::SetMinute(PRInt16 newval)
NS_IMETHODIMP oeDateTimeImpl::GetTime(PRTime *retval)
{
PRTime result = icaltime_as_timet( m_datetime );
*retval = result*1000;
*retval = ConvertToPrtime( m_datetime );
return NS_OK;
}

View File

@@ -59,18 +59,42 @@ char *EmptyReturn() {
icaltimetype ConvertFromPrtime( PRTime indate ) {
icaltimetype outdate;
time_t seconds = indate /1000;
struct tm t = *(localtime(&seconds));
PRExplodedTime ext;
PRInt64 indateinusec, usecpermsec;
LL_I2L( usecpermsec, PR_USEC_PER_MSEC );
LL_MUL( indateinusec, indate, usecpermsec );
PR_ExplodeTime( indateinusec, PR_LocalTimeParameters, &ext);
outdate.year = ext.tm_year;
outdate.month = ext.tm_month + 1;
outdate.day = ext.tm_mday;
outdate.hour = ext.tm_hour;
outdate.minute = ext.tm_min;
outdate.second = ext.tm_sec;
outdate.year = t.tm_year+ 1900;
outdate.month = t.tm_mon + 1;
outdate.day = t.tm_mday;
outdate.hour = t.tm_hour;
outdate.minute = t.tm_min;
outdate.second = t.tm_sec;
return outdate;
}
PRTime ConvertToPrtime ( icaltimetype indate ) {
PRExplodedTime ext;
PR_ExplodeTime( PR_Now(), PR_LocalTimeParameters, &ext);
ext.tm_year = indate.year;
ext.tm_month = indate.month - 1;
ext.tm_mday = indate.day;
ext.tm_hour = indate.hour;
ext.tm_min = indate.minute;
ext.tm_sec = indate.second;
ext.tm_usec = 0;
PRTime result = PR_ImplodeTime( &ext );
PRInt64 usecpermsec;
LL_I2L( usecpermsec, PR_USEC_PER_MSEC );
LL_DIV( result, result, usecpermsec );
return result;
}
//////////////////////////////////////////////////
// ICalEvent Factory
@@ -614,8 +638,7 @@ NS_IMETHODIMP oeICalEventImpl::GetLastAlarmAck(PRTime *aRetVal)
#ifdef ICAL_DEBUG_ALL
printf( "GetLastAlarmAck()\n" );
#endif
*aRetVal = icaltime_as_timet( m_lastalarmack );
*aRetVal /= 1000;
*aRetVal = ConvertToPrtime( m_lastalarmack );
return NS_OK;
}
NS_IMETHODIMP oeICalEventImpl::SetLastAlarmAck(PRTime aNewVal)
@@ -637,7 +660,13 @@ NS_IMETHODIMP oeICalEventImpl::GetNextRecurrence( PRTime begin, PRTime *retval,
if( !m_recur ) {
PRTime start;
m_start->GetTime( &start );
if( (start/1000) > (begin/1000) ) {
PRInt64 startinsec,begininsec,msecpersec;
LL_I2L( msecpersec, PR_MSEC_PER_SEC );
LL_DIV( startinsec, start, msecpersec );
LL_DIV( begininsec, begin, msecpersec );
if( LL_CMP( startinsec, > , begininsec ) ) {
*retval = start;
*isvalid = true;
}
@@ -671,9 +700,8 @@ NS_IMETHODIMP oeICalEventImpl::GetNextRecurrence( PRTime begin, PRTime *retval,
printf( "Wrong day in month\n" );
continue;
}
PRTime nextinms = icaltime_as_timet( next );
nextinms *= 1000;
if( (nextinms > begin) && !IsExcepted( nextinms ) ) {
PRTime nextinms = ConvertToPrtime( next );
if( LL_CMP(nextinms, > ,begin) && !IsExcepted( nextinms ) ) {
// printf( "Result: %d-%d-%d %d:%d\n" , next.year, next.month, next.day, next.hour, next.minute );
*retval = nextinms;
*isvalid = true;
@@ -689,8 +717,7 @@ NS_IMETHODIMP oeICalEventImpl::GetNextRecurrence( PRTime begin, PRTime *retval,
icaltimetype oeICalEventImpl::GetNextRecurrence( icaltimetype begin ) {
icaltimetype result = icaltime_null_time();
PRTime begininms = icaltime_as_timet( begin );
begininms *= 1000;
PRTime begininms = ConvertToPrtime( begin );
PRTime resultinms;
PRBool isvalid;
GetNextRecurrence( begininms ,&resultinms, &isvalid );
@@ -729,11 +756,11 @@ icaltimetype oeICalEventImpl::GetNextAlarmTime( icaltimetype begin ) {
icaltimetype oeICalEventImpl::CalculateAlarmTime( icaltimetype date ) {
icaltimetype result = date;
if( strcasecmp( m_alarmunits, "days" ) == 0 )
icaltime_adjust( &result, -m_alarmlength, 0, 0, 0 );
icaltime_adjust( &result, -(signed long)m_alarmlength, 0, 0, 0 );
else if( strcasecmp( m_alarmunits, "hours" ) == 0 )
icaltime_adjust( &result, 0, -m_alarmlength, 0, 0 );
icaltime_adjust( &result, 0, -(signed long)m_alarmlength, 0, 0 );
else
icaltime_adjust( &result, 0, 0, -m_alarmlength, 0 );
icaltime_adjust( &result, 0, 0, -(signed long)m_alarmlength, 0 );
return result;
}
@@ -837,8 +864,7 @@ NS_IMETHODIMP oeICalEventImpl::AddException( PRTime exdate )
tmpexdate.hour = 0;
tmpexdate.minute = 0;
tmpexdate.second = 0;
exdate = icaltime_as_timet( tmpexdate );
exdate *= 1000;
exdate = ConvertToPrtime( tmpexdate );
m_exceptiondates.push_back( exdate );
return NS_OK;
}
@@ -869,8 +895,7 @@ bool oeICalEventImpl::IsExcepted( PRTime date ) {
tmpexdate.hour = 0;
tmpexdate.minute = 0;
tmpexdate.second = 0;
date = icaltime_as_timet( tmpexdate );
date *= 1000;
date = ConvertToPrtime( tmpexdate );
bool result = false;
for( int i=0; i<m_exceptiondates.size(); i++ ) {
@@ -1156,8 +1181,7 @@ void oeICalEventImpl::ParseIcalComponent( icalcomponent *vcalendar )
prop != 0 ;
prop = icalcomponent_get_next_property( vevent, ICAL_RECURRENCEID_PROPERTY ) ) {
icaltimetype exdate = icalproperty_get_recurrenceid( prop );
PRTime exdateinms = icaltime_as_timet( exdate );
exdateinms *= 1000;
PRTime exdateinms = ConvertToPrtime( exdate );
m_exceptiondates.push_back( exdateinms );
}
}

View File

@@ -53,6 +53,7 @@ extern "C" {
}
icaltimetype ConvertFromPrtime( PRTime indate );
PRTime ConvertToPrtime ( icaltimetype indate );
/* event enumerator */
class
@@ -883,8 +884,7 @@ oeICalImpl::GetEventsForMonth( PRTime datems, nsISimpleEnumerator **datelist, ns
#ifdef ICAL_DEBUG_ALL
printf( "CHECKDATE: %s\n" , icaltime_as_ctime( checkdate ) );
#endif
PRTime checkdateinms = icaltime_as_timet( checkdate );
checkdateinms *= 1000;
PRTime checkdateinms = ConvertToPrtime( checkdate );
struct icaltimetype checkenddate = ConvertFromPrtime( datems );
checkenddate.month++;
@@ -896,8 +896,7 @@ oeICalImpl::GetEventsForMonth( PRTime datems, nsISimpleEnumerator **datelist, ns
#ifdef ICAL_DEBUG_ALL
printf( "CHECKENDDATE: %s\n" , icaltime_as_ctime( checkenddate ) );
#endif
PRTime checkenddateinms = icaltime_as_timet( checkenddate );
checkenddateinms *= 1000;
PRTime checkenddateinms = ConvertToPrtime( checkenddate );
return GetEventsForRange(checkdateinms ,checkenddateinms ,datelist ,eventlist );
}
@@ -913,16 +912,14 @@ oeICalImpl::GetEventsForWeek( PRTime datems, nsISimpleEnumerator **datelist, nsI
checkdate.minute = 0;
checkdate.second = 0;
icaltime_adjust( &checkdate, 0, 0 , 0, -1 );
PRTime checkdateinms = icaltime_as_timet( checkdate );
checkdateinms *= 1000;
PRTime checkdateinms = ConvertToPrtime( checkdate );
struct icaltimetype checkenddate = ConvertFromPrtime( datems );
checkenddate.hour = 0;
checkenddate.minute = 0;
checkenddate.second = 0;
icaltime_adjust( &checkenddate, 7, 0 , 0, 0 );
PRTime checkenddateinms = icaltime_as_timet( checkenddate );
checkenddateinms *= 1000;
PRTime checkenddateinms = ConvertToPrtime( checkenddate );
return GetEventsForRange(checkdateinms ,checkenddateinms ,datelist ,eventlist );
}
@@ -938,16 +935,14 @@ oeICalImpl::GetEventsForDay( PRTime datems, nsISimpleEnumerator **datelist, nsIS
checkdate.minute = 0;
checkdate.second = 0;
icaltime_adjust( &checkdate, 0, 0, 0, -1 );
PRTime checkdateinms = icaltime_as_timet( checkdate );
checkdateinms *= 1000;
PRTime checkdateinms = ConvertToPrtime( checkdate );
struct icaltimetype checkenddate = ConvertFromPrtime( datems );
checkenddate.hour = 0;
checkenddate.minute = 0;
checkenddate.second = 0;
icaltime_adjust( &checkenddate, 1, 0, 0, 0 );
PRTime checkenddateinms = icaltime_as_timet( checkenddate );
checkenddateinms *= 1000;
PRTime checkenddateinms = ConvertToPrtime( checkenddate );
return GetEventsForRange(checkdateinms ,checkenddateinms ,datelist ,eventlist );
}
@@ -978,7 +973,7 @@ oeICalImpl::GetEventsForRange( PRTime checkdateinms, PRTime checkenddateinms, ns
PRBool isvalid;
PRTime checkdateloop = checkdateinms;
tmpevent->GetNextRecurrence( checkdateloop, &checkdateloop, &isvalid );
while( isvalid && (checkdateloop<checkenddateinms) ) {
while( isvalid && LL_CMP( checkdateloop, <, checkenddateinms ) ) {
PRUint32 tmpid;
tmpevent->GetId( &tmpid );
eventEnum->AddEventId( tmpid );
@@ -1018,8 +1013,7 @@ oeICalImpl::GetNextNEvents( PRTime datems, PRInt32 maxcount, nsISimpleEnumerator
checkdate.minute = 0;
checkdate.second = 0;
icaltime_adjust( &checkdate, 0, 0, 0, -1 );
PRTime checkdateinms = icaltime_as_timet( checkdate );
checkdateinms *= 1000;
PRTime checkdateinms = ConvertToPrtime( checkdate );
EventList *tmplistptr = &m_eventlist;
int i=0,count=0;
@@ -1077,8 +1071,11 @@ void oeICalImpl::SetupAlarmManager() {
printf( "oeICalImpl::SetupAlarmManager()\n" );
#endif
PRTime todayinms = time( nsnull );
todayinms *= 1000;
PRTime todayinms = PR_Now();
PRInt64 usecpermsec;
LL_I2L( usecpermsec, PR_USEC_PER_MSEC );
LL_DIV( todayinms, todayinms, usecpermsec );
icaltimetype now = ConvertFromPrtime( todayinms );
// printf( "NOW IS: %s\n", icaltime_as_ctime( now ) );