From: <svn...@op...> - 2009-04-23 08:06:08
|
Author: henrik Date: Thu Apr 23 10:06:02 2009 New Revision: 5625 URL: http://www.opensync.org/changeset/5625 Log: Fixed portability issues (for Ming/Windows): - do not include libgen.h to get basename; instead use g_basename - use g_strdup instead of strdup - use __VA_ARGS__ in varadic macro definitions - define __func__ and MAX_PATH Modified: plugins/mozilla-sync/trunk/src/calendar-event.cpp plugins/mozilla-sync/trunk/src/mozilla-calendar.cpp plugins/mozilla-sync/trunk/src/mozilla-config.cpp plugins/mozilla-sync/trunk/src/mozilla-sync-utils.h plugins/mozilla-sync/trunk/src/mozilla-sync.cpp plugins/mozilla-sync/trunk/src/mozilla-xpcom.cpp plugins/mozilla-sync/trunk/src/nsProfileDirServiceProvider.cpp Modified: plugins/mozilla-sync/trunk/src/calendar-event.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/calendar-event.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/calendar-event.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -28,7 +28,6 @@ ================================================================ */ - #include <glib.h> #include <libxml/encoding.h> @@ -654,7 +653,6 @@ void (*pLogFunction)(int level, bool sensitive, const char* szFile, int iLine, const char *szFunc, const char* szFormat, ...)) { nsresult rv; - PRUint32 len; LOG(10, "Getting ICS for event [%s]", szKey); @@ -790,6 +788,6 @@ nsEmbedCString asICS; rv=icsCalendar->SerializeToICS(asICS); MOZ_ERROR_CHECK_FALSE(rv, "SerializeToICS"); - *pSzICS=strdup(asICS.get()); + *pSzICS=g_strdup(asICS.get()); if (*pSzICS) return TRUE; else return FALSE; } Modified: plugins/mozilla-sync/trunk/src/mozilla-calendar.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/mozilla-calendar.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/mozilla-calendar.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -351,9 +351,11 @@ { PRUint32 len; - *pSzKey=myStatement->IsNull(0) ? strdup("") : strdup(myStatement->AsSharedUTF8String(0, &len)); - *pSzHash=myStatement->IsNull(1) ? strdup("") : strdup(myStatement->AsSharedUTF8String(1, &len)); - *pSzTitle=myStatement->IsNull(2 ) ? strdup("") : strdup(myStatement->AsSharedUTF8String(2, &len)); + *pSzKey=myStatement->IsNull(0) ? g_strdup("") : g_strdup(myStatement->AsSharedUTF8String(0, &len)); + *pSzHash=myStatement->IsNull(1) ? g_strdup("") : g_strdup(myStatement->AsSharedUTF8String(1, &len)); + *pSzTitle=myStatement->IsNull(2 ) ? g_strdup("") : g_strdup(myStatement->AsSharedUTF8String(2, &len)); + + return TRUE; } // ------------------------------------------------------------ @@ -427,7 +429,7 @@ const char *sEventStartTz = statement->AsSharedUTF8String(3, &len); const char *sC = statement->AsSharedUTF8String(4, &len); LOG(10, "Event id=[%s] title=[%s] start=[%s;%s] cal_id=[%s]", sId, sTitle, ss, sEventStartTz, sC); - bool f=statement->IsNull(4); + PRBool f=statement->IsNull(4); LOG(10, "NULL %d", f); } return TRUE; @@ -506,4 +508,6 @@ rv=statement->Execute(); MOZ_ERROR_CHECK_FALSE(rv, "Execute"); GFREE(szDelete); + + return TRUE; } Modified: plugins/mozilla-sync/trunk/src/mozilla-config.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/mozilla-config.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/mozilla-config.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -145,7 +145,7 @@ fProfileDir=find_default_profile_directory(&szProfileDir, pSzError, pLogFunction); if (!fProfileDir) ERROR_MSG("Advanced option profile-directory was not set, and could not be determined automatically"); - pMozillaConfig->szProfileDirectory=strdup(szProfileDir); + pMozillaConfig->szProfileDirectory=g_strdup(szProfileDir); pMozillaConfig->thunderbirdAddressbook=FALSE; pMozillaConfig->szAddressbookFile=NULL; @@ -156,11 +156,11 @@ // @todo Figure out when to unref pOSyncPluginResource pOSyncPluginResource=osync_plugin_config_find_active_resource(pOSyncPluginConfig, "contact"); - if(pOSyncPluginResource) pMozillaConfig->szAddressbookFile=strdup(osync_plugin_resource_get_name(pOSyncPluginResource)); + if(pOSyncPluginResource) pMozillaConfig->szAddressbookFile=g_strdup(osync_plugin_resource_get_name(pOSyncPluginResource)); // Do not do osync_plugin_resource_unref(pOSyncPluginResource) - it will be accessed later. But why? pOSyncPluginResource=osync_plugin_config_find_active_resource(pOSyncPluginConfig, "event"); - if(pOSyncPluginResource) pMozillaConfig->szCalendarId=strdup(osync_plugin_resource_get_name(pOSyncPluginResource)); + if(pOSyncPluginResource) pMozillaConfig->szCalendarId=g_strdup(osync_plugin_resource_get_name(pOSyncPluginResource)); // Do not do osync_plugin_resource_unref(pOSyncPluginResource) - it will be accessed later. But why? if ( (pMozillaConfig->szAddressbookFile==NULL) && (pMozillaConfig->szCalendarId==NULL) ) Modified: plugins/mozilla-sync/trunk/src/mozilla-sync-utils.h ============================================================================== --- plugins/mozilla-sync/trunk/src/mozilla-sync-utils.h Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/mozilla-sync-utils.h Thu Apr 23 10:06:02 2009 (r5625) @@ -27,74 +27,77 @@ ================================================================ */ - -// On FreeBSD and Windows/MinGW we need libgen to define "basename" which is used in LOG - -#if defined(__FreeBSD__) || defined(WIN32) -#include <libgen.h> +#ifdef _WIN32 +#ifndef __func__ +#define __func__ __FUNCTION__ +#endif +#ifndef PATH_MAX +#define PATH_MAX _MAX_PATH +#endif #endif - /** Log a message using the @c pLogFunction passed **/ -#define LOG(level, message ...) pLogFunction(level, false, basename(__FILE__), __LINE__, __func__, message); +#define LOG(level, message, ...) \ + pLogFunction(level, false, g_basename(__FILE__), __LINE__, __func__, message,## __VA_ARGS__); /** Log a sensitive (private) message using the @c pLogFunction passed **/ -#define LOG_SENSITIVE(level, message ...) pLogFunction(level, true, basename(__FILE__), __LINE__, __func__, message); +#define LOG_SENSITIVE(level, message, ...) \ + pLogFunction(level, true, g_basename(__FILE__), __LINE__, __func__, message,## __VA_ARGS__); /** Create error message in the @c pSzError passed, and return **/ -#define ERROR_MSG(message ...) { \ - char *__szMsg=g_strdup_printf(message); \ - *pSzError=g_strdup_printf("%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szMsg); return FALSE; } +#define ERROR_MSG(message, ...) { \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + *pSzError=g_strdup_printf("%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg); return FALSE; } /** Check if mozilla returned an error code. If so, create error message in the @c pSzError passed, and return NULL **/ #define MOZ_ERROR_CHECK(rv, str) \ { if (NS_FAILED(rv)) \ { *pSzError=g_strdup_printf( \ - "%s(%d)%s: [%s] returned [0x0%x]", basename(__FILE__), __LINE__, __func__, str, rv ); return NULL; } } + "%s(%d)%s: [%s] returned [0x0%x]", g_basename(__FILE__), __LINE__, __func__, str, rv ); return NULL; } } /** Check if mozilla returned an error code. If so, create error message in the @c pSzError passed, and return FALSE **/ #define MOZ_ERROR_CHECK_FALSE(rv, str) \ { if (NS_FAILED(rv)) \ { *pSzError=g_strdup_printf( \ - "%s(%d)%s: [%s] returned [0x0%x]", basename(__FILE__), __LINE__, __func__, str, rv ); return FALSE; } } + "%s(%d)%s: [%s] returned [0x0%x]", g_basename(__FILE__), __LINE__, __func__, str, rv ); return FALSE; } } /** Check if pointer is NULL. If so, create error message in the @c pSzError passed, and return NULL **/ #define NULL_ERROR_CHECK(ptr, str) \ { if (!ptr) \ { *pSzError=g_strdup_printf( \ - "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, str); return NULL; } } + "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, str); return NULL; } } /** Check if RC is less than zero. If so, create error message in the @c pSzError passed, and return NULL **/ -#define RC_ERROR_CHECK(rc, str ...) \ +#define RC_ERROR_CHECK(rc, str, ...) \ { if (rc<0) \ - { char *__szMsg=g_strdup_printf(str); \ + { char *__szMsg=g_strdup_printf(str,## __VA_ARGS__); \ *pSzError=g_strdup_printf( \ "%s(%d): %s", __func__, __LINE__, __szMsg); return NULL; } } // http://www.sqlite.org/capi3.html -#define SQL_ERROR_CHECK_FALSE(PCONN, MESSAGE ...) { \ - char *__szMsg=g_strdup_printf(MESSAGE); \ +#define SQL_ERROR_CHECK_FALSE(PCONN, MESSAGE, ...) { \ + char *__szMsg=g_strdup_printf(MESSAGE,## __VA_ARGS__); \ PRInt32 __lastError; \ PCONN->GetLastError(&__lastError); \ if (__lastError==101) { \ - *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s]: SQL statement returned no rows", basename(__FILE__), __LINE__, __func__, __szMsg); \ + *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s]: SQL statement returned no rows", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ return FALSE; } \ if ( (__lastError!=0) && (__lastError!=100) ) { \ nsEmbedCString __acsError; \ pConn->GetLastErrorString(__acsError); \ - *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s] %d: %s", basename(__FILE__), __LINE__, __func__, __szMsg, __lastError, __acsError.get());\ + *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s] %d: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg, __lastError, __acsError.get());\ return FALSE; } \ }; -#define SQL_ERROR_CHECK_NOROWSOK_FALSE(PCONN, MESSAGE ...) { \ - char *__szMsg=g_strdup_printf(MESSAGE); \ +#define SQL_ERROR_CHECK_NOROWSOK_FALSE(PCONN, MESSAGE, ...) { \ + char *__szMsg=g_strdup_printf(MESSAGE,## __VA_ARGS__); \ PRInt32 __lastError; \ PCONN->GetLastError(&__lastError); \ if ( (__lastError!=0) && (__lastError!=100) ) { \ nsEmbedCString __acsError; \ pConn->GetLastErrorString(__acsError); \ - *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s] %d: %s", basename(__FILE__), __LINE__, __func__, __szMsg, __lastError, __acsError.get());\ + *pSzError=g_strdup_printf("%s(%d)%s: SQL error in [%s] %d: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg, __lastError, __acsError.get());\ return FALSE; } \ }; Modified: plugins/mozilla-sync/trunk/src/mozilla-sync.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/mozilla-sync.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/mozilla-sync.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -82,10 +82,10 @@ #include "mozilla-xpcom.h" #include "mozilla-sync.h" - -// On FreeBSD and Windows/MinGW we need libgen to define "basename" which is used in LOG -#if defined(__FreeBSD__) || defined(WIN32) -#include <libgen.h> +#ifdef _WIN32 +#ifndef __func__ +#define __func__ __FUNCTION__ +#endif #endif #define LOGLEVEL 10000 @@ -93,60 +93,60 @@ /** Log a message using the @c pLogFunction passed **/ -#define ERR_PRINTF(args ...) fprintf(stderr, args); +#define ERR_PRINTF(args, ...) fprintf(stderr, args,## __VA_ARGS__); -#define LOG(level, message ...) { \ +#define LOG(level, message, ...) { \ if (level<=LOGLEVEL) { \ - char *__szMsg=g_strdup_printf(message); \ - osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szMsg); \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ g_free(__szMsg); } } -#define LOG_SENSITIVE(level, message ...) { \ +#define LOG_SENSITIVE(level, message, ...) { \ if (level<=LOGLEVEL) { \ - char *__szMsg=g_strdup_printf(message); \ - osync_trace(TRACE_SENSITIVE, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szMsg); \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + osync_trace(TRACE_SENSITIVE, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ g_free(__szMsg); } } -#define LOG_ENTRY(level, message ...) { \ +#define LOG_ENTRY(level, message, ...) { \ if (level<=LOGLEVEL) { \ - char *__szMsg=g_strdup_printf(message); \ - osync_trace(TRACE_ENTRY, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szMsg); \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + osync_trace(TRACE_ENTRY, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ g_free(__szMsg); } } -#define LOG_EXIT(level, message ...) { \ +#define LOG_EXIT(level, message, ...) { \ if (level<=LOGLEVEL) { \ - char *__szMsg=g_strdup_printf(message); \ - osync_trace(TRACE_EXIT, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szMsg); \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + osync_trace(TRACE_EXIT, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ g_free(__szMsg); } } #define LOG_EXIT_ERROR_SZ(level, message) { \ - osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, message); \ + osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, message); \ osync_error_set(ppOSyncError, OSYNC_ERROR_GENERIC, message); \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, message); } + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, message); } #define LOG_EXIT_ERROR_OSYNC(level, ppOSyncError) { \ const char *__szOErr=""; \ if (ppOSyncError) __szOErr=osync_error_print_stack(ppOSyncError); \ - osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szOErr); \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, __szOErr); } + osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szOErr); \ + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, __szOErr); } #define LOG_EXIT_ERROR_OSYNC_SZ(level, ppOSyncError, message) { \ const char *__szOErr=""; \ if (ppOSyncError) __szOErr=osync_error_print_stack(ppOSyncError); \ - osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s: %s", basename(__FILE__), __LINE__, __func__, message, __szOErr); \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, __szOErr); } + osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s: %s", g_basename(__FILE__), __LINE__, __func__, message, __szOErr); \ + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, __szOErr); } #define LOG_EXIT_REPORT_ERROR_SZ(level, context, message) { \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, message); \ + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, message); \ OSyncError *__pError = NULL; \ osync_error_set(&__pError, OSYNC_ERROR_GENERIC, message); \ osync_context_report_osyncerror(context, __pError); \ - osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, message); } + osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, message); } -#define LOG_EXIT_REPORT_ERROR_MSG(level, context, message ...) { \ +#define LOG_EXIT_REPORT_ERROR_MSG(level, context, message, ...) { \ if (level<=LOGLEVEL) { \ - char *__szMsg=g_strdup_printf(message); \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, __szMsg); \ + char *__szMsg=g_strdup_printf(message,## __VA_ARGS__); \ + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, __szMsg); \ OSyncError *__pError = NULL; \ osync_error_set(&__pError, OSYNC_ERROR_GENERIC, __szMsg); \ osync_context_report_osyncerror(context, __pError); \ @@ -157,9 +157,9 @@ #define LOG_EXIT_REPORT_ERROR_OSYNC(level, context, pError) { \ const char *__szOErr=""; \ if (pError) __szOErr=osync_error_print_stack(&pError); \ - ERR_PRINTF("%s(%d)%s: ****** %s\n", basename(__FILE__), __LINE__, __func__, __szOErr); \ + ERR_PRINTF("%s(%d)%s: ****** %s\n", g_basename(__FILE__), __LINE__, __func__, __szOErr); \ osync_context_report_osyncerror(context, pError); \ - osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", basename(__FILE__), __LINE__, __func__, __szOErr); } + osync_trace(TRACE_EXIT_ERROR, "%s(%d)%s: %s", g_basename(__FILE__), __LINE__, __func__, __szOErr); } #define GFREE(p) { if (p) g_free(p); } @@ -185,10 +185,10 @@ #ifdef WIN32 char *_szFile=g_strdup(szFile); - osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", basename(_szFile), iLine, szFunc, __szMsg); + osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", g_basename(_szFile), iLine, szFunc, __szMsg); g_free(_szFile); #else - osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", basename(szFile), iLine, szFunc, __szMsg); + osync_trace(TRACE_INTERNAL, "%s(%d)%s: %s", g_basename(szFile), iLine, szFunc, __szMsg); #endif g_free(__szMsg); Modified: plugins/mozilla-sync/trunk/src/mozilla-xpcom.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/mozilla-xpcom.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/mozilla-xpcom.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -176,7 +176,7 @@ char szGreDirectory[PATH_MAX]; #ifdef WIN32 - szGreDirectory=""; + szGreDirectory[0]='\0'; // TODO TODO TODO #else void* mod=dlopen("libxpcom.so", RTLD_LAZY); @@ -364,7 +364,7 @@ MOZ_ERROR_CHECK_FALSE(rv, "do_QueryInterface for nsISupportsID"); char* s; rv=cs->ToString(&s); - g_tree_insert(pGT, strdup(s), NULL); + g_tree_insert(pGT, g_strdup(s), NULL); MOZ_ERROR_CHECK_FALSE(rv, "HasMoreElements"); rv=enumerator->HasMoreElements(&f); MOZ_ERROR_CHECK_FALSE(rv, "HasMoreElements"); Modified: plugins/mozilla-sync/trunk/src/nsProfileDirServiceProvider.cpp ============================================================================== --- plugins/mozilla-sync/trunk/src/nsProfileDirServiceProvider.cpp Mon Apr 20 19:11:01 2009 (r5624) +++ plugins/mozilla-sync/trunk/src/nsProfileDirServiceProvider.cpp Thu Apr 23 10:06:02 2009 (r5625) @@ -60,7 +60,7 @@ #define LOG(level, message ...) \ { printf("nsProfileDirServiceProvider::%s(%d): ", __func__, __LINE__); printf(message); printf("\n"); } #else -#define LOG(level, message ...) +#define LOG(level, message, ...) #endif #ifdef XPCOM_GLUE |