diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/inc/sal/types.h ooo_SRC680_m235_src.sb81/sal/inc/sal/types.h --- ooo_SRC680_m235_src.orig/sal/inc/sal/types.h 2007-09-20 17:08:36.000000000 +0200 +++ ooo_SRC680_m235_src.sb81/sal/inc/sal/types.h 2007-11-02 18:00:25.000000000 +0100 @@ -80,9 +80,17 @@ #if SAL_TYPES_SIZEOFLONG == 4 typedef signed long sal_Int32; typedef unsigned long sal_uInt32; + #define SAL_PRIdINT32 "ld" + #define SAL_PRIuUINT32 "lu" + #define SAL_PRIxUINT32 "lx" + #define SAL_PRIXUINT32 "lX" #elif SAL_TYPES_SIZEOFINT == 4 typedef signed int sal_Int32; typedef unsigned int sal_uInt32; + #define SAL_PRIdINT32 "d" + #define SAL_PRIuUINT32 "u" + #define SAL_PRIxUINT32 "x" + #define SAL_PRIXUINT32 "X" #else #error "Could not find 32-bit type, add support for your architecture" #endif @@ -94,6 +102,11 @@ /* The following are macros that will add the 64 bit constant suffix. */ #define SAL_CONST_INT64(x) x##i64 #define SAL_CONST_UINT64(x) x##ui64 + + #define SAL_PRIdINT64 "I64d" + #define SAL_PRIuUINT64 "I64u" + #define SAL_PRIxUINT64 "I64x" + #define SAL_PRIXUINT64 "I64X" #elif defined(__SUNPRO_CC) || defined(__SUNPRO_C) || defined (__GNUC__) || defined(__hpux) || defined (sgi) #if SAL_TYPES_SIZEOFLONG == 8 typedef signed long int sal_Int64; @@ -103,6 +116,11 @@ /* The following are macros that will add the 64 bit constant suffix. */ #define SAL_CONST_INT64(x) x##l #define SAL_CONST_UINT64(x) x##ul + + #define SAL_PRIdINT64 "ld" + #define SAL_PRIuUINT64 "lu" + #define SAL_PRIxUINT64 "lx" + #define SAL_PRIXUINT64 "lX" #elif SAL_TYPES_SIZEOFLONGLONG == 8 typedef signed long long sal_Int64; typedef unsigned long long sal_uInt64; @@ -111,6 +129,10 @@ #define SAL_CONST_INT64(x) x##ll #define SAL_CONST_UINT64(x) x##ull + #define SAL_PRIdINT64 "lld" + #define SAL_PRIuUINT64 "llu" + #define SAL_PRIxUINT64 "llx" + #define SAL_PRIXUINT64 "llX" #else #error "Could not find 64-bit type, add support for your architecture" #endif @@ -151,15 +173,33 @@ #error "Please make sure SAL_TYPES_SIZEOFPOINTER is defined for your architecture/compiler" #endif +/* printf-style conversion specification length modifiers for size_t and + ptrdiff_t (most platforms support C99, MSC has its own extension) */ +#if defined _MSC_VER + #define SAL_PRI_SIZET "I" + #define SAL_PRI_PTRDIFFT "I" +#else + #define SAL_PRI_SIZET "z" + #define SAL_PRI_PTRDIFFT "t" +#endif + /* sal_IntPtr, sal_uIntPtr are integer types designed to hold pointers so that any valid * pointer to void can be converted to this type and back to a pointer to void and the * result will compare to the original pointer */ #if SAL_TYPES_SIZEOFPOINTER == 4 typedef sal_Int32 sal_IntPtr; typedef sal_uInt32 sal_uIntPtr; + #define SAL_PRIdINTPTR SAL_PRIdINT32 + #define SAL_PRIuUINTPTR SAL_PRIuUINT32 + #define SAL_PRIxUINTPTR SAL_PRIxUINT32 + #define SAL_PRIXUINTPTR SAL_PRIXUINT32 #elif SAL_TYPES_SIZEOFPOINTER == 8 typedef sal_Int64 sal_IntPtr; typedef sal_uInt64 sal_uIntPtr; + #define SAL_PRIdINTPTR SAL_PRIdINT64 + #define SAL_PRIuUINTPTR SAL_PRIuUINT64 + #define SAL_PRIxUINTPTR SAL_PRIxUINT64 + #define SAL_PRIXUINTPTR SAL_PRIXUINT64 #else #error "Please make sure SAL_TYPES_SIZEOFPOINTER is defined for your architecture/compiler" #endif diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/osl/unx/diagnose.c ooo_SRC680_m235_src.sb81/sal/osl/unx/diagnose.c --- ooo_SRC680_m235_src.orig/sal/osl/unx/diagnose.c 2007-01-18 15:17:30.000000000 +0100 +++ ooo_SRC680_m235_src.sb81/sal/osl/unx/diagnose.c 2007-11-02 18:00:25.000000000 +0100 @@ -120,7 +120,7 @@ offset = (ptrdiff_t)(pc); snprintf (szMessage, sizeof(szMessage), - "Backtrace: [%d] %s: %s+0x%x\n", + "Backtrace: [%d] %s: %s+0x%" SAL_PRI_PTRDIFFT "x\n", depth, fname ? fname : "", sname ? sname : "???", @@ -238,13 +238,13 @@ if (pszMessage != 0) { snprintf(szMessage, sizeof(szMessage), - "Error: File %s, Line %lu: %s\n", + "Error: File %s, Line %" SAL_PRIdINT32 ": %s\n", pszFileName, nLine, pszMessage); } else { snprintf(szMessage, sizeof(szMessage), - "Error: File %s, Line %lu\n", + "Error: File %s, Line %" SAL_PRIdINT32 "\n", pszFileName, nLine); } diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/osl/unx/signal.c ooo_SRC680_m235_src.sb81/sal/osl/unx/signal.c --- ooo_SRC680_m235_src.orig/sal/osl/unx/signal.c 2007-08-02 16:22:51.000000000 +0200 +++ ooo_SRC680_m235_src.sb81/sal/osl/unx/signal.c 2007-11-02 18:00:25.000000000 +0100 @@ -507,12 +507,12 @@ { Dl_info dl_info; - fprintf( stackout, "0x%x:", - (unsigned int)stackframes[iFrame] ); + fprintf( stackout, "0x%" SAL_PRIxUINTPTR ":", + SAL_INT_CAST(sal_uIntPtr, stackframes[iFrame]) ); - fprintf( xmlout, " +#include // C99 snprintf not necessarily in +#include // wntmsci10 does not know std::strcmp + +#include "cppunit/simpleheader.hxx" +#include "sal/types.h" + +namespace { + +template< typename T > void testPrintf( + char const * result, char const * format, T argument) +{ + std::size_t const bufsize = 1000; + char buf[bufsize]; + int n = snprintf(buf, bufsize, format, argument); + CPPUNIT_ASSERT(n >= 0 && sal::static_int_cast< unsigned int >(n) < bufsize); + CPPUNIT_ASSERT(strcmp(buf, result) == 0); +} + +class Test: public CppUnit::TestFixture { +public: + void test(); + + CPPUNIT_TEST_SUITE(Test); + CPPUNIT_TEST(test); + CPPUNIT_TEST_SUITE_END(); +}; + +void Test::test() { + testPrintf("-2147483648", "%" SAL_PRIdINT32, SAL_MIN_INT32); + testPrintf("4294967295", "%" SAL_PRIuUINT32, SAL_MAX_UINT32); + testPrintf("ffffffff", "%" SAL_PRIxUINT32, SAL_MAX_UINT32); + testPrintf("FFFFFFFF", "%" SAL_PRIXUINT32, SAL_MAX_UINT32); + testPrintf("-9223372036854775808", "%" SAL_PRIdINT64, SAL_MIN_INT64); + testPrintf("18446744073709551615", "%" SAL_PRIuUINT64, SAL_MAX_UINT64); + testPrintf("ffffffffffffffff", "%" SAL_PRIxUINT64, SAL_MAX_UINT64); + testPrintf("FFFFFFFFFFFFFFFF", "%" SAL_PRIXUINT64, SAL_MAX_UINT64); + testPrintf("123", "%" SAL_PRI_SIZET "u", static_cast< std::size_t >(123)); + testPrintf( + "-123", "%" SAL_PRI_PTRDIFFT "d", static_cast< std::ptrdiff_t >(-123)); + testPrintf("-123", "%" SAL_PRIdINTPTR, static_cast< sal_IntPtr >(-123)); + testPrintf("123", "%" SAL_PRIuUINTPTR, static_cast< sal_uIntPtr >(123)); + testPrintf("abc", "%" SAL_PRIxUINTPTR, static_cast< sal_uIntPtr >(0xabc)); + testPrintf("ABC", "%" SAL_PRIXUINTPTR, static_cast< sal_uIntPtr >(0xabc)); +} + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "alltests"); + +} + +NOADDITIONAL; diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/qa/sal/version.map ooo_SRC680_m235_src.sb81/sal/qa/sal/version.map --- ooo_SRC680_m235_src.orig/sal/qa/sal/version.map 1970-01-01 01:00:00.000000000 +0100 +++ ooo_SRC680_m235_src.sb81/sal/qa/sal/version.map 2007-11-02 18:03:37.000000000 +0100 @@ -0,0 +1,42 @@ +#************************************************************************* +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile$ +# +# $Revision$ +# +# last change: $Author$ $Date$ +# +# The Contents of this file are made available subject to +# the terms of GNU Lesser General Public License Version 2.1. +# +# +# GNU Lesser General Public License Version 2.1 +# ============================================= +# Copyright 2007 by Sun Microsystems, Inc. +# 901 San Antonio Road, Palo Alto, CA 94303, USA +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1, as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +#************************************************************************* + +UDK_3_0_0 { + global: + registerAllTestFunction; + + local: + *; +}; diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/rtl/source/alloc_cache.c ooo_SRC680_m235_src.sb81/sal/rtl/source/alloc_cache.c --- ooo_SRC680_m235_src.orig/sal/rtl/source/alloc_cache.c 2007-09-20 17:24:07.000000000 +0200 +++ ooo_SRC680_m235_src.sb81/sal/rtl/source/alloc_cache.c 2007-11-02 18:00:25.000000000 +0100 @@ -1544,7 +1544,7 @@ #endif /* SAL_UNX || SAL_W32 */ rtl_cache_wsupdate_all (void * arg) { - unsigned int seconds = (unsigned int)(arg); + unsigned int seconds = (unsigned int)SAL_INT_CAST(sal_uIntPtr, arg); RTL_MEMORY_LOCK_ACQUIRE(&(g_cache_list.m_lock)); while (!g_cache_list.m_update_done) diff -x CVS -x wntmsci3 -x wntmsci7 -x wntmsci8 -urN ooo_SRC680_m235_src.orig/sal/rtl/source/logfile.cxx ooo_SRC680_m235_src.sb81/sal/rtl/source/logfile.cxx --- ooo_SRC680_m235_src.orig/sal/rtl/source/logfile.cxx 2006-09-17 11:05:04.000000000 +0200 +++ ooo_SRC680_m235_src.sb81/sal/rtl/source/logfile.cxx 2007-11-02 18:00:26.000000000 +0100 @@ -96,7 +96,7 @@ if( g_buffer ) { sal_Int64 nWritten, nConverted = - sprintf( g_buffer, "closing log file at %06lu", osl_getGlobalTimer() ); + sprintf( g_buffer, "closing log file at %06" SAL_PRIuUINT32, osl_getGlobalTimer() ); if( nConverted > 0 ) osl_writeFile( g_aFile, g_buffer, nConverted, (sal_uInt64 *)&nWritten ); osl_closeFile( g_aFile ); @@ -188,7 +188,7 @@ nConverted = (sal_Int64 ) sprintf ( g_buffer, "opening log file %f seconds past January 1st 1970\n" - "corresponding to %lu ms after timer start\n", + "corresponding to %" SAL_PRIuUINT32 " ms after timer start\n", aCurrentTime.Seconds + 1e-9 * aCurrentTime.Nanosec, osl_getGlobalTimer()); @@ -199,7 +199,7 @@ } } - nConverted = sprintf (g_buffer, "Process id is %lu\n", aProcessId); + nConverted = sprintf (g_buffer, "Process id is %" SAL_PRIuUINT32 "\n", aProcessId); if( nConverted ) { sal_Int64 nWritten; @@ -247,7 +247,7 @@ { MutexGuard g(getLogMutex()); int n1 = snprintf( - g_buffer, g_BUFFERSIZE, "%06lu %lu ", time, threadId); + g_buffer, g_BUFFERSIZE, "%06" SAL_PRIuUINT32 " %" SAL_PRIuUINT32 " ", time, threadId); if (n1 >= 0) { sal_uInt64 n2; osl_writeFile(