basic/source/runtime/methods.cxx              |    2 +-
 include/osl/time.h                            |   10 +++++-----
 include/tools/date.hxx                        |    1 +
 oox/source/docprop/docprophandler.cxx         |    2 +-
 package/source/zipapi/ZipOutputStream.cxx     |   17 +++++++++++++++--
 sal/osl/unx/time.c                            |   13 +++++--------
 sal/osl/w32/time.c                            |    8 ++++----
 sdext/source/presenter/PresenterToolBar.cxx   |    2 +-
 ucb/source/ucp/webdav-neon/DateTimeHelper.cxx |    4 ++--
 ucb/source/ucp/webdav/DateTimeHelper.cxx      |    4 ++--
 10 files changed, 37 insertions(+), 26 deletions(-)

New commits:
commit 4d220882b46d5f8edd4d09e5f66722cd296a092e
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Fri Jul 5 12:16:34 2013 +0200

    hair splitting on years in dates in ZIP structure
    
    Change-Id: I9d7a6436e3df75eff592d19dcaca0f655ebf2160

diff --git a/package/source/zipapi/ZipOutputStream.cxx 
b/package/source/zipapi/ZipOutputStream.cxx
index 7b2ae4f..22cc0b3 100644
--- a/package/source/zipapi/ZipOutputStream.cxx
+++ b/package/source/zipapi/ZipOutputStream.cxx
@@ -450,12 +450,25 @@ sal_uInt32 ZipOutputStream::getCurrentDosTime( )
     osl_getSystemTime ( &aTimeValue );
     osl_getDateTimeFromTimeValue( &aTimeValue, &aDateTime);
 
+    // at year 2108, there is an overflow
+    // -> some decision needs to be made
+    // how to handle the ZIP file format (just overflow?)
+
+    // if the current system time is before 1980,
+    // then the time traveller will have to make a decision
+    // how to handle the ZIP file format before it is invented
+    // (just underflow?)
+
+    assert(aDateTime.Year > 1980 && aDateTime.Year < 2108);
+
     sal_uInt32 nYear = static_cast <sal_uInt32> (aDateTime.Year);
 
-    if (nYear>1980)
+    if (nYear>=1980)
         nYear-=1980;
-    else if (nYear>80)
+    else if (nYear>=80)
+    {
         nYear-=80;
+    }
     sal_uInt32 nResult = static_cast < sal_uInt32>( ( ( ( aDateTime.Day) +
                                           ( 32 * (aDateTime.Month)) +
                                           ( 512 * nYear ) ) << 16) |
commit 6e82772db5ade43fc9f4f7181303264d2748d2a1
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Fri Jul 5 12:14:46 2013 +0200

    TODO note for future *internal* API change
    
    Signed year so that ~all our date types have about the same capacities.
    
    Change-Id: Iab8a66bee0eb22ffd04608c345302218094e53a7

diff --git a/include/tools/date.hxx b/include/tools/date.hxx
index 5b451a3..87ba277 100644
--- a/include/tools/date.hxx
+++ b/include/tools/date.hxx
@@ -27,6 +27,7 @@ class ResId;
 enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
                  SATURDAY, SUNDAY };
 
+// TODO FIXME: make it handle signed year?
 class TOOLS_DLLPUBLIC SAL_WARN_UNUSED Date
 {
 private:
commit fa6ce5a6e8c35430977857477fc09f6a03698e63
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Fri Jul 5 12:13:36 2013 +0200

    API change: osl/time.h take const pointers where appropriate
    
    Should be backwards-compatible...
    
    Change-Id: I6b04bec2c032ff8c57a1b5192b2d3962dcc96c84

diff --git a/include/osl/time.h b/include/osl/time.h
index 6bb48f2..484adb0 100644
--- a/include/osl/time.h
+++ b/include/osl/time.h
@@ -111,7 +111,7 @@ SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getSystemTime(
     @return sal_False if any error occurs else sal_True.
 */
 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getDateTimeFromTimeValue(
-        TimeValue* pTimeVal, oslDateTime* pDateTime );
+        const TimeValue* pTimeVal, oslDateTime* pDateTime );
 
 
 /** Get the GMT from a oslDateTime and fill a TimeValue
@@ -121,7 +121,7 @@ SAL_DLLPUBLIC sal_Bool SAL_CALL 
osl_getDateTimeFromTimeValue(
     @return sal_False if any error occurs else sal_True.
 */
 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getTimeValueFromDateTime(
-        oslDateTime* pDateTime, TimeValue* pTimeVal );
+        const oslDateTime* pDateTime, TimeValue* pTimeVal );
 
 
 /** Convert GMT to local time
@@ -131,7 +131,7 @@ SAL_DLLPUBLIC sal_Bool SAL_CALL 
osl_getTimeValueFromDateTime(
     @return sal_False if any error occurs else sal_True.
 */
 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime(
-        TimeValue* pSystemTimeVal, TimeValue* pLocalTimeVal );
+        const TimeValue* pSystemTimeVal, TimeValue* pLocalTimeVal );
 
 
 /** Convert local time to GMT
@@ -141,7 +141,7 @@ SAL_DLLPUBLIC sal_Bool SAL_CALL 
osl_getLocalTimeFromSystemTime(
     @return sal_False if any error occurs else sal_True.
 */
 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime(
-        TimeValue* pLocalTimeVal, TimeValue* pSystemTimeVal );
+        const TimeValue* pLocalTimeVal, TimeValue* pSystemTimeVal );
 
 
 /** Get the value of the global timer
diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c
index d038f46..24947b1 100644
--- a/sal/osl/unx/time.c
+++ b/sal/osl/unx/time.c
@@ -92,7 +92,7 @@ sal_Bool SAL_CALL osl_getSystemTime(TimeValue* tv)
  * osl_getDateTimeFromTimeValue
  *-------------------------------------------------*/
 
-sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( TimeValue* pTimeVal, 
oslDateTime* pDateTime )
+sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( const TimeValue* pTimeVal, 
oslDateTime* pDateTime )
 {
     struct tm *pSystemTime;
     struct tm tmBuf;
@@ -126,7 +126,7 @@ sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( TimeValue* 
pTimeVal, oslDateTime
  * osl_getTimeValueFromDateTime
  *--------------------------------------------------*/
 
-sal_Bool SAL_CALL osl_getTimeValueFromDateTime( oslDateTime* pDateTime, 
TimeValue* pTimeVal )
+sal_Bool SAL_CALL osl_getTimeValueFromDateTime( const oslDateTime* pDateTime, 
TimeValue* pTimeVal )
 {
     struct tm   aTime;
     time_t      nSeconds;
@@ -193,7 +193,7 @@ sal_Bool SAL_CALL osl_getTimeValueFromDateTime( 
oslDateTime* pDateTime, TimeValu
  * osl_getLocalTimeFromSystemTime
  *--------------------------------------------------*/
 
-sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( TimeValue* pSystemTimeVal, 
TimeValue* pLocalTimeVal )
+sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( const TimeValue* 
pSystemTimeVal, TimeValue* pLocalTimeVal )
 {
     struct tm *pLocalTime;
     struct tm tmBuf;
@@ -230,7 +230,7 @@ sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( 
TimeValue* pSystemTimeVal, Tim
  * osl_getSystemTimeFromLocalTime
  *--------------------------------------------------*/
 
-sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime( TimeValue* pLocalTimeVal, 
TimeValue* pSystemTimeVal )
+sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime( const TimeValue* 
pLocalTimeVal, TimeValue* pSystemTimeVal )
 {
     struct tm *pLocalTime;
     struct tm tmBuf;
diff --git a/sal/osl/w32/time.c b/sal/osl/w32/time.c
index fc8855b..52fe8ac 100644
--- a/sal/osl/w32/time.c
+++ b/sal/osl/w32/time.c
@@ -65,7 +65,7 @@ sal_Bool SAL_CALL osl_getSystemTime(TimeValue* pTimeVal)
 // osl_getDateTimeFromTimeValue
 //--------------------------------------------------
 
-sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( TimeValue* pTimeVal, 
oslDateTime* pDateTime )
+sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( const TimeValue* pTimeVal, 
oslDateTime* pDateTime )
 {
     FILETIME    aFileTime;
     SYSTEMTIME  aSystemTime;
@@ -95,7 +95,7 @@ sal_Bool SAL_CALL osl_getDateTimeFromTimeValue( TimeValue* 
pTimeVal, oslDateTime
 // osl_getTimeValueFromDateTime
 //--------------------------------------------------
 
-sal_Bool SAL_CALL osl_getTimeValueFromDateTime( oslDateTime* pDateTime, 
TimeValue* pTimeVal )
+sal_Bool SAL_CALL osl_getTimeValueFromDateTime( const oslDateTime* pDateTime, 
TimeValue* pTimeVal )
 {
     FILETIME    aFileTime;
     SYSTEMTIME  aSystemTime;
@@ -126,7 +126,7 @@ sal_Bool SAL_CALL osl_getTimeValueFromDateTime( 
oslDateTime* pDateTime, TimeValu
 // osl_getLocalTimeFromSystemTime
 //--------------------------------------------------
 
-sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( TimeValue* pSystemTimeVal, 
TimeValue* pLocalTimeVal )
+sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( const TimeValue* 
pSystemTimeVal, TimeValue* pLocalTimeVal )
 {
     TIME_ZONE_INFORMATION aTimeZoneInformation;
     DWORD Success;
@@ -157,7 +157,7 @@ sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime( 
TimeValue* pSystemTimeVal, Tim
 // osl_getSystemTimeFromLocalTime
 //--------------------------------------------------
 
-sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime( TimeValue* pLocalTimeVal, 
TimeValue* pSystemTimeVal )
+sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime( const TimeValue* 
pLocalTimeVal, TimeValue* pSystemTimeVal )
 {
     TIME_ZONE_INFORMATION aTimeZoneInformation;
     DWORD Success;
diff --git a/sdext/source/presenter/PresenterToolBar.cxx 
b/sdext/source/presenter/PresenterToolBar.cxx
index ce5c61f..e5d7efe 100644
--- a/sdext/source/presenter/PresenterToolBar.cxx
+++ b/sdext/source/presenter/PresenterToolBar.cxx
@@ -1928,7 +1928,7 @@ PresentationTimeLabel::PresentationTimeLabel (
 void PresentationTimeLabel::TimeHasChanged (const oslDateTime& rCurrentTime)
 {
     TimeValue aCurrentTimeValue;
-    if (osl_getTimeValueFromDateTime(const_cast<oslDateTime*>(&rCurrentTime), 
&aCurrentTimeValue))
+    if (osl_getTimeValueFromDateTime(&rCurrentTime, &aCurrentTimeValue))
     {
         if (maStartTimeValue.Seconds==0 && maStartTimeValue.Nanosec==0)
         {
commit 8db392f1be4d6dac0da0fb35b5735e7c27c346cc
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Fri Jul 5 12:11:42 2013 +0200

    API change: oslDateTime signed year
    
    Change-Id: Ic4f1e424b130fd2ccca379adbe0a66836b6cac41

diff --git a/include/osl/time.h b/include/osl/time.h
index 4be9e72..6bb48f2 100644
--- a/include/osl/time.h
+++ b/include/osl/time.h
@@ -92,7 +92,7 @@ typedef struct _oslDateTime
     /*----------------------------------------------------------------------*/
     /** is the year.
     */
-    sal_uInt16 Year;
+    sal_Int16 Year;
 
 } oslDateTime;
 
diff --git a/oox/source/docprop/docprophandler.cxx 
b/oox/source/docprop/docprophandler.cxx
index 92a7d49..467151d 100644
--- a/oox/source/docprop/docprophandler.cxx
+++ b/oox/source/docprop/docprophandler.cxx
@@ -98,7 +98,7 @@ util::DateTime OOXMLDocPropHandler::GetDateTimeFromW3CDTF( 
const OUString& aChar
     sal_Int32 nLen = aChars.getLength();
     if ( nLen >= 4 )
     {
-        aOslDTime.Year = (sal_uInt16)aChars.copy( 0, 4 ).toInt32();
+        aOslDTime.Year = (sal_Int16)aChars.copy( 0, 4 ).toInt32();
 
         if ( nLen >= 7 && aChars.getStr()[4] == (sal_Unicode)'-' )
         {
diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c
index b71dd7d..d038f46 100644
--- a/sal/osl/unx/time.c
+++ b/sal/osl/unx/time.c
@@ -143,10 +143,7 @@ sal_Bool SAL_CALL osl_getTimeValueFromDateTime( 
oslDateTime* pDateTime, TimeValu
     else
         return sal_False;
 
-    if ( pDateTime->Year >= 1900 )
-        aTime.tm_year = pDateTime->Year - 1900;
-    else
-        return sal_False;
+    aTime.tm_year = pDateTime->Year - 1900;
 
     aTime.tm_isdst = -1;
     aTime.tm_wday  = 0;
diff --git a/ucb/source/ucp/webdav-neon/DateTimeHelper.cxx 
b/ucb/source/ucp/webdav-neon/DateTimeHelper.cxx
index 4bf2ea8..ce99c2d 100644
--- a/ucb/source/ucp/webdav-neon/DateTimeHelper.cxx
+++ b/ucb/source/ucp/webdav-neon/DateTimeHelper.cxx
@@ -89,7 +89,7 @@ bool DateTimeHelper::ISO8601_To_DateTime (const OUString& s,
     aDateTime.Day         = sal::static_int_cast< sal_uInt16 >(day); // 1-31
     aDateTime.DayOfWeek   = 0;          // 0-6, 0 = Sunday
     aDateTime.Month       = sal::static_int_cast< sal_uInt16 >(month); // 1-12
-    aDateTime.Year        = sal::static_int_cast< sal_uInt16 >(year);
+    aDateTime.Year        = sal::static_int_cast< sal_Int16  >(year);
 
     TimeValue aTimeValue;
     if ( osl_getTimeValueFromDateTime( &aDateTime, &aTimeValue ) )
@@ -206,7 +206,7 @@ bool DateTimeHelper::RFC2068_To_DateTime (const OUString& s,
             aDateTime.DayOfWeek   = 0; //dayofweek;  // 0-6, 0 = Sunday
             aDateTime.Month       = sal::static_int_cast< sal_uInt16 >(month);
                 // 1-12
-            aDateTime.Year        = sal::static_int_cast< sal_uInt16 >(year);
+            aDateTime.Year        = sal::static_int_cast< sal_Int16  >(year);
 
             TimeValue aTimeValue;
             if ( osl_getTimeValueFromDateTime( &aDateTime,
diff --git a/ucb/source/ucp/webdav/DateTimeHelper.cxx 
b/ucb/source/ucp/webdav/DateTimeHelper.cxx
index c4ccbca..7ca9a3d 100644
--- a/ucb/source/ucp/webdav/DateTimeHelper.cxx
+++ b/ucb/source/ucp/webdav/DateTimeHelper.cxx
@@ -79,7 +79,7 @@ bool DateTimeHelper::ISO8601_To_DateTime (const OUString& s,
     aDateTime.Day         = sal::static_int_cast< sal_uInt16 >(day); // 1-31
     aDateTime.DayOfWeek   = 0;          // 0-6, 0 = Sunday
     aDateTime.Month       = sal::static_int_cast< sal_uInt16 >(month); // 1-12
-    aDateTime.Year        = sal::static_int_cast< sal_uInt16 >(year);
+    aDateTime.Year        = sal::static_int_cast< sal_Int16  >(year);
 
     TimeValue aTimeValue;
     if ( osl_getTimeValueFromDateTime( &aDateTime, &aTimeValue ) )
@@ -218,7 +218,7 @@ bool DateTimeHelper::RFC2068_To_DateTime (const OUString& s,
             aDateTime.DayOfWeek   = 0; //dayofweek;  // 0-6, 0 = Sunday
             aDateTime.Month       = sal::static_int_cast< sal_uInt16 >(month);
                 // 1-12
-            aDateTime.Year        = sal::static_int_cast< sal_uInt16 >(year);
+            aDateTime.Year        = sal::static_int_cast< sal_Int16  >(year);
 
             TimeValue aTimeValue;
             if ( osl_getTimeValueFromDateTime( &aDateTime,
commit e436c491887636aee32a019ea3ecc26c63ecd899
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Fri Jul 5 12:00:18 2013 +0200

    fixup nanosecond precision
    
    This was broken before...
    Time used to take centiseconds, so the nanoseconds should have been 
*divided* by 10^7 for conversion.
    Now Time takes straight nanoseconds, so no conversion necessary.
    
    Change-Id: Ibac3eeca7020c5d8c5ff4be3e7617fac26ee8180

diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 1e49c1d..1ee75dc 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -3095,7 +3095,7 @@ RTLFUNC(FileDateTime)
             oslDateTime aDT;
             osl_getDateTimeFromTimeValue( &aTimeVal, &aDT );
 
-            aTime = Time( aDT.Hours, aDT.Minutes, aDT.Seconds, 
10000000*aDT.NanoSeconds );
+            aTime = Time( aDT.Hours, aDT.Minutes, aDT.Seconds, aDT.NanoSeconds 
);
             aDate = Date( aDT.Day, aDT.Month, aDT.Year );
         }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to