You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(56) |
Apr
(109) |
May
(15) |
Jun
(3) |
Jul
(37) |
Aug
(96) |
Sep
(40) |
Oct
(4) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(47) |
Feb
(30) |
Mar
(102) |
Apr
(120) |
May
(68) |
Jun
(54) |
Jul
(53) |
Aug
(122) |
Sep
(190) |
Oct
(71) |
Nov
(85) |
Dec
(108) |
2007 |
Jan
(72) |
Feb
(190) |
Mar
(53) |
Apr
(101) |
May
(145) |
Jun
(148) |
Jul
(167) |
Aug
(143) |
Sep
(23) |
Oct
(198) |
Nov
(223) |
Dec
(195) |
2008 |
Jan
(100) |
Feb
(129) |
Mar
(79) |
Apr
(77) |
May
(34) |
Jun
(95) |
Jul
(112) |
Aug
(160) |
Sep
(82) |
Oct
(124) |
Nov
(199) |
Dec
(355) |
2009 |
Jan
(436) |
Feb
(89) |
Mar
(298) |
Apr
(189) |
May
(33) |
Jun
(88) |
Jul
(105) |
Aug
(44) |
Sep
(181) |
Oct
(87) |
Nov
(75) |
Dec
(1) |
2010 |
Jan
(63) |
Feb
(21) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(26) |
Aug
(37) |
Sep
(26) |
Oct
(15) |
Nov
(13) |
Dec
|
From: <svn...@op...> - 2009-09-18 07:22:28
|
Author: bricks Date: Fri Sep 18 09:22:14 2009 New Revision: 5801 URL: http://www.opensync.org/changeset/5801 Log: Added OSyncError handling for osync_data_get_printable function in osynctool fixes #1154 modified patch from henrik Modified: osynctool/trunk/tools/osynctool.c Modified: osynctool/trunk/tools/osynctool.c ============================================================================== --- osynctool/trunk/tools/osynctool.c Fri Sep 18 09:12:10 2009 (r5800) +++ osynctool/trunk/tools/osynctool.c Fri Sep 18 09:22:14 2009 (r5801) @@ -516,7 +516,13 @@ if (osync_change_get_changetype(change) != OSYNC_CHANGE_TYPE_UNKNOWN) { OSyncMember *member = osync_mapping_engine_change_find_member(mapping, change); OSyncData *data = osync_change_get_data(change); - char *printable = osync_data_get_printable(data); + char *printable = osync_data_get_printable(data, &error); + if ( osync_error_is_set(&error) ) { + fprintf(stderr, "Problems while acquiring printable format of data: %s\n", + osync_error_print(&error)); + osync_error_unref(&error); + return; + } printf("\nEntry %i:\nMember: %lli (%s)\nUID: %s\n%s\n", i+1, osync_member_get_id(member), osync_member_get_pluginname(member), |
From: <svn...@op...> - 2009-09-18 07:12:24
|
Author: bricks Date: Fri Sep 18 09:12:10 2009 New Revision: 5800 URL: http://www.opensync.org/changeset/5800 Log: Changes for OpenSync time api in vformat fixes #1152 thanks to henrik Modified: format-plugins/vformat/src/xmlformat-recurrence.c format-plugins/vformat/src/xmlformat-vcalendar.c Modified: format-plugins/vformat/src/xmlformat-recurrence.c ============================================================================== --- format-plugins/vformat/src/xmlformat-recurrence.c Fri Sep 18 09:08:15 2009 (r5799) +++ format-plugins/vformat/src/xmlformat-recurrence.c Fri Sep 18 09:12:10 2009 (r5800) @@ -131,13 +131,16 @@ * in the same Timezone as the host. */ + /* FIXME: For now we ignore all osync_time_* OSyncErrors */ + OSyncError *error = NULL; + if (!osync_time_isutc(duration_block)) { - struct tm *ttm = osync_time_vtime2tm(duration_block); - offset = osync_time_timezone_diff(ttm); + struct tm *ttm = osync_time_vtime2tm(duration_block, &error); + offset = osync_time_timezone_diff(ttm, &error); g_free(ttm); } - until = osync_time_vtime2utc(duration_block, offset); + until = osync_time_vtime2utc(duration_block, offset, &error); } else { until = g_strdup(duration_block); } @@ -313,10 +316,13 @@ * in the same Timezone as the host. */ - struct tm *ttm = osync_time_vtime2tm(until_utc); - offset = osync_time_timezone_diff(ttm); + /* FIXME: For now we ignore all osync_time_* OSyncErrors */ + OSyncError *error = NULL; + + struct tm *ttm = osync_time_vtime2tm(until_utc, &error); + offset = osync_time_timezone_diff(ttm, &error); g_free(ttm); - until = osync_time_vtime2localtime(until_utc, offset); + until = osync_time_vtime2localtime(until_utc, offset, &error); return until; Modified: format-plugins/vformat/src/xmlformat-vcalendar.c ============================================================================== --- format-plugins/vformat/src/xmlformat-vcalendar.c Fri Sep 18 09:08:15 2009 (r5799) +++ format-plugins/vformat/src/xmlformat-vcalendar.c Fri Sep 18 09:12:10 2009 (r5800) @@ -317,16 +317,31 @@ return NULL; } + OSyncError *error = NULL; + duration = osync_time_alarmdu2sec(trigger); - dtstarted = osync_time_vtime2unix(dtstart, 0); + dtstarted = osync_time_vtime2unix(dtstart, 0, &error); + if (error!=NULL) { + osync_trace(TRACE_INTERNAL, "Error: Unable to convert dtstart vtime [%s]", dtstart); + return NULL; + } + dtstarted += duration; - runtime = osync_time_unix2vtime(&dtstarted); + runtime = osync_time_unix2vtime(&dtstarted, &error); + if (error!=NULL) { + osync_trace(TRACE_INTERNAL, "Error: Unable to convert runtime vtime [%s]", dtstart); + return NULL; + } if (!osync_time_isutc(dtstart)) { osync_trace(TRACE_INTERNAL, "WARNNING: timestamp is not UTC - converting reminder to localtime"); char *utc_runtime = runtime; - runtime = osync_time_vtime2localtime(utc_runtime, 0); + runtime = osync_time_vtime2localtime(utc_runtime, 0, &error); + if (error!=NULL) { + osync_trace(TRACE_INTERNAL, "Error: Unable to convert utc_runtime vtime [%s]", dtstart); + return NULL; + } g_free(utc_runtime); } |
From: <svn...@op...> - 2009-09-18 07:08:32
|
Author: bricks Date: Fri Sep 18 09:08:15 2009 New Revision: 5799 URL: http://www.opensync.org/changeset/5799 Log: Changes for OpenSync time api in xmlformat fixes #1153 thanks to henrik Modified: format-plugins/xmlformat/trunk/src/xmlformat.c Modified: format-plugins/xmlformat/trunk/src/xmlformat.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.c Fri Sep 18 09:04:03 2009 (r5798) +++ format-plugins/xmlformat/trunk/src/xmlformat.c Fri Sep 18 09:08:15 2009 (r5799) @@ -320,7 +320,7 @@ revision = osync_xmlfield_get_nth_key_value(xmlfield, 0); osync_trace(TRACE_INTERNAL, "About to convert string %s", revision); //time_t time = vformat_time_to_unix(revision); - time = osync_time_vtime2unix(revision, 0); + time = osync_time_vtime2unix(revision, 0, error); osync_trace(TRACE_EXIT, "%s: %i", __func__, time); return time; |
From: <svn...@op...> - 2009-09-18 07:04:18
|
Author: bricks Date: Fri Sep 18 09:04:03 2009 New Revision: 5798 URL: http://www.opensync.org/changeset/5798 Log: moved doxygen annotations to private header and renamed private functions to osync_time_xyz Modified: trunk/opensync/format/opensync_time.c trunk/opensync/format/opensync_time_private.h Modified: trunk/opensync/format/opensync_time.c ============================================================================== --- trunk/opensync/format/opensync_time.c Fri Sep 18 08:56:30 2009 (r5797) +++ trunk/opensync/format/opensync_time.c Fri Sep 18 09:04:03 2009 (r5798) @@ -645,7 +645,7 @@ /*****************************************************************************/ -/*! List of vcal fields which have should be converted by following +/** List of vcal fields which have should be converted by following * workaround functions. */ const char *_time_attr[] = { @@ -658,14 +658,7 @@ NULL }; -/** @brief Function converts a UTC vtime stamp to a localtime vtime stamp - * - * @param entry The whole vcal entry as GString which gets modified. - * @param field The field name which should be modified. - * @param toUTC The toggle in which direction we convert. TRUE = convert to UTC - * @param error An OSyncError struct - */ -static void _convert_time_field(GString *entry, const char *field, osync_bool toUTC, OSyncError **error) +static void osync_time_convert_time_field(GString *entry, const char *field, osync_bool toUTC, OSyncError **error) { int i, tzdiff; char *res = NULL; @@ -700,20 +693,13 @@ } } -/** @brief Functions converts timestamps of vcal in localtime or UTC. - * - * @param vcal The vcalendar which has to be converted. - * @param toUTC If TRUE conversion from localtime to UTC. - * @param error An OSyncError struct - * @return timestamp modified vcalendar - */ -char *_convert_entry(const char *vcal, osync_bool toUTC, OSyncError **error) +char *osync_time_convert_entry(const char *vcal, osync_bool toUTC, OSyncError **error) { int i = 0; GString *new_entry = g_string_new(vcal); for (i=0; _time_attr[i] != NULL; i++) - _convert_time_field(new_entry, _time_attr[i], toUTC, error); + osync_time_convert_time_field(new_entry, _time_attr[i], toUTC, error); return g_string_free(new_entry, FALSE); } @@ -721,13 +707,13 @@ char *osync_time_vcal2localtime(const char *vcal, OSyncError **error) { - return _convert_entry(vcal, FALSE, error); + return osync_time_convert_entry(vcal, FALSE, error); } char *osync_time_vcal2utc(const char *vcal, OSyncError **error) { - return _convert_entry(vcal, TRUE, error); + return osync_time_convert_entry(vcal, TRUE, error); } /*****************************************************************************/ Modified: trunk/opensync/format/opensync_time_private.h ============================================================================== --- trunk/opensync/format/opensync_time_private.h Fri Sep 18 08:56:30 2009 (r5797) +++ trunk/opensync/format/opensync_time_private.h Fri Sep 18 09:04:03 2009 (r5798) @@ -23,6 +23,8 @@ #ifndef _OPENSYNC_TIME_PRIVATE_H_ #define _OPENSYNC_TIME_PRIVATE_H_ +#include <glib.h> + /** @brief Function remove dashes from datestamp and colon * * @param timestamp The timestamp which gets cleaned @@ -30,4 +32,22 @@ */ static char *osync_time_timestamp_remove_dash(const char *timestamp); +/** @brief Functions converts timestamps of vcal in localtime or UTC. + * + * @param vcal The vcalendar which has to be converted. + * @param toUTC If TRUE conversion from localtime to UTC. + * @param error An OSyncError struct + * @return timestamp modified vcalendar + */ +char *osync_time_convert_entry(const char *vcal, osync_bool toUTC, OSyncError **error); + +/** @brief Function converts a UTC vtime stamp to a localtime vtime stamp + * + * @param entry The whole vcal entry as GString which gets modified. + * @param field The field name which should be modified. + * @param toUTC The toggle in which direction we convert. TRUE = convert to UTC + * @param error An OSyncError struct + */ +static void osync_time_convert_time_field(GString *entry, const char *field, osync_bool toUTC, OSyncError **error); + #endif /* _OPENSYNC_TIME_PRIVATE_H_ */ |
From: <svn...@op...> - 2009-09-18 06:56:49
|
Author: bricks Date: Fri Sep 18 08:56:30 2009 New Revision: 5797 URL: http://www.opensync.org/changeset/5797 Log: fixed typos Modified: trunk/opensync/format/opensync_time.c Modified: trunk/opensync/format/opensync_time.c ============================================================================== --- trunk/opensync/format/opensync_time.c Fri Sep 18 08:53:23 2009 (r5796) +++ trunk/opensync/format/opensync_time.c Fri Sep 18 08:56:30 2009 (r5797) @@ -335,8 +335,8 @@ localtime_r(×tamp, &localnow); tzdiff = osync_time_timezone_diff(&localnow, error); if (osync_error_is_set(error)) { - g_free(tm); - return NULL; + g_free(tmp); + return -1L; } // now loop, converting "local time" to time_t to utctm, |
From: <svn...@op...> - 2009-09-18 06:53:38
|
Author: bricks Date: Fri Sep 18 08:53:23 2009 New Revision: 5796 URL: http://www.opensync.org/changeset/5796 Log: Made osync time api less error prone Added checks if error is set to avoid segfaults Modified: trunk/opensync/format/opensync_time.c trunk/opensync/format/opensync_time.h Modified: trunk/opensync/format/opensync_time.c ============================================================================== --- trunk/opensync/format/opensync_time.c Fri Sep 18 00:10:46 2009 (r5795) +++ trunk/opensync/format/opensync_time.c Fri Sep 18 08:53:23 2009 (r5796) @@ -250,14 +250,31 @@ osync_trace(TRACE_ENTRY, "%s(%s, %i)", __func__, vtime, offset); utc = osync_time_vtime2utc(vtime, offset, error); + if (osync_error_is_set(error)) { + goto error; + } utime = osync_time_vtime2tm(utc, error); + if (osync_error_is_set(error)) { + goto error_free_utc; + } timestamp = osync_time_utctm2unix(utime, error); + if (osync_error_is_set(error)) { + goto error_free_utime; + } g_free(utc); g_free(utime); osync_trace(TRACE_EXIT, "%s: %lu", __func__, timestamp); return timestamp; + +error_free_utime: + g_free(utime); +error_free_utc: + g_free(utc); +error: + osync_trace(TRACE_EXIT, "%s", __func__); + return -1L; } @@ -270,7 +287,7 @@ gmtime_r(timestamp, &utc); vtime = osync_time_tm2vtime(&utc, TRUE, error); - osync_trace(TRACE_EXIT, "%s: %s", __func__, vtime); + osync_trace(TRACE_EXIT, "%s: %s", __func__, __NULLSTR(vtime)); return vtime; } @@ -306,7 +323,7 @@ struct tm *tmp = g_try_malloc0(sizeof(struct tm)); if (!tmp) { osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); - return -1; + return -1L; } struct tm localnow; struct tm check; @@ -317,6 +334,10 @@ time(×tamp); localtime_r(×tamp, &localnow); tzdiff = osync_time_timezone_diff(&localnow, error); + if (osync_error_is_set(error)) { + g_free(tm); + return NULL; + } // now loop, converting "local time" to time_t to utctm, // and adjusting until there are no differences... this @@ -398,7 +419,7 @@ } /*****************************************************************************/ - + int osync_time_timezone_diff(const struct tm *local, OSyncError **error) { struct tm utime; @@ -409,6 +430,9 @@ /* convert local time to UTC */ timestamp = osync_time_localtm2unix(local, error); + if (osync_error_is_set(error)) { + goto error; + } /* convert UTC to split tm struct in UTC */ gmtime_r(×tamp, &utime); @@ -456,6 +480,10 @@ osync_trace(TRACE_EXIT, "%s: %i", __func__, zonediff); return zonediff; +error: + osync_trace(TRACE_EXIT, "%s", __func__); + //TODO which value has to be returned in an error case? + return -1; } struct tm *osync_time_tm2utc(const struct tm *ltime, int offset, OSyncError **error) @@ -521,7 +549,7 @@ { char *utc = NULL; struct tm *tm_local = NULL, *tm_utc = NULL; - osync_trace(TRACE_ENTRY, "%s(%s)", __func__, localtime); + osync_trace(TRACE_ENTRY, "%s(%s,%i)", __func__, localtime, offset); if (strstr(localtime, "Z")) { utc = g_strdup(localtime); @@ -529,21 +557,39 @@ } tm_local = osync_time_vtime2tm(localtime, error); + if (osync_error_is_set(error)) { + goto error; + } tm_utc = osync_time_tm2utc(tm_local, offset, error); + if (osync_error_is_set(error)) { + goto error_free_local; + } utc = osync_time_tm2vtime(tm_utc, TRUE, error); + if (osync_error_is_set(error)) { + goto error_free_utc; + } g_free(tm_local); g_free(tm_utc); - end: + end: osync_trace(TRACE_EXIT, "%s: %s", __func__, utc); return utc; + +error_free_utc: + g_free(tm_utc); +error_free_local: + g_free(tm_local); +error: + osync_trace(TRACE_EXIT, "%s", __func__); + return NULL; } char *osync_time_vtime2localtime(const char* utc, int offset, OSyncError **error) { char *localtime = NULL; struct tm *tm_local = NULL, *tm_utc = NULL; + osync_trace(TRACE_ENTRY, "%s(%s,%i)", __func__, utc, offset); if (!strstr(utc, "Z")) { localtime = g_strdup(utc); @@ -551,13 +597,32 @@ } tm_utc = osync_time_vtime2tm(utc, error); + if (osync_error_is_set(error)) { + goto error; + } tm_local = osync_time_tm2localtime(tm_utc, offset, error); + if (osync_error_is_set(error)) { + goto error_free_utc; + } localtime = osync_time_tm2vtime(tm_local, FALSE, error); + if (osync_error_is_set(error)) { + goto error_free_local; + } g_free(tm_local); g_free(tm_utc); + osync_trace(TRACE_EXIT, "%s: %s", __func__, localtime); + return localtime; + +error_free_local: + g_free(tm_local); +error_free_utc: + g_free(tm_utc); +error: + osync_trace(TRACE_EXIT, "%s", __func__); + return NULL; } int osync_time_utcoffset2sec(const char *offset) @@ -598,6 +663,7 @@ * @param entry The whole vcal entry as GString which gets modified. * @param field The field name which should be modified. * @param toUTC The toggle in which direction we convert. TRUE = convert to UTC + * @param error An OSyncError struct */ static void _convert_time_field(GString *entry, const char *field, osync_bool toUTC, OSyncError **error) { @@ -620,6 +686,7 @@ // Get System offset to UTC tm_stamp = osync_time_vtime2tm(stamp->str, error); + tzdiff = osync_time_timezone_diff(tm_stamp, error); g_free(tm_stamp); @@ -633,10 +700,11 @@ } } -/*! @brief Functions converts timestamps of vcal in localtime or UTC. +/** @brief Functions converts timestamps of vcal in localtime or UTC. * * @param vcal The vcalendar which has to be converted. * @param toUTC If TRUE conversion from localtime to UTC. + * @param error An OSyncError struct * @return timestamp modified vcalendar */ char *_convert_entry(const char *vcal, osync_bool toUTC, OSyncError **error) Modified: trunk/opensync/format/opensync_time.h ============================================================================== --- trunk/opensync/format/opensync_time.h Fri Sep 18 00:10:46 2009 (r5795) +++ trunk/opensync/format/opensync_time.h Fri Sep 18 08:53:23 2009 (r5796) @@ -207,8 +207,9 @@ * * @param local The point in time when the offset have to be calculated, * specified in localtime (need for CEST/CET) - * @param error An OSyncError struct - * @returns Seconds of timezone offset + * @param error An OSyncError struct. Always check if error is set before + * using the return value + * @return Seconds of timezone offset */ OSYNC_EXPORT int osync_time_timezone_diff(const struct tm *local, OSyncError **error); |
From: <svn...@op...> - 2009-09-17 22:11:01
|
Author: dgollub Date: Fri Sep 18 00:10:46 2009 New Revision: 5795 URL: http://www.opensync.org/changeset/5795 Log: Add OSyncError** to OSyncConverterFinalize format-plugin function to make this interface future proof. And also allow reporting errors. Modified: trunk/opensync/format/opensync_converter.c trunk/opensync/format/opensync_converter.h trunk/opensync/format/opensync_format_env.c Modified: trunk/opensync/format/opensync_converter.c ============================================================================== --- trunk/opensync/format/opensync_converter.c Thu Sep 17 23:34:10 2009 (r5794) +++ trunk/opensync/format/opensync_converter.c Fri Sep 18 00:10:46 2009 (r5795) @@ -332,13 +332,14 @@ } } -void osync_converter_finalize(OSyncFormatConverter *converter) +osync_bool osync_converter_finalize(OSyncFormatConverter *converter, OSyncError **error) { osync_assert(converter); - if (converter->finalize_func) { - converter->finalize_func(converter->userdata); - } + if (!converter->finalize_func) + return TRUE; + + return converter->finalize_func(converter->userdata, error); } OSyncList *osync_converter_path_get_edges(OSyncFormatConverterPath *path) { Modified: trunk/opensync/format/opensync_converter.h ============================================================================== --- trunk/opensync/format/opensync_converter.h Thu Sep 17 23:34:10 2009 (r5794) +++ trunk/opensync/format/opensync_converter.h Fri Sep 18 00:10:46 2009 (r5795) @@ -44,7 +44,7 @@ typedef osync_bool (* OSyncFormatDetectFunc) (const char *data, int size, void *userdata); typedef osync_bool (* OSyncFormatConvertFunc) (char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error); typedef void * (* OSyncFormatConverterInitializeFunc) (const char *config, OSyncError **error); -typedef void (* OSyncFormatConverterFinalizeFunc) (void *userdata); +typedef osync_bool (* OSyncFormatConverterFinalizeFunc) (void *userdata, OSyncError **error); /** * @brief Creates a new converter @@ -199,8 +199,10 @@ * @brief Invokes finalize function of a converter * * @param converter Pointer to the converter which should be finalized + * @param error Pointer to an error struct + * @return TRUE on success, FALSE otherwise */ -OSYNC_EXPORT void osync_converter_finalize(OSyncFormatConverter *converter); +OSYNC_EXPORT osync_bool osync_converter_finalize(OSyncFormatConverter *converter, OSyncError **error); /** * @brief Returns a OSyncList of the format converters in this path Modified: trunk/opensync/format/opensync_format_env.c ============================================================================== --- trunk/opensync/format/opensync_format_env.c Thu Sep 17 23:34:10 2009 (r5794) +++ trunk/opensync/format/opensync_format_env.c Fri Sep 18 00:10:46 2009 (r5795) @@ -154,6 +154,7 @@ { OSyncFormatConverter *converter = NULL; int i,numconverters; + OSyncError *error = NULL; osync_assert(env); osync_trace(TRACE_ENTRY, "%s(%p)", __func__, env); @@ -163,7 +164,12 @@ for (i = 0; i < numconverters; i++ ) { converter = osync_format_env_nth_converter(env, i); osync_assert(converter); - osync_converter_finalize(converter); + + /* TODO: don't ignore the error */ + if (!osync_converter_finalize(converter, &error)) { + osync_error_unref(&error); + } + } osync_trace(TRACE_EXIT, "%s", __func__); } |
From: <svn...@op...> - 2009-09-17 21:34:24
|
Author: paule Date: Thu Sep 17 23:34:10 2009 New Revision: 5794 URL: http://www.opensync.org/changeset/5794 Log: API documentation: improve documentation of sink state API Modified: trunk/opensync/helper/opensync_sink_state_db.h Modified: trunk/opensync/helper/opensync_sink_state_db.h ============================================================================== --- trunk/opensync/helper/opensync_sink_state_db.h Thu Sep 17 23:10:23 2009 (r5793) +++ trunk/opensync/helper/opensync_sink_state_db.h Thu Sep 17 23:34:10 2009 (r5794) @@ -26,23 +26,28 @@ * @ingroup OSyncPublic * @defgroup OSyncSinkStateDatabaseAPI OpenSync Sink State Database * @ingroup OSyncHelper - * @brief Functions to deal with anchors + * @brief Functions to store and retrieve sink state information * - * The Anchor module stores anchors and peer states from the Member in a - * persistent database (which can be flushed by the Engine anytime!). - * This "anchor" shoudl get updated once on each sync. + * The Sink state database allows your plugin to store custom state + * information from the member in a persistent database, as a key-value pair + * (both strings) on a per-sink basis. This state information usually relates + * to some aspect of the state of the sink's peer, which may need to be + * compared or otherwise used in each subsequent synchronisation. A typical + * application is to force a slow-sync when some state value on the peer has + * changed, however it is not limited to this. * * Example: - * A random string gets generated by the member on each sync, eg. XYZ, and is - * stored as the "anchor". If the member didn't get reset or synced somewhere - * else in the meantime, on the beginning of the next sync the anchor and the - * string are compared and match: XYZ == XYZ. Regular sync and new random - * string: ABC, but this time the member got synced with another system and - * generated a new random string: DEF. On the next local sync the anchor is - * compared with the member stored string: ABC != DEF - the "anchor" doesn't - * match with the member string. To avoid any data loss and to get the changed - * entries of the previous sync with the other system, a slow-sync is - * required. + * A random string is generated by the remote device on each sync, eg. XYZ, + * and is stored as the "anchor". If the device wasn't reset or synced + * somewhere else in the meantime, on the beginning of the next sync the + * anchor and the string are compared and will match: XYZ == XYZ. Regular + * sync occurs, and a new random string ABC is generated and stored. Now, in + * the interval between, the device is synced with another system and thus a + * new random string DEF is generated. On the next local sync the anchor is + * compared with the device's stored string: ABC != DEF - the "anchor" + * doesn't match with the device string. Consequently, to avoid any data loss + * and to get the changed entries of the previous sync with the other system, + * a slow-sync is then requested by the plugin. * * Example implementation in plugins: syncml, palm-sync, irmc-sync, ... * @@ -54,9 +59,10 @@ * @param sinkStateDB Pointer to the sink state database object * @param key the key of the value to compare * @param value the value to compare with the stored anchor/state value - * @param issame Pointer to osync_bool to determine the comaprsion result - * @param error Pointer to error struct, which get set on any error - * @returns TRUE if the anchor/state compare completed successful, FALSE on error. Not the return value of the comparsion! + * @param issame Pointer to an osync_bool that will be set to the comparison result + * @param error Pointer to error struct, which will be set on any error + * @returns TRUE if the anchor/state compare completed successfully, FALSE on error. + * (Not the return value of the comparison!) * */ OSYNC_EXPORT osync_bool osync_sink_state_equal( @@ -71,8 +77,8 @@ * @param sinkStateDB Pointer to the sink state database object * @param key the key of the value to set * @param value the new value to set - * @param error Pointer to error struct, which get set on any error - * @returns TRUE if anchor/state update completed successful, FALSE on error. + * @param error Pointer to error struct, which will be set on any error + * @returns TRUE if anchor/state update completed successfully, FALSE on error. * */ OSYNC_EXPORT osync_bool osync_sink_state_set( @@ -85,11 +91,11 @@ * * @param sinkStateDB Pointer to the sink state database object * @param key The key as string of the anchor/state value to retrieve - * @param error Pointer to error struct, which get set on any error + * @param error Pointer to error struct, which will be set on any error * @returns the value of the anchor/state if it was found, - * otherwise an empty string get returned. - * Caller is responsible for freeing the return value with osync_free(). - * NULL on error of retrieving the anchor/state information. + * otherwise an empty string is returned. + * The caller is responsible for freeing the returned value with osync_free(). + * NULL if there was an error when retrieving the anchor/state information. * */ OSYNC_EXPORT char *osync_sink_state_get( |
From: <svn...@op...> - 2009-09-17 21:10:37
|
Author: dgollub Date: Thu Sep 17 23:10:23 2009 New Revision: 5793 URL: http://www.opensync.org/changeset/5793 Log: Changed OSyncMergerFinalizeFunc to fit the plugin function API pattern: - osync_bool return value (at least a non-void return value) - last arugment is OSyncError** Modified: trunk/opensync/format/opensync_merger.h Modified: trunk/opensync/format/opensync_merger.h ============================================================================== --- trunk/opensync/format/opensync_merger.h Thu Sep 17 23:09:03 2009 (r5792) +++ trunk/opensync/format/opensync_merger.h Thu Sep 17 23:10:23 2009 (r5793) @@ -30,7 +30,7 @@ /*@{*/ typedef void * (* OSyncMergerInitializeFunc) (OSyncError **error); -typedef void (* OSyncMergerFinalizeFunc) (void *user_data); +typedef osync_bool (* OSyncMergerFinalizeFunc) (void *userdata, OSyncError **error); typedef osync_bool (* OSyncMergerMergeFunc) (char **buf, unsigned int *size, const char *entirebuf, unsigned int entiresize, OSyncCapabilities *caps, void *userdata, OSyncError **error); typedef osync_bool (* OSyncMergerDemergeFunc) (char **buf, unsigned int *size, OSyncCapabilities *caps, void *userdata, OSyncError **error); |
From: <svn...@op...> - 2009-09-17 21:09:12
|
Author: dgollub Date: Thu Sep 17 23:09:03 2009 New Revision: 5792 URL: http://www.opensync.org/changeset/5792 Log: Change OSyncCapsConverter API of the finalize plugin function: - added OSyncError** as last parameter - changed return value from void to osync_bool To fit the plugin function pattern ... Modified: trunk/opensync/format/opensync_caps_converter.c trunk/opensync/format/opensync_caps_converter.h Modified: trunk/opensync/format/opensync_caps_converter.c ============================================================================== --- trunk/opensync/format/opensync_caps_converter.c Thu Sep 17 22:37:45 2009 (r5791) +++ trunk/opensync/format/opensync_caps_converter.c Thu Sep 17 23:09:03 2009 (r5792) @@ -149,12 +149,13 @@ } } -void osync_caps_converter_finalize(OSyncCapsConverter *converter) +osync_bool osync_caps_converter_finalize(OSyncCapsConverter *converter, OSyncError **error) { osync_assert(converter); - if (converter->finalize_func) { - converter->finalize_func(converter->userdata); - } + if (!converter->finalize_func) + return TRUE; + + return converter->finalize_func(converter->userdata, error); } Modified: trunk/opensync/format/opensync_caps_converter.h ============================================================================== --- trunk/opensync/format/opensync_caps_converter.h Thu Sep 17 22:37:45 2009 (r5791) +++ trunk/opensync/format/opensync_caps_converter.h Thu Sep 17 23:09:03 2009 (r5792) @@ -31,7 +31,7 @@ typedef osync_bool (* OSyncCapsConvertFunc) (OSyncCapabilities *oldcaps, OSyncCapabilities **newcaps, const char *config, void *userdata, OSyncError **error); typedef void * (* OSyncCapsConverterInitializeFunc) (const char *config, OSyncError **error); -typedef void (* OSyncCapsConverterFinalizeFunc) (void *userdata); +typedef osync_bool (* OSyncCapsConverterFinalizeFunc) (void *userdata, OSyncError **error); /** * @brief Creates a new converter @@ -112,8 +112,10 @@ * @brief Invokes finalize function of a converter * * @param converter Pointer to the converter which should be finalized + * @param error Pointer to an error struct + * @returns TRUE on success, FALSE otherwise */ -OSYNC_EXPORT void osync_caps_converter_finalize(OSyncCapsConverter *converter); +OSYNC_EXPORT osync_bool osync_caps_converter_finalize(OSyncCapsConverter *converter, OSyncError **error); /*@}*/ |
From: <svn...@op...> - 2009-09-17 20:37:59
|
Author: dgollub Date: Thu Sep 17 22:37:45 2009 New Revision: 5791 URL: http://www.opensync.org/changeset/5791 Log: Convert to latest Format plugin API changes for destory, compare and print plugin functions Modified: format-plugins/vformat/src/vcard.c format-plugins/vformat/src/vevent.c format-plugins/vformat/src/vjournal.c format-plugins/vformat/src/vtodo.c format-plugins/vformat/tests/conversion.c format-plugins/vformat/tools/vconvert.c Modified: format-plugins/vformat/src/vcard.c ============================================================================== --- format-plugins/vformat/src/vcard.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/src/vcard.c Thu Sep 17 22:37:45 2009 (r5791) @@ -24,7 +24,7 @@ #include <glib.h> #include <string.h> -static OSyncConvCmpResult compare_vcard(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_vcard(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { /* Consider empty block equal NULL pointers */ if (!leftsize) leftdata = NULL; @@ -68,9 +68,10 @@ } #endif -static void destroy_vcard(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_vcard(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { g_free(input); + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vevent.c ============================================================================== --- format-plugins/vformat/src/vevent.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/src/vevent.c Thu Sep 17 22:37:45 2009 (r5791) @@ -33,7 +33,7 @@ * osync_env_format_set_like(). */ -static OSyncConvCmpResult compare_vevent(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_vevent(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { /* Consider empty block equal NULL pointers */ if (!leftsize) leftdata = NULL; @@ -72,9 +72,10 @@ return g_pattern_match_simple("*BEGIN:VCALENDAR*VERSION:2.0*BEGIN:VEVENT*", data); } -static void destroy_vevent(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_vevent(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { g_free(input); + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vjournal.c ============================================================================== --- format-plugins/vformat/src/vjournal.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/src/vjournal.c Thu Sep 17 22:37:45 2009 (r5791) @@ -25,7 +25,7 @@ #include <glib.h> #include <string.h> -static OSyncConvCmpResult compare_vjournal(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_vjournal(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { /* Consider empty block equal NULL pointers */ if (!leftsize) leftdata = NULL; @@ -54,9 +54,10 @@ return g_pattern_match_simple("*BEGIN:VJOURNAL*", data); } -static void destroy_vjournal(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_vjournal(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { g_free(input); + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vtodo.c ============================================================================== --- format-plugins/vformat/src/vtodo.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/src/vtodo.c Thu Sep 17 22:37:45 2009 (r5791) @@ -26,7 +26,7 @@ #include <string.h> /** @defgroup todo_vtodo todo/vtodo data format */ -static OSyncConvCmpResult compare_vtodo(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_vtodo(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { /* Consider empty block equal NULL pointers */ if (!leftsize) leftdata = NULL; @@ -65,9 +65,10 @@ return g_pattern_match_simple("*BEGIN:VCALENDAR*VERSION:2.0*BEGIN:VTODO*", data); } -static void destroy_vtodo(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_vtodo(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { g_free(input); + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/tests/conversion.c ============================================================================== --- format-plugins/vformat/tests/conversion.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/tests/conversion.c Thu Sep 17 22:37:45 2009 (r5791) @@ -123,14 +123,17 @@ osync_converter_path_unref(path); - char *xml1 = osync_data_get_printable(data); - char *xml2 = osync_data_get_printable(newdata); + char *xml1 = osync_data_get_printable(data, &error); + fail_unless(error == NULL, NULL); + char *xml2 = osync_data_get_printable(newdata, &error); + fail_unless(error == NULL, NULL); osync_trace(TRACE_INTERNAL, "ConvertedXML:\n%s\nOriginal:\n%s\n", xml1, xml2); g_free(xml1); g_free(xml2); //Compare again - fail_unless(osync_change_compare(newchange, change) == OSYNC_CONV_DATA_SAME, NULL); + fail_unless(osync_change_compare(newchange, change, &error) == OSYNC_CONV_DATA_SAME, NULL); + fail_unless(error == NULL, NULL); osync_data_unref(data); osync_data_unref(newdata); @@ -222,7 +225,8 @@ osync_converter_path_unref(path); // compare - fail_unless(osync_change_compare(lchange, rchange) == result, NULL); + fail_unless(osync_change_compare(lchange, rchange, &error) == result, NULL); + fail_unless(error == NULL, NULL); osync_format_env_unref(format_env); osync_change_unref(lchange); Modified: format-plugins/vformat/tools/vconvert.c ============================================================================== --- format-plugins/vformat/tools/vconvert.c Thu Sep 17 22:28:40 2009 (r5790) +++ format-plugins/vformat/tools/vconvert.c Thu Sep 17 22:37:45 2009 (r5791) @@ -341,7 +341,10 @@ } // print data or store it into 'output' - print = osync_data_get_printable(data); + print = osync_data_get_printable(data, &error); + if (!print) + goto error; + if (output) { if (!osync_file_write(output, print, strlen(print), 0644, &error)) { fprintf(stderr, "Unable to write file %s", output); |
From: <svn...@op...> - 2009-09-17 20:28:53
|
Author: dgollub Date: Thu Sep 17 22:28:40 2009 New Revision: 5790 URL: http://www.opensync.org/changeset/5790 Log: Introduce OSyncError** parameter to OSyncTime API, due to replacment of g_error0 by osync_try_malloc0 Patch by bricks - testsuite porting by dgollub Modified: trunk/opensync/format/opensync_time.c trunk/opensync/format/opensync_time.h trunk/tests/format-tests/check_time.c Modified: trunk/opensync/format/opensync_time.c ============================================================================== --- trunk/opensync/format/opensync_time.c Thu Sep 17 22:17:50 2009 (r5789) +++ trunk/opensync/format/opensync_time.c Thu Sep 17 22:28:40 2009 (r5790) @@ -171,11 +171,16 @@ /*****************************************************************************/ -struct tm *osync_time_vtime2tm(const char *vtime) +struct tm *osync_time_vtime2tm(const char *vtime, OSyncError **error) { - struct tm *utime = g_malloc0(sizeof(struct tm)); osync_trace(TRACE_ENTRY, "%s(%s)", __func__, vtime); - + struct tm *utime = g_try_malloc0(sizeof(struct tm)); + + if (!utime) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + goto error; + } + utime->tm_year = 0; utime->tm_mon = 0; utime->tm_mday = 0; @@ -198,9 +203,12 @@ osync_trace(TRACE_EXIT, "%s", __func__); return utime; +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return NULL; } -char *osync_time_tm2vtime(const struct tm *time, osync_bool is_utc) +char *osync_time_tm2vtime(const struct tm *time, osync_bool is_utc, OSyncError **error) { GString *vtime = g_string_new(""); struct tm my_time = *time; @@ -234,16 +242,16 @@ /*****************************************************************************/ -time_t osync_time_vtime2unix(const char *vtime, int offset) +time_t osync_time_vtime2unix(const char *vtime, int offset, OSyncError **error) { struct tm *utime = NULL; time_t timestamp; char *utc = NULL; osync_trace(TRACE_ENTRY, "%s(%s, %i)", __func__, vtime, offset); - utc = osync_time_vtime2utc(vtime, offset); - utime = osync_time_vtime2tm(utc); - timestamp = osync_time_utctm2unix(utime); + utc = osync_time_vtime2utc(vtime, offset, error); + utime = osync_time_vtime2tm(utc, error); + timestamp = osync_time_utctm2unix(utime, error); g_free(utc); g_free(utime); @@ -253,14 +261,14 @@ } -char *osync_time_unix2vtime(const time_t *timestamp) +char *osync_time_unix2vtime(const time_t *timestamp, OSyncError **error) { char *vtime; struct tm utc; osync_trace(TRACE_ENTRY, "%s(%lu)", __func__, *timestamp); gmtime_r(timestamp, &utc); - vtime = osync_time_tm2vtime(&utc, TRUE); + vtime = osync_time_tm2vtime(&utc, TRUE, error); osync_trace(TRACE_EXIT, "%s: %s", __func__, vtime); return vtime; @@ -271,10 +279,14 @@ * Unix time_t converters */ -time_t osync_time_localtm2unix(const struct tm *localtime) +time_t osync_time_localtm2unix(const struct tm *localtime, OSyncError **error) { time_t timestamp; - struct tm *tmp = g_malloc0(sizeof(struct tm)); + struct tm *tmp = g_try_malloc0(sizeof(struct tm)); + if (!tmp) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return -1L; + } memcpy(tmp, localtime, sizeof(struct tm)); @@ -286,12 +298,16 @@ return timestamp; } -time_t osync_time_utctm2unix(const struct tm *utctime) +time_t osync_time_utctm2unix(const struct tm *utctime, OSyncError **error) { time_t timestamp; #if 1 - struct tm *tmp = g_malloc0(sizeof(struct tm)); + struct tm *tmp = g_try_malloc0(sizeof(struct tm)); + if (!tmp) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return -1; + } struct tm localnow; struct tm check; int tzdiff; @@ -300,7 +316,7 @@ // to reduce the number of loops to find the correct match time(×tamp); localtime_r(×tamp, &localnow); - tzdiff = osync_time_timezone_diff(&localnow); + tzdiff = osync_time_timezone_diff(&localnow, error); // now loop, converting "local time" to time_t to utctm, // and adjusting until there are no differences... this @@ -355,19 +371,27 @@ return timestamp; } -struct tm *osync_time_unix2localtm(const time_t *timestamp) +struct tm *osync_time_unix2localtm(const time_t *timestamp, OSyncError **error) { - struct tm *ptr_tm = g_malloc0(sizeof(struct tm)); - + struct tm *ptr_tm = g_try_malloc0(sizeof(struct tm)); + if (!ptr_tm) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return NULL; + } + localtime_r(timestamp, ptr_tm); return ptr_tm; } -struct tm *osync_time_unix2utctm(const time_t *timestamp) +struct tm *osync_time_unix2utctm(const time_t *timestamp, OSyncError **error) { - struct tm *ptr_tm = g_malloc0(sizeof(struct tm)); - + struct tm *ptr_tm = g_try_malloc0(sizeof(struct tm)); + if (!ptr_tm) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return NULL; + } + gmtime_r(timestamp, ptr_tm); return ptr_tm; @@ -375,7 +399,7 @@ /*****************************************************************************/ -int osync_time_timezone_diff(const struct tm *local) +int osync_time_timezone_diff(const struct tm *local, OSyncError **error) { struct tm utime; unsigned int lsecs, usecs; @@ -384,7 +408,7 @@ osync_trace(TRACE_ENTRY, "%s()", __func__); /* convert local time to UTC */ - timestamp = osync_time_localtm2unix(local); + timestamp = osync_time_localtm2unix(local, error); /* convert UTC to split tm struct in UTC */ gmtime_r(×tamp, &utime); @@ -434,10 +458,14 @@ return zonediff; } -struct tm *osync_time_tm2utc(const struct tm *ltime, int offset) +struct tm *osync_time_tm2utc(const struct tm *ltime, int offset, OSyncError **error) { - struct tm *tmtime = g_malloc0(sizeof(struct tm)); osync_trace(TRACE_ENTRY, "%s(%p, %i)", __func__, ltime, offset); + struct tm *tmtime = g_try_malloc0(sizeof(struct tm)); + if (!tmtime) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + goto error; + } tmtime->tm_year = ltime->tm_year; tmtime->tm_mon = ltime->tm_mon; @@ -457,11 +485,18 @@ osync_trace(TRACE_EXIT, "%s: %p", __func__, tmtime); return tmtime; +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return NULL; } -struct tm *osync_time_tm2localtime(const struct tm *utime, int offset) +struct tm *osync_time_tm2localtime(const struct tm *utime, int offset, OSyncError **error) { - struct tm *tmtime = g_malloc0(sizeof(struct tm)); + struct tm *tmtime = g_try_malloc0(sizeof(struct tm)); + if (!tmtime) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return NULL; + } tmtime->tm_year = utime->tm_year; tmtime->tm_mon = utime->tm_mon; @@ -482,7 +517,7 @@ return tmtime; } -char *osync_time_vtime2utc(const char* localtime, int offset) +char *osync_time_vtime2utc(const char* localtime, int offset, OSyncError **error) { char *utc = NULL; struct tm *tm_local = NULL, *tm_utc = NULL; @@ -493,9 +528,9 @@ goto end; } - tm_local = osync_time_vtime2tm(localtime); - tm_utc = osync_time_tm2utc(tm_local, offset); - utc = osync_time_tm2vtime(tm_utc, TRUE); + tm_local = osync_time_vtime2tm(localtime, error); + tm_utc = osync_time_tm2utc(tm_local, offset, error); + utc = osync_time_tm2vtime(tm_utc, TRUE, error); g_free(tm_local); g_free(tm_utc); @@ -505,7 +540,7 @@ return utc; } -char *osync_time_vtime2localtime(const char* utc, int offset) +char *osync_time_vtime2localtime(const char* utc, int offset, OSyncError **error) { char *localtime = NULL; struct tm *tm_local = NULL, *tm_utc = NULL; @@ -515,9 +550,9 @@ return localtime; } - tm_utc = osync_time_vtime2tm(utc); - tm_local = osync_time_tm2localtime(tm_utc, offset); - localtime = osync_time_tm2vtime(tm_local, FALSE); + tm_utc = osync_time_vtime2tm(utc, error); + tm_local = osync_time_tm2localtime(tm_utc, offset, error); + localtime = osync_time_tm2vtime(tm_local, FALSE, error); g_free(tm_local); g_free(tm_utc); @@ -558,13 +593,13 @@ NULL }; -/*! @brief Function converts a UTC vtime stamp to a localtime vtime stamp +/** @brief Function converts a UTC vtime stamp to a localtime vtime stamp * * @param entry The whole vcal entry as GString which gets modified. * @param field The field name which should be modified. * @param toUTC The toggle in which direction we convert. TRUE = convert to UTC */ -static void _convert_time_field(GString *entry, const char *field, osync_bool toUTC) +static void _convert_time_field(GString *entry, const char *field, osync_bool toUTC, OSyncError **error) { int i, tzdiff; char *res = NULL; @@ -584,14 +619,14 @@ entry = g_string_erase(entry, pos, i); // Get System offset to UTC - tm_stamp = osync_time_vtime2tm(stamp->str); - tzdiff = osync_time_timezone_diff(tm_stamp); + tm_stamp = osync_time_vtime2tm(stamp->str, error); + tzdiff = osync_time_timezone_diff(tm_stamp, error); g_free(tm_stamp); if (toUTC) - new_stamp = osync_time_vtime2utc(stamp->str, tzdiff); + new_stamp = osync_time_vtime2utc(stamp->str, tzdiff, error); else - new_stamp = osync_time_vtime2localtime(stamp->str, tzdiff); + new_stamp = osync_time_vtime2localtime(stamp->str, tzdiff, error); entry = g_string_insert(entry, pos, new_stamp); g_free(new_stamp); @@ -604,27 +639,27 @@ * @param toUTC If TRUE conversion from localtime to UTC. * @return timestamp modified vcalendar */ -char *_convert_entry(const char *vcal, osync_bool toUTC) +char *_convert_entry(const char *vcal, osync_bool toUTC, OSyncError **error) { int i = 0; GString *new_entry = g_string_new(vcal); for (i=0; _time_attr[i] != NULL; i++) - _convert_time_field(new_entry, _time_attr[i], toUTC); + _convert_time_field(new_entry, _time_attr[i], toUTC, error); return g_string_free(new_entry, FALSE); } -char *osync_time_vcal2localtime(const char *vcal) +char *osync_time_vcal2localtime(const char *vcal, OSyncError **error) { - return _convert_entry(vcal, FALSE); + return _convert_entry(vcal, FALSE, error); } -char *osync_time_vcal2utc(const char *vcal) +char *osync_time_vcal2utc(const char *vcal, OSyncError **error) { - return _convert_entry(vcal, TRUE); + return _convert_entry(vcal, TRUE, error); } /*****************************************************************************/ @@ -780,9 +815,13 @@ return weekday; } -struct tm *osync_time_relative2tm(const char *byday, const int bymonth, const int year) +struct tm *osync_time_relative2tm(const char *byday, const int bymonth, const int year, OSyncError **error) { - struct tm *datestamp = g_malloc0(sizeof(struct tm)); + struct tm *datestamp = g_try_malloc0(sizeof(struct tm)); + if (!datestamp) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "Could not allocate memory for time stuct."); + return NULL; + } struct tm search; char weekday[3]; int first_wday = 0, last_wday = 0; Modified: trunk/opensync/format/opensync_time.h ============================================================================== --- trunk/opensync/format/opensync_time.h Thu Sep 17 22:17:50 2009 (r5789) +++ trunk/opensync/format/opensync_time.h Thu Sep 17 22:28:40 2009 (r5790) @@ -86,9 +86,10 @@ /** @brief Function converts vtime to tm struct * * @param vtime The formatted timestamp (YYYYMMDDTHHMMSS) + * @param error An OSyncError struct * @returns struct tm (caller is responsible for freeing) */ -OSYNC_EXPORT struct tm *osync_time_vtime2tm(const char *vtime); +OSYNC_EXPORT struct tm *osync_time_vtime2tm(const char *vtime, OSyncError **error); /** @brief Function converts struct tm in vtime string * @@ -97,9 +98,10 @@ * * @param time The tm struct which gets converted * @param is_utc If struct tm is UTC time is_utc have to be TRUE + * @param error An OSyncError struct * @returns vtime formatted as YYYYMMDDTHHMMSS[Z] (caller is responsible for freeing) */ -OSYNC_EXPORT char *osync_time_tm2vtime(const struct tm *time, osync_bool is_utc); +OSYNC_EXPORT char *osync_time_tm2vtime(const struct tm *time, osync_bool is_utc, OSyncError **error); /*@}*/ @@ -119,16 +121,18 @@ * * @param offset Seconds of UTC offset * @param vtime The osync formmatted timestamp + * @param error An OSyncError struct * @returns Unix timestamp in time_t (UTC) */ -OSYNC_EXPORT time_t osync_time_vtime2unix(const char *vtime, int offset); +OSYNC_EXPORT time_t osync_time_vtime2unix(const char *vtime, int offset, OSyncError **error); /** @brief Function converts unix timestamp to vtime in UTC * * @param timestamp The unix timestamp which gets converted + * @param error An OSyncError struct * @returns vtime formatted as YYYYMMDDTHHMMSSZ (caller is responsible for freeing) */ -OSYNC_EXPORT char *osync_time_unix2vtime(const time_t *timestamp); +OSYNC_EXPORT char *osync_time_unix2vtime(const time_t *timestamp, OSyncError **error); /* Unix time_t converters */ @@ -138,13 +142,15 @@ * forced to -1. Aka, mktime(). * * @param localtime The struct tm, in localtime, which gets converted + * @param error An OSyncError struct * @returns time_t (in UTC of course) */ -OSYNC_EXPORT time_t osync_time_localtm2unix(const struct tm *localtime); +OSYNC_EXPORT time_t osync_time_localtm2unix(const struct tm *localtime, OSyncError **error); /** @brief Function converts struct tm, in utc, to unix timestamp. * * @param utctime The struct tm, in utc, which gets converted + * @param error An OSyncError struct * @returns time_t (in UTC of course) * * This algorithm abuses the POSIX time functions, only because @@ -156,25 +162,27 @@ * * If there is a better way, I'd love to know! - cdfrey */ -OSYNC_EXPORT time_t osync_time_utctm2unix(const struct tm *utctime); +OSYNC_EXPORT time_t osync_time_utctm2unix(const struct tm *utctime, OSyncError **error); /** @brief Function converts unix timestamp to struct tm in localtime. * This is the same as calling localtime_r(), except you * have to free the returned value. Aka, localtime(). * * @param timestamp The unixtimestamp which gets converted + * @param error An OSyncError struct * @returns: struct tm (in localtime) (Caller is responsible for freeing!) */ -OSYNC_EXPORT struct tm *osync_time_unix2localtm(const time_t *timestamp); +OSYNC_EXPORT struct tm *osync_time_unix2localtm(const time_t *timestamp, OSyncError **error); /** @brief Function converts unix timestamp to struct tm in utc. * This is the same as calling gmtime_r(), except you * have to free the returned value. Aka, gmtime(). * * @param timestamp The unixtimestamp which gets converted + * @paran error An OSyncError struct * @returns: struct tm (in UTC) (Caller is responsible for freeing) */ -OSYNC_EXPORT struct tm *osync_time_unix2utctm(const time_t *timestamp); +OSYNC_EXPORT struct tm *osync_time_unix2utctm(const time_t *timestamp, OSyncError **error); /*@}*/ @@ -199,9 +207,10 @@ * * @param local The point in time when the offset have to be calculated, * specified in localtime (need for CEST/CET) + * @param error An OSyncError struct * @returns Seconds of timezone offset */ -OSYNC_EXPORT int osync_time_timezone_diff(const struct tm *local); +OSYNC_EXPORT int osync_time_timezone_diff(const struct tm *local, OSyncError **error); /** @brief Function converts (struct tm) ltime from localtime to UTC. * Paramter offset is used as UTC offset. Note that _only_ the @@ -210,9 +219,10 @@ * * @param ltime The struct tm which gets converted to UTC timezone * @param offset Seconds of UTC offset, in seconds east of UTC. + * @param error An OSyncError struct * @returns struct tm in UTC (caller is responsible for freeing) */ -OSYNC_EXPORT struct tm *osync_time_tm2utc(const struct tm *ltime, int offset); +OSYNC_EXPORT struct tm *osync_time_tm2utc(const struct tm *ltime, int offset, OSyncError **error); /** @brief Function converts (struct tm) utime from UTC to localtime * Paramter offset is used as UTC offset. Note that _only_ the @@ -221,25 +231,28 @@ * * @param utime The struct tm which gets converted to localtime * @param offset Seconds of UTC offset, in seconds east of UTC. + * @param error An OSyncError struct * @returns struct tm in localtime (caller is responsible for freeing) */ -OSYNC_EXPORT struct tm *osync_time_tm2localtime(const struct tm *utime, int offset); +OSYNC_EXPORT struct tm *osync_time_tm2localtime(const struct tm *utime, int offset, OSyncError **error); /** @brief Functions converts a localtime vtime stamp to a UTC vtime stamp * * @param localtime The local timestamp in vtime format * @param offset Seconds of UTC offset, in seconds east of UTC. + * @param error An OSyncError struct * @returns vtime in UTC timezone (caller is responsible for freeing) */ -OSYNC_EXPORT char *osync_time_vtime2utc(const char* localtime, int offset); +OSYNC_EXPORT char *osync_time_vtime2utc(const char* localtime, int offset, OSyncError **error); /** @brief Functions converts a UTC vtime stamp to a localtime vtime stamp * * @param utc The timestap in UTC timezone which gets converted to localtime * @param offset The offset in seconds between UTC and localtime + * @param error An OSyncError struct * @returns vtime in local timezon (caller is preponsible for freeing) */ -OSYNC_EXPORT char *osync_time_vtime2localtime(const char* utc, int offset); +OSYNC_EXPORT char *osync_time_vtime2localtime(const char* utc, int offset, OSyncError **error); /** @brief Function converts UTC offset string in offset in seconds * @@ -267,16 +280,18 @@ /** @brief Functions converts timestamps of vcal to localtime * * @param vcal The vcalendar which has to be converted. + * @param error An OSyncError struct * @return modified vcalendar with local timestamps (related to system time) */ -OSYNC_EXPORT char *osync_time_vcal2localtime(const char *vcal); +OSYNC_EXPORT char *osync_time_vcal2localtime(const char *vcal, OSyncError **error); /** @brief Functions converts timestamps of vcal to UTC * * @param vcal The vcalendar which has to be converted. + * @param error An OSyncError struct * @return modified vcalendar with UTC timestamps (related to system time) */ -OSYNC_EXPORT char *osync_time_vcal2utc(const char *vcal); +OSYNC_EXPORT char *osync_time_vcal2utc(const char *vcal, OSyncError **error); /*@}*/ @@ -343,11 +358,12 @@ * @param byday string of the relative day of month modifier * @param bymonth calendar number of the month (January = 1) * @param year calendar year (e.g. 1970, 2007, etc) + * @param error An OSyncError struct * @returns struct tm of the relative information date with 00:00:00 timestamp * or NULL on error. * (Caller is responsible for freeing) */ -OSYNC_EXPORT struct tm *osync_time_relative2tm(const char *byday, const int bymonth, const int year); +OSYNC_EXPORT struct tm *osync_time_relative2tm(const char *byday, const int bymonth, const int year, OSyncError **error); /*@}*/ Modified: trunk/tests/format-tests/check_time.c ============================================================================== --- trunk/tests/format-tests/check_time.c Thu Sep 17 22:17:50 2009 (r5789) +++ trunk/tests/format-tests/check_time.c Thu Sep 17 22:28:40 2009 (r5790) @@ -15,6 +15,7 @@ START_TEST (time_timezone_diff) { struct tm local; + OSyncError *error = NULL; int zonediff_normal, zonediff_day, zonediff_month; // discover localtime zone @@ -37,17 +38,20 @@ // t = mktime(&local); // gmtime_r(&t, &utc); - zonediff_normal = osync_time_timezone_diff(&local); + zonediff_normal = osync_time_timezone_diff(&local, &error); + fail_unless(error == NULL, NULL); // test day straddle local.tm_hour = 23; - zonediff_day = osync_time_timezone_diff(&local); + zonediff_day = osync_time_timezone_diff(&local, &error); + fail_unless(error == NULL, NULL); // test month straddle local.tm_mday = 31; - zonediff_month = osync_time_timezone_diff(&local); + zonediff_month = osync_time_timezone_diff(&local, &error); + fail_unless(error == NULL, NULL); printf("normal = %d\nday = %d\nmonth = %d\n", zonediff_normal, zonediff_day, zonediff_month); @@ -59,10 +63,11 @@ static int test_relative2tm(const char *byday, int month, int year, int expected_day, int expected_wday) { + OSyncError *error = NULL; printf("Test parameters: %s, month: %d, year: %d\n", byday, month, year); - struct tm *test = osync_time_relative2tm(byday, month, year); + struct tm *test = osync_time_relative2tm(byday, month, year, &error); if( !test ) { printf(" Error in osync_time_relative2tm()\n"); return expected_day == -1; @@ -121,19 +126,22 @@ void test_unix_converter(const struct tm *base, const char *vresult) { + OSyncError *error = NULL; struct tm tm_first, tm_second, *tm_ptr = NULL; time_t first, second; char *vtime = NULL; // test that osync_time_localtm2unix() behaves like mktime() memcpy(&tm_first, base, sizeof(struct tm)); - first = osync_time_localtm2unix(&tm_first); + first = osync_time_localtm2unix(&tm_first, &error); + fail_unless(error == NULL, NULL); tm_first.tm_isdst = -1; second = mktime(&tm_first); fail_unless( first == second, NULL ); // test that osync_time_unix2localtm() behaves like localtime() - tm_ptr = osync_time_unix2localtm(&first); + tm_ptr = osync_time_unix2localtm(&first, &error); + fail_unless(error == NULL, NULL); localtime_r(&first, &tm_second); fail_unless( tm_equal(&tm_first, &tm_second), NULL ); fail_unless( tm_equal(tm_ptr, &tm_second), NULL ); @@ -141,7 +149,8 @@ tm_ptr = NULL; // test that osync_time_unix2utctm() behaves like gmtime_r() - tm_ptr = osync_time_unix2utctm(&first); + tm_ptr = osync_time_unix2utctm(&first, &error); + fail_unless(error == NULL, NULL); gmtime_r(&first, &tm_second); fail_unless( tm_equal(tm_ptr, &tm_second), NULL ); g_free(tm_ptr); @@ -149,15 +158,19 @@ // test that osync_time_utctm2unix() works correctly tm_second.tm_isdst = 0; // make sure incorrect value is handled - second = osync_time_utctm2unix(&tm_second); + second = osync_time_utctm2unix(&tm_second, &error); + fail_unless(error == NULL, NULL); fail_unless( first == second, NULL ); // test vtime string converters, in both directions - vtime = osync_time_unix2vtime(&first); + vtime = osync_time_unix2vtime(&first, &error); + fail_unless(error == NULL, NULL); fail_unless( vtime != NULL, NULL ); fail_unless( strcmp(vtime, vresult) == 0, NULL ); printf("osync_time_unix2vtime() returned: %s\n", vtime); - second = osync_time_vtime2unix(vtime, 0); + second = osync_time_vtime2unix(vtime, 0, &error); + fail_unless(error == NULL, NULL); + fail_unless( vtime != NULL, NULL ); fail_unless( first == second ); g_free(vtime); } |
From: <svn...@op...> - 2009-09-17 20:18:02
|
Author: dgollub Date: Thu Sep 17 22:17:50 2009 New Revision: 5789 URL: http://www.opensync.org/changeset/5789 Log: Get rid of g_malloc0() in osync_queue_setup_with_gmainloop() to avoid assert() on OOM conditions Modified: trunk/opensync/client/opensync_client.c trunk/opensync/client/opensync_client.h trunk/opensync/client/opensync_client_proxy.c trunk/opensync/client/osplugin.c trunk/opensync/ipc/opensync_queue.c trunk/opensync/ipc/opensync_queue_internals.h trunk/tests/client-tests/check_client.c trunk/tests/ipc-tests/check_ipc.c Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/client/opensync_client.c Thu Sep 17 22:17:50 2009 (r5789) @@ -677,7 +677,9 @@ goto error; } - osync_client_set_outgoing_queue(client, outgoing); + if (!osync_client_set_outgoing_queue(client, outgoing, error)) + goto error; + osync_queue_cross_link(client->incoming, client->outgoing); osync_queue_unref(outgoing); osync_trace(TRACE_INTERNAL, "done connecting to engine"); @@ -1703,19 +1705,33 @@ } } -void osync_client_set_incoming_queue(OSyncClient *client, OSyncQueue *incoming) +osync_bool osync_client_set_incoming_queue(OSyncClient *client, OSyncQueue *incoming, OSyncError **error) { osync_queue_set_message_handler(incoming, _osync_client_message_handler, client); - osync_queue_setup_with_gmainloop(incoming, client->context); + + if (!osync_queue_setup_with_gmainloop(incoming, client->context, error)) + goto error; + client->incoming = osync_queue_ref(incoming); osync_queue_set_pending_limit(incoming, OSYNC_QUEUE_PENDING_LIMIT); + + return TRUE; + +error: + return FALSE; } -void osync_client_set_outgoing_queue(OSyncClient *client, OSyncQueue *outgoing) +osync_bool osync_client_set_outgoing_queue(OSyncClient *client, OSyncQueue *outgoing, OSyncError **error) { osync_queue_set_message_handler(outgoing, _osync_client_hup_handler, client); - osync_queue_setup_with_gmainloop(outgoing, client->context); + if (!osync_queue_setup_with_gmainloop(outgoing, client->context, error)) + goto error; + client->outgoing = osync_queue_ref(outgoing); + + return TRUE; +error: + return FALSE; } void osync_client_run_and_block(OSyncClient *client) @@ -1762,7 +1778,8 @@ if (!osync_queue_create(incoming, error)) goto error_free_queue; - osync_client_set_incoming_queue(client, incoming); + if (!osync_client_set_incoming_queue(client, incoming, error)) + goto error_remove_queue; client->thread = osync_thread_new(client->context, error); if (!client->thread) Modified: trunk/opensync/client/opensync_client.h ============================================================================== --- trunk/opensync/client/opensync_client.h Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/client/opensync_client.h Thu Sep 17 22:17:50 2009 (r5789) @@ -25,8 +25,8 @@ OSYNC_EXPORT OSyncClient *osync_client_ref(OSyncClient *client); OSYNC_EXPORT void osync_client_unref(OSyncClient *client); -OSYNC_EXPORT void osync_client_set_incoming_queue(OSyncClient *client, OSyncQueue *incoming); -OSYNC_EXPORT void osync_client_set_outgoing_queue(OSyncClient *client, OSyncQueue *outgoing); +OSYNC_EXPORT osync_bool osync_client_set_incoming_queue(OSyncClient *client, OSyncQueue *incoming, OSyncError **error); +OSYNC_EXPORT osync_bool osync_client_set_outgoing_queue(OSyncClient *client, OSyncQueue *outgoing, OSyncError **error); OSYNC_EXPORT void osync_client_run_and_block(OSyncClient *client); OSYNC_EXPORT osync_bool osync_client_run(OSyncClient *client, OSyncError **error); Modified: trunk/opensync/client/opensync_client_proxy.c ============================================================================== --- trunk/opensync/client/opensync_client_proxy.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/client/opensync_client_proxy.c Thu Sep 17 22:17:50 2009 (r5789) @@ -994,8 +994,12 @@ goto error_free_pipe2; - osync_client_set_incoming_queue(proxy->client, read1); - osync_client_set_outgoing_queue(proxy->client, write2); + if (!osync_client_set_incoming_queue(proxy->client, read1, error)) + goto error_free_pipe2; + + if (!osync_client_set_outgoing_queue(proxy->client, write2, error)) + goto error_free_pipe2; + osync_queue_cross_link(read1, write2); if (!osync_client_run(proxy->client, error)) @@ -1099,10 +1103,12 @@ } osync_queue_set_message_handler(proxy->incoming, _osync_client_proxy_message_handler, proxy); - osync_queue_setup_with_gmainloop(proxy->incoming, proxy->context); + if (!osync_queue_setup_with_gmainloop(proxy->incoming, proxy->context, error)) + goto error; osync_queue_set_message_handler(proxy->outgoing, _osync_client_proxy_hup_handler, proxy); - osync_queue_setup_with_gmainloop(proxy->outgoing, proxy->context); + if (!osync_queue_setup_with_gmainloop(proxy->outgoing, proxy->context, error)) + goto error; osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; Modified: trunk/opensync/client/osplugin.c ============================================================================== --- trunk/opensync/client/osplugin.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/client/osplugin.c Thu Sep 17 22:17:50 2009 (r5789) @@ -96,9 +96,13 @@ if (!osync_queue_connect(outgoing, OSYNC_QUEUE_SENDER, &error)) goto error; - osync_client_set_incoming_queue(client, incoming); + if (!osync_client_set_incoming_queue(client, incoming, &error)) + goto error; + osync_queue_unref(incoming); - osync_client_set_outgoing_queue(client, outgoing); + if (!osync_client_set_outgoing_queue(client, outgoing, &error)) + goto error; + osync_queue_unref(outgoing); } else { /* Create connection pipes **/ @@ -113,7 +117,9 @@ if (!osync_queue_connect(incoming, OSYNC_QUEUE_RECEIVER, &error)) goto error; - osync_client_set_incoming_queue(client, incoming); + if (!osync_client_set_incoming_queue(client, incoming, &error)) + goto error; + osync_queue_unref(incoming); } Modified: trunk/opensync/ipc/opensync_queue.c ============================================================================== --- trunk/opensync/ipc/opensync_queue.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/ipc/opensync_queue.c Thu Sep 17 22:17:50 2009 (r5789) @@ -1290,12 +1290,15 @@ osync_trace(TRACE_EXIT, "%s", __func__); } -void osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context) +osync_bool osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context, OSyncError **error) { OSyncQueue **queueptr = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, queue, context); - queue->incoming_functions = g_malloc0(sizeof(GSourceFuncs)); + queue->incoming_functions = osync_try_malloc0(sizeof(GSourceFuncs), error); + if (!queue->incoming_functions) + goto error; + queue->incoming_functions->prepare = _incoming_prepare; queue->incoming_functions->check = _incoming_check; queue->incoming_functions->dispatch = _incoming_dispatch; @@ -1316,6 +1319,11 @@ g_main_context_ref(context); osync_trace(TRACE_EXIT, "%s", __func__); + return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_queue_dispatch(OSyncQueue *queue, OSyncError **error) Modified: trunk/opensync/ipc/opensync_queue_internals.h ============================================================================== --- trunk/opensync/ipc/opensync_queue_internals.h Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/opensync/ipc/opensync_queue_internals.h Thu Sep 17 22:17:50 2009 (r5789) @@ -164,9 +164,11 @@ * * @param queue The queue to set up * @param context The context to use. NULL for default loop + * @param error An OpenSync Error + * @return TRUE if successful, FALSE otherwise * */ -OSYNC_TEST_EXPORT void osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context); +OSYNC_TEST_EXPORT osync_bool osync_queue_setup_with_gmainloop(OSyncQueue *queue, GMainContext *context, OSyncError **error); /** * @brief Dispatches incoming data from the remote end Modified: trunk/tests/client-tests/check_client.c ============================================================================== --- trunk/tests/client-tests/check_client.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/tests/client-tests/check_client.c Thu Sep 17 22:17:50 2009 (r5789) @@ -55,8 +55,10 @@ fail_unless(osync_queue_connect(write2, OSYNC_QUEUE_SENDER, &error), NULL); fail_unless(error == NULL, NULL); - osync_client_set_incoming_queue(client, read1); - osync_client_set_outgoing_queue(client, write2); + fail_unless(osync_client_set_incoming_queue(client, read1, &error), NULL); + fail_unless(error == NULL, NULL); + fail_unless(osync_client_set_outgoing_queue(client, write2, &error), NULL); + fail_unless(error == NULL, NULL); OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_NOOP, 0, &error); fail_unless(message != NULL, NULL); @@ -131,8 +133,10 @@ fail_unless(osync_queue_connect(write2, OSYNC_QUEUE_SENDER, &error), NULL); fail_unless(error == NULL, NULL); - osync_client_set_incoming_queue(client, read1); - osync_client_set_outgoing_queue(client, write2); + fail_unless(osync_client_set_incoming_queue(client, read1, &error), NULL); + fail_unless(error == NULL, NULL); + fail_unless(osync_client_set_outgoing_queue(client, write2, &error), NULL); + fail_unless(error == NULL, NULL); OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_NOOP, 0, &error); fail_unless(message != NULL, NULL); @@ -208,8 +212,10 @@ fail_unless(osync_queue_connect(write2, OSYNC_QUEUE_SENDER, &error), NULL); fail_unless(error == NULL, NULL); - osync_client_set_incoming_queue(client, read1); - osync_client_set_outgoing_queue(client, write2); + fail_unless(osync_client_set_incoming_queue(client, read1, &error), NULL); + fail_unless(error == NULL, NULL); + fail_unless(osync_client_set_outgoing_queue(client, write2, &error), NULL); + fail_unless(error == NULL, NULL); OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_NOOP, 0, &error); fail_unless(message != NULL, NULL); @@ -295,8 +301,10 @@ fail_unless(osync_queue_connect(write2, OSYNC_QUEUE_SENDER, &error), NULL); fail_unless(error == NULL, NULL); - osync_client_set_incoming_queue(client, read1); - osync_client_set_outgoing_queue(client, write2); + fail_unless(osync_client_set_incoming_queue(client, read1, &error), NULL); + fail_unless(error == NULL, NULL); + fail_unless(osync_client_set_outgoing_queue(client, write2, &error), NULL); + fail_unless(error == NULL, NULL); OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_NOOP, 0, &error); fail_unless(message != NULL, NULL); Modified: trunk/tests/ipc-tests/check_ipc.c ============================================================================== --- trunk/tests/ipc-tests/check_ipc.c Thu Sep 17 22:16:15 2009 (r5788) +++ trunk/tests/ipc-tests/check_ipc.c Thu Sep 17 22:17:50 2009 (r5789) @@ -1085,7 +1085,8 @@ if (cpid == 0) { //Child osync_queue_set_message_handler(client_queue, client_handler1, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1122,7 +1123,8 @@ } else { osync_queue_set_message_handler(server_queue, server_handler1, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1272,7 +1274,8 @@ osync_queue_set_message_handler(client_queue, client_handler2, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1312,7 +1315,8 @@ osync_queue_set_message_handler(server_queue, server_handler2, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1451,7 +1455,8 @@ osync_queue_set_message_handler(client_queue, client_handler3, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1492,7 +1497,8 @@ osync_queue_set_message_handler(server_queue, server_handler_abort, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1655,7 +1661,8 @@ osync_queue_set_message_handler(client_queue, client_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1686,7 +1693,8 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1863,7 +1871,8 @@ osync_queue_set_message_handler(client_queue, client_handler2, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -1913,7 +1922,8 @@ osync_queue_set_message_handler(server_queue, server_handler2, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); + osync_assert(error == NULL); osync_thread_start(thread); @@ -2003,7 +2013,7 @@ osync_queue_set_message_handler(client_queue, client_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2044,7 +2054,7 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -2205,7 +2215,7 @@ osync_queue_set_message_handler(client_queue, client_handler5, GINT_TO_POINTER(1)); osync_queue_set_pending_limit(client_queue, OSYNC_QUEUE_PENDING_LIMIT); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2246,7 +2256,7 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -2393,7 +2403,7 @@ osync_queue_set_message_handler(client_queue, client_handler_sleep, GINT_TO_POINTER(1)); osync_queue_set_pending_limit(client_queue, OSYNC_QUEUE_PENDING_LIMIT); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2434,7 +2444,7 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -2538,7 +2548,7 @@ osync_queue_set_message_handler(client_queue, client_handler_sleep, GINT_TO_POINTER(1)); osync_queue_set_pending_limit(client_queue, OSYNC_QUEUE_PENDING_LIMIT); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2579,7 +2589,7 @@ osync_queue_set_message_handler(server_queue, server_handler_abort, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -2737,7 +2747,7 @@ // Set pending limit to 3 so response wil be delayed at most 3 seconds osync_queue_set_pending_limit(client_queue, 3); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2784,7 +2794,7 @@ osync_queue_set_message_handler(server_queue, server_handler_abort, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -2923,7 +2933,7 @@ osync_queue_set_message_handler(client_queue, client_handler6, GINT_TO_POINTER(1)); osync_queue_set_pending_limit(client_queue, OSYNC_QUEUE_PENDING_LIMIT); - osync_queue_setup_with_gmainloop(client_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); osync_thread_start(thread); @@ -2963,7 +2973,7 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); @@ -3062,7 +3072,7 @@ osync_queue_set_pending_limit(client_queue, OSYNC_QUEUE_PENDING_LIMIT); /* Do not start receiver */ - /* osync_queue_setup_with_gmainloop(client_queue, context); */ + /* osync_assert(osync_queue_setup_with_gmainloop(client_queue, context, &error)); */ osync_thread_start(thread); @@ -3102,7 +3112,7 @@ osync_queue_set_message_handler(server_queue, server_handler4, GINT_TO_POINTER(1)); - osync_queue_setup_with_gmainloop(server_queue, context); + osync_assert(osync_queue_setup_with_gmainloop(server_queue, context, &error)); osync_thread_start(thread); |
From: <svn...@op...> - 2009-09-17 20:16:31
|
Author: dgollub Date: Thu Sep 17 22:16:15 2009 New Revision: 5788 URL: http://www.opensync.org/changeset/5788 Log: Adapt file-format to latest Format plugin api changes Modified: plugins/file-sync/src/file.c plugins/file-sync/src/plain.c Modified: plugins/file-sync/src/file.c ============================================================================== --- plugins/file-sync/src/file.c Thu Sep 17 20:33:01 2009 (r5787) +++ plugins/file-sync/src/file.c Thu Sep 17 22:16:15 2009 (r5788) @@ -27,7 +27,7 @@ #include "file.h" -static OSyncConvCmpResult compare_file(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_file(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { OSyncFileFormat *leftfile = (OSyncFileFormat *)leftdata; OSyncFileFormat *rightfile = (OSyncFileFormat *)rightdata; @@ -101,7 +101,7 @@ return FALSE; } -static void destroy_file(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_file(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { OSyncFileFormat *file = (OSyncFileFormat *)input; @@ -112,6 +112,8 @@ g_free(file->path); g_free(file); + + return TRUE; } static osync_bool duplicate_file(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *user_data, OSyncError **error) @@ -160,7 +162,7 @@ return lastmod; } -static char *print_file(const char *data, unsigned int size, void *user_data) +static char *print_file(const char *data, unsigned int size, void *user_data, OSyncError **error) { OSyncFileFormat *file = (OSyncFileFormat *)data; Modified: plugins/file-sync/src/plain.c ============================================================================== --- plugins/file-sync/src/plain.c Thu Sep 17 20:33:01 2009 (r5787) +++ plugins/file-sync/src/plain.c Thu Sep 17 22:16:15 2009 (r5788) @@ -24,7 +24,7 @@ #include <opensync/opensync.h> #include <opensync/opensync-format.h> -static OSyncConvCmpResult compare_plain(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_plain(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { /* Consider empty block equal NULL pointers */ if (!leftsize) leftdata = NULL; @@ -53,9 +53,11 @@ return TRUE; } -static void destroy_plain(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_plain(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { g_free(input); + + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) |
From: <svn...@op...> - 2009-09-17 18:33:18
|
Author: dgollub Date: Thu Sep 17 20:33:01 2009 New Revision: 5787 URL: http://www.opensync.org/changeset/5787 Log: Ported xmlformat plugin to latest format plugin API changes Modified: format-plugins/xmlformat/trunk/src/xmlformat-doc.c format-plugins/xmlformat/trunk/src/xmlformat.c format-plugins/xmlformat/trunk/src/xmlformat.h format-plugins/xmlformat/trunk/tests/check_merger.c format-plugins/xmlformat/trunk/tests/check_xmlformat.c Modified: format-plugins/xmlformat/trunk/src/xmlformat-doc.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat-doc.c Thu Sep 17 20:29:33 2009 (r5786) +++ format-plugins/xmlformat/trunk/src/xmlformat-doc.c Thu Sep 17 20:33:01 2009 (r5787) @@ -85,7 +85,7 @@ static osync_bool from_xml(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) { *free_input = TRUE; - return osync_xmlformat_assemble((OSyncXMLFormat *)input, output, outpsize); + return osync_xmlformat_assemble((OSyncXMLFormat *)input, output, outpsize, error); } static osync_bool to_xml(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) @@ -98,9 +98,10 @@ return TRUE; } -static void destroy(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { free(input); + return TRUE; } static osync_bool register_format(OSyncFormatEnv *env, const char *name, const char *objtype) Modified: format-plugins/xmlformat/trunk/src/xmlformat.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.c Thu Sep 17 20:29:33 2009 (r5786) +++ format-plugins/xmlformat/trunk/src/xmlformat.c Thu Sep 17 20:33:01 2009 (r5787) @@ -24,9 +24,10 @@ #include "xmlformat.h" -void destroy_xmlformat(char *input, unsigned int inpsize, void *userdata) +osync_bool destroy_xmlformat(char *input, unsigned int inpsize, void *userdata, OSyncError **error) { osync_xmlformat_unref((OSyncXMLFormat *)input); + return TRUE; } static osync_bool duplicate_xmlformat(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *userdata, OSyncError **error) @@ -37,19 +38,22 @@ osync_trace(TRACE_ENTRY, "%s(%s, %p, %i, %p, %p, %p, %p, %p)", __func__, uid, input, insize, newuid, output, outsize, dirty, error); - osync_xmlformat_assemble((OSyncXMLFormat *) input, &buffer, &size); + if (!osync_xmlformat_assemble((OSyncXMLFormat *) input, &buffer, &size, error)) + goto error; xmlformat = osync_xmlformat_parse(buffer, size, error); - if (!xmlformat) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; - } + if (!xmlformat) + goto error; *dirty = TRUE; *newuid = g_strdup_printf ("%s-dupe", uid); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } @@ -69,7 +73,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; } -char *print_xmlformat(const char *data, unsigned int size, void *userdata) +char *print_xmlformat(const char *data, unsigned int size, void *userdata, OSyncError **error) { char *buffer; unsigned int i; @@ -77,10 +81,13 @@ osync_assert(data); osync_assert(size > 0); - if(!osync_xmlformat_assemble((OSyncXMLFormat *)data, &buffer, &i)) - return NULL; + if(!osync_xmlformat_assemble((OSyncXMLFormat *)data, &buffer, &i, error)) + goto error; return buffer; + +error: + return NULL; } osync_bool marshal_xmlformat(const char *input, unsigned int inpsize, OSyncMarshal *marshal, void *userdata, OSyncError **error) @@ -88,7 +95,7 @@ char *buffer; unsigned int size; - if (!osync_xmlformat_assemble((OSyncXMLFormat *)input, &buffer, &size)) + if (!osync_xmlformat_assemble((OSyncXMLFormat *)input, &buffer, &size, error)) goto error; if (!osync_marshal_write_buffer(marshal, buffer, (int)size, error)) @@ -118,7 +125,8 @@ * Demarshal the entire XMLFormat struct, including the sorte * attribute to keep this information. */ - osync_xmlformat_sort(xmlformat); + if (!osync_xmlformat_sort(xmlformat, error)) + goto error; g_free(buffer); @@ -132,7 +140,7 @@ } -OSyncConvCmpResult compare_contact(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata) +OSyncConvCmpResult compare_contact(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata, OSyncError **error) { char* keys_content[] = {"Content", NULL}; char* keys_name[] = {"FirstName", "LastName", NULL}; @@ -155,15 +163,19 @@ return ret; } -static void create_contact(char **data, unsigned int *size, void *userdata) +static osync_bool create_contact(char **data, unsigned int *size, void *userdata, OSyncError **error) { - OSyncError *error = NULL; - *data = (char *)osync_xmlformat_new("contact", &error); + *data = (char *)osync_xmlformat_new("contact", error); if (!*data) - osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(&error)); + goto error; + + return TRUE; +error: + osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } -static OSyncConvCmpResult compare_event(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata) +static OSyncConvCmpResult compare_event(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata, OSyncError **error) { char* keys_content[] = {"Content", NULL}; OSyncXMLPoints points[] = { @@ -190,15 +202,20 @@ return ret; } -void create_event(char **data, unsigned int *size, void *userdata) +osync_bool create_event(char **data, unsigned int *size, void *userdata, OSyncError **error) { - OSyncError *error = NULL; - *data = (char *)osync_xmlformat_new("event", &error); + *data = (char *)osync_xmlformat_new("event", error); if (!*data) - osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(&error)); + goto error; + + return TRUE; + +error: + osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } -static OSyncConvCmpResult compare_todo(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata) +static OSyncConvCmpResult compare_todo(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata, OSyncError **error) { char* keys_content[] = {"Content", NULL}; OSyncXMLPoints points[] = { @@ -225,15 +242,20 @@ return ret; } -static void create_todo(char **data, unsigned int *size, void *userdata) +static osync_bool create_todo(char **data, unsigned int *size, void *userdata, OSyncError **error) { - OSyncError *error = NULL; - *data = (char *)osync_xmlformat_new("todo", &error); + *data = (char *)osync_xmlformat_new("todo", error); if (!*data) - osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(&error)); + goto error; + + return TRUE; + +error: + osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } -static OSyncConvCmpResult compare_note(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata) +static OSyncConvCmpResult compare_note(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata, OSyncError **error) { char* keys_content[] = {"Content", NULL}; OSyncXMLPoints points[] = { @@ -258,12 +280,17 @@ return ret; } -static void create_note(char **data, unsigned int *size, void *userdata) +static osync_bool create_note(char **data, unsigned int *size, void *userdata, OSyncError **error) { - OSyncError *error = NULL; - *data = (char *)osync_xmlformat_new("note", &error); + *data = (char *)osync_xmlformat_new("note", error); if (!*data) - osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(&error)); + goto error; + + return TRUE; + +error: + osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } static time_t get_revision(const char *data, unsigned int size, const char *attribute, OSyncError **error) @@ -338,17 +365,19 @@ return ret; } -static void finalize(void *userdata) +static osync_bool finalize(void *userdata, OSyncError **error) { XMLFormat *xmlformat_data = (XMLFormat *) userdata; if (!userdata) - return; + return TRUE; if (xmlformat_data->xmlformat_schema) osync_xmlformat_schema_unref(xmlformat_data->xmlformat_schema); osync_free(xmlformat_data); + + return TRUE; } static void *initialize(const char *objtype, OSyncError **error) @@ -368,7 +397,7 @@ return (void *) userdata; error_and_free: - finalize(userdata); + finalize(userdata, NULL); error: osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return NULL; Modified: format-plugins/xmlformat/trunk/src/xmlformat.h ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.h Thu Sep 17 20:29:33 2009 (r5786) +++ format-plugins/xmlformat/trunk/src/xmlformat.h Thu Sep 17 20:33:01 2009 (r5787) @@ -61,9 +61,9 @@ } XMLFormat; -void destroy_xmlformat(char *input, unsigned int inpsize, void *userdata); +osync_bool destroy_xmlformat(char *input, unsigned int inpsize, void *userdata, OSyncError **errror); osync_bool copy_xmlformat(const char *input, unsigned int inpsize, char **output, unsigned int *outpsize, void *userdata, OSyncError **error); -char *print_xmlformat(const char *data, unsigned int size, void *userdata); +char *print_xmlformat(const char *data, unsigned int size, void *userdata, OSyncError **error); int xmlformat_get_points(OSyncXMLPoints points[], int* cur_pos, int basic_points, const char* fieldname); @@ -75,7 +75,7 @@ osync_bool marshal_xmlformat(const char *input, unsigned int inpsize, OSyncMarshal *marshal, void *userdata, OSyncError **error); osync_bool demarshal_xmlformat(OSyncMarshal *marshal, char **output, unsigned int *outpsize, void *userdata, OSyncError **error); -OSyncConvCmpResult compare_contact(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata); +OSyncConvCmpResult compare_contact(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *userdata, OSyncError **error); #endif /* XMLFORMAT_H_ */ Modified: format-plugins/xmlformat/trunk/tests/check_merger.c ============================================================================== --- format-plugins/xmlformat/trunk/tests/check_merger.c Thu Sep 17 20:29:33 2009 (r5786) +++ format-plugins/xmlformat/trunk/tests/check_merger.c Thu Sep 17 20:33:01 2009 (r5787) @@ -59,14 +59,16 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); g_free(buffer); - osync_xmlformat_sort(xmlformat); + osync_xmlformat_sort(xmlformat, &error); + fail_unless(error == NULL, NULL); fail_unless(osync_file_read("contact-full.xml", &buffer, &size, &error), NULL); xmlformat_entire = osync_xmlformat_parse(buffer, size, &error); fail_unless(xmlformat_entire != NULL, NULL); fail_unless(error == NULL, NULL); g_free(buffer); - osync_xmlformat_sort(xmlformat_entire); + osync_xmlformat_sort(xmlformat_entire, &error); + fail_unless(error == NULL, NULL); #if 0 fail_unless(osync_file_read("capabilities.xml", &buffer, &size, &error), NULL); @@ -102,14 +104,16 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); g_free(buffer); - osync_xmlformat_sort(xmlformat); + osync_xmlformat_sort(xmlformat, &error); + fail_unless(error == NULL, NULL); fail_unless(osync_file_read("contact-full.xml", &buffer, &size, &error), NULL); xmlformat_entire = osync_xmlformat_parse(buffer, size, &error); fail_unless(xmlformat_entire != NULL, NULL); fail_unless(error == NULL, NULL); g_free(buffer); - osync_xmlformat_sort(xmlformat_entire); + osync_xmlformat_sort(xmlformat_entire, &error); + fail_unless(error == NULL, NULL); //osync_xmlformat_assemble(xmlformat, &buffer, &size); printf("\n%s", buffer); g_free(buffer); //osync_xmlformat_assemble(xmlformat_entire, &buffer, &size); printf("\n%s", buffer); g_free(buffer); Modified: format-plugins/xmlformat/trunk/tests/check_xmlformat.c ============================================================================== --- format-plugins/xmlformat/trunk/tests/check_xmlformat.c Thu Sep 17 20:29:33 2009 (r5786) +++ format-plugins/xmlformat/trunk/tests/check_xmlformat.c Thu Sep 17 20:33:01 2009 (r5787) @@ -32,7 +32,8 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); - fail_unless((print_buffer = print_xmlformat((char *)xmlformat, osync_xmlformat_size(), NULL)) != NULL, NULL); + fail_unless((print_buffer = print_xmlformat((char *)xmlformat, osync_xmlformat_size(), NULL, &error)) != NULL, NULL); + fail_unless(error == NULL, NULL); osync_free(print_buffer); @@ -56,7 +57,8 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); - destroy_xmlformat((char *)xmlformat, osync_xmlformat_size(), NULL); + fail_unless(destroy_xmlformat((char *)xmlformat, osync_xmlformat_size(), NULL, &error), NULL); + fail_unless(error == NULL, NULL); osync_xmlformat_unref(xmlformat); @@ -275,12 +277,14 @@ g_free(buffer1); result = compare_contact((char*)xmlformat1, osync_xmlformat_size(), - (char*)xmlformat2, osync_xmlformat_size(), NULL); + (char*)xmlformat2, osync_xmlformat_size(), NULL, &error); fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); + fail_unless(error == NULL, NULL); result = compare_contact((char*)xmlformat2, osync_xmlformat_size(), - (char*)xmlformat1, osync_xmlformat_size(), NULL); + (char*)xmlformat1, osync_xmlformat_size(), NULL, &error); fail_unless(result == OSYNC_CONV_DATA_SAME, NULL); + fail_unless(error == NULL, NULL); osync_xmlformat_unref((OSyncXMLFormat*)xmlformat1); |
From: <svn...@op...> - 2009-09-17 18:29:42
|
Author: dgollub Date: Thu Sep 17 20:29:33 2009 New Revision: 5786 URL: http://www.opensync.org/changeset/5786 Log: Reference port of the example format plugin for the OSyncFormatFinalizeFunc, OSyncFormatCompareFunc, OSyncFormatCreateFunc, OSyncFormatDestroyFunc, OSyncFormatPrintFunc API changes. See commit r5785 Modified: trunk/docs/examples/plugins/src/format.c Modified: trunk/docs/examples/plugins/src/format.c ============================================================================== --- trunk/docs/examples/plugins/src/format.c Thu Sep 17 20:26:15 2009 (r5785) +++ trunk/docs/examples/plugins/src/format.c Thu Sep 17 20:29:33 2009 (r5786) @@ -14,7 +14,7 @@ } converter_data; -static OSyncConvCmpResult compare_format1(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *data) +static OSyncConvCmpResult compare_format1(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *data, OSyncError **error) { /* * This function can be used to compare two types of your formats. @@ -41,6 +41,10 @@ * return OSYNC_CONV_DATA_MISMATCH; * This means the objects are not the same and not similar. * + * return OSYNC_CONV_DATA_UNKNOWN; + * On any error, and set parameter error with a human readable error + * message. + * */ return OSYNC_CONV_DATA_MISMATCH; } @@ -97,12 +101,14 @@ return TRUE; } -static void destroy_format1(char *input, unsigned int size, void *data) +static osync_bool destroy_format1(char *input, unsigned int size, void *data, OSyncError **error) { /* * Here you have to free the data allocated by your format * */ + + return TRUE; } static osync_bool duplicate_format1(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *data, OSyncError **error) @@ -120,7 +126,7 @@ return TRUE; } -static char *print_format1(const char *data, unsigned int size, void *user_data) +static char *print_format1(const char *data, unsigned int size, void *user_data, OSyncError **error) { /* * If your format is not in a human printable format already @@ -143,11 +149,13 @@ return (void *)format_specific_data; } -void finialize_format1(void *data) { +osync_bool finialize_format1(void *data, OSyncError **error) { /* * Release all format data */ osync_free(data); + + return TRUE; } osync_bool get_format_info(OSyncFormatEnv *env, OSyncError **error) |
From: <svn...@op...> - 2009-09-17 18:26:32
|
Author: dgollub Date: Thu Sep 17 20:26:15 2009 New Revision: 5785 URL: http://www.opensync.org/changeset/5785 Log: Changed Format Plugin API - following function are affected: * OSyncFormatCompareFunc * OSyncFormatCreateFunc * OSyncFormatDestroyFunc * OSyncFormatPrintFunc * OSyncFormatFinalizeFunc Changed API to fit the follwoing format plugin pattern: Individual return type - but not (void)! To easier determine an error. Second last argument: void *userdata Last Argument: OSyncError **error Porting instruction: Add OSyncError** to the prototype of your format plugin functions. Adapt the return value of your plugin function to osync_bool. Modified: trunk/opensync/data/opensync_change.c trunk/opensync/data/opensync_change.h trunk/opensync/data/opensync_data.c trunk/opensync/data/opensync_data.h trunk/opensync/data/opensync_data_internals.h trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_mapping_engine.c trunk/opensync/engine/opensync_mapping_entry_engine.c trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/format/opensync_converter.c trunk/opensync/format/opensync_format_env.c trunk/opensync/format/opensync_objformat.c trunk/opensync/format/opensync_objformat.h trunk/opensync/format/opensync_objformat_internals.h trunk/tests/format-tests/check_conv.c trunk/tests/format-tests/check_converter.c trunk/tests/format-tests/check_objformat.c trunk/tests/mock-plugin/mock_format.c trunk/wrapper/opensync-data.i Modified: trunk/opensync/data/opensync_change.c ============================================================================== --- trunk/opensync/data/opensync_change.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/data/opensync_change.c Thu Sep 17 20:26:15 2009 (r5785) @@ -177,9 +177,9 @@ return change; } -OSyncConvCmpResult osync_change_compare(OSyncChange *leftchange, OSyncChange *rightchange) +OSyncConvCmpResult osync_change_compare(OSyncChange *leftchange, OSyncChange *rightchange, OSyncError **error) { - osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, leftchange, rightchange); + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, leftchange, rightchange, error); osync_assert(rightchange); osync_assert(leftchange); @@ -189,8 +189,8 @@ if (osync_trace_is_enabled()) { char *leftprint, *rightprint; - leftprint = osync_data_get_printable(leftchange->data); - rightprint = osync_data_get_printable(rightchange->data); + leftprint = osync_data_get_printable(leftchange->data, NULL); + rightprint = osync_data_get_printable(rightchange->data, NULL); osync_trace(TRACE_SENSITIVE, "\nleft change (UID:%s):\n%s\n" "right change (UID:%s):\n%s\n", @@ -210,7 +210,7 @@ osync_free(rightprint); } - ret = osync_data_compare(leftchange->data, rightchange->data); + ret = osync_data_compare(leftchange->data, rightchange->data, error); osync_trace(TRACE_EXIT, "%s: Compare data: %i", __func__, ret); return ret; } else { @@ -234,7 +234,7 @@ osync_data_get_data(data, &input, &insize); if (!osync_objformat_duplicate(osync_data_get_objformat(data), osync_change_get_uid(change), input, insize, &newuid, &output, &outsize, dirty, error)) - return FALSE; + goto error; if (newuid) { osync_change_set_uid(change, newuid); @@ -242,11 +242,15 @@ } if (output) { - osync_objformat_destroy(osync_data_get_objformat(data), input, insize); + if (!osync_objformat_destroy(osync_data_get_objformat(data), input, insize, error)) + goto error; + osync_data_set_data(data, output, outsize); } return TRUE; +error: + return FALSE; } Modified: trunk/opensync/data/opensync_change.h ============================================================================== --- trunk/opensync/data/opensync_change.h Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/data/opensync_change.h Thu Sep 17 20:26:15 2009 (r5785) @@ -145,18 +145,20 @@ /*! @brief Compares two changes * * Compares the two given changes and returns: - * CONV_DATA_MISMATCH if they are not the same - * CONV_DATA_SIMILAR if the are not the same but look similar - * CONV_DATA_SAME if they are exactly the same + * OSYNC_CONV_DATA_MISMATCH if they are not the same + * OSYNC_CONV_DATA_SIMILAR if the are not the same but look similar + * OSYNC_CONV_DATA_SAME if they are exactly the same + * OSYNC_CONV_DATA_UNKNOWN if the reuslt is uknown, there was a error * This function does also compare changetypes etc unlike * osync_data_compare() * * @param leftchange The left change to compare * @param rightchange The right change to compare + * @param error An error struct * @returns The result of the comparison * */ -OSYNC_EXPORT OSyncConvCmpResult osync_change_compare(OSyncChange *leftchange, OSyncChange *rightchange); +OSYNC_EXPORT OSyncConvCmpResult osync_change_compare(OSyncChange *leftchange, OSyncChange *rightchange, OSyncError **error); /*@}*/ Modified: trunk/opensync/data/opensync_data.c ============================================================================== --- trunk/opensync/data/opensync_data.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/data/opensync_data.c Thu Sep 17 20:26:15 2009 (r5785) @@ -56,11 +56,16 @@ void osync_data_unref(OSyncData *data) { + OSyncError *error = NULL; + osync_assert(data); if (g_atomic_int_dec_and_test(&(data->ref_count))) { if (data->data) - osync_objformat_destroy(data->objformat, data->data, data->size); + if (!osync_objformat_destroy(data->objformat, data->data, data->size, &error)) { + /* FIXME: We can't deal here with an error - right? Any other chance?! */ + osync_error_unref(&error); + } if (data->objformat) osync_objformat_unref(data->objformat); @@ -136,9 +141,15 @@ void osync_data_set_data(OSyncData *data, char *buffer, unsigned int size) { + OSyncError *error = NULL; + osync_assert(data); if (data->data) { - osync_objformat_destroy(data->objformat, data->data, data->size); + if (!osync_objformat_destroy(data->objformat, data->data, data->size, &error)) { + /* FIXME: how to handle this? Do we really want to expose here an OSyncError*?! */ + osync_error_unref(&error); /* For now just ignore the error*/ + return; + } } data->data = buffer; data->size = size; @@ -176,7 +187,7 @@ return data; } -OSyncConvCmpResult osync_data_compare(OSyncData *leftdata, OSyncData *rightdata) +OSyncConvCmpResult osync_data_compare(OSyncData *leftdata, OSyncData *rightdata, OSyncError **error) { OSyncConvCmpResult ret = 0; osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, leftdata, rightdata); @@ -203,12 +214,12 @@ return OSYNC_CONV_DATA_MISMATCH; } - ret = osync_objformat_compare(leftdata->objformat, leftdata->data, leftdata->size, rightdata->data, rightdata->size); + ret = osync_objformat_compare(leftdata->objformat, leftdata->data, leftdata->size, rightdata->data, rightdata->size, error); osync_trace(TRACE_EXIT, "%s: %i", __func__, ret); return ret; } -char *osync_data_get_printable(OSyncData *data) +char *osync_data_get_printable(OSyncData *data, OSyncError **error) { OSyncObjFormat *format = NULL; osync_assert(data); @@ -216,7 +227,7 @@ format = data->objformat; osync_assert(format); - return osync_objformat_print(format, data->data, data->size); + return osync_objformat_print(format, data->data, data->size, error); } time_t osync_data_get_revision(OSyncData *data, OSyncError **error) Modified: trunk/opensync/data/opensync_data.h ============================================================================== --- trunk/opensync/data/opensync_data.h Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/data/opensync_data.h Thu Sep 17 20:26:15 2009 (r5785) @@ -119,9 +119,11 @@ * objects they should specify a print function. * * @param data The data to get printable - * @return A string describing the object which must be freed by the caller with osync_free() + * @param error An error struct + * @return A string describing the object which must be freed by the caller with osync_free(). + * NULL on an error. */ -OSYNC_EXPORT char *osync_data_get_printable(OSyncData *data); +OSYNC_EXPORT char *osync_data_get_printable(OSyncData *data, OSyncError **error); /** @brief Clone a data object * Modified: trunk/opensync/data/opensync_data_internals.h ============================================================================== --- trunk/opensync/data/opensync_data_internals.h Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/data/opensync_data_internals.h Thu Sep 17 20:26:15 2009 (r5785) @@ -46,10 +46,11 @@ * * @param leftdata The left data to compare * @param rightdata The right data to compare + * @param error An error struct * @returns The result of the comparison * */ -OSyncConvCmpResult osync_data_compare(OSyncData *leftdata, OSyncData *rightdata); +OSyncConvCmpResult osync_data_compare(OSyncData *leftdata, OSyncData *rightdata, OSyncError **error); /*@}*/ #endif /* _OPENSYNC_DATA_INTERNALS_H_ */ Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/engine/opensync_engine.c Thu Sep 17 20:26:15 2009 (r5785) @@ -305,15 +305,16 @@ osync_data_get_data(osync_change_get_data(change), &buffer, &size); - /* FIXME + /* TODO: Implement MERGER here ret = osync_objformat_merge(objformat, &buffer, &size, entirebuf, entsize, caps, &error); osync_free(entirebuf); if (ret != TRUE) goto error; */ + osync_trace(TRACE_SENSITIVE, "Merge result:\n%s\n", - osync_objformat_print(objformat, buffer, size)); + osync_objformat_print(objformat, buffer, size, NULL)); } } } Modified: trunk/opensync/engine/opensync_mapping_engine.c ============================================================================== --- trunk/opensync/engine/opensync_mapping_engine.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/engine/opensync_mapping_engine.c Thu Sep 17 20:26:15 2009 (r5785) @@ -466,7 +466,7 @@ /* XXX: this compare is obsolate?! we do one complicated compare with dermging before this step! */ #if 1 - if (osync_change_compare(leftchange, rightchange) != OSYNC_CONV_DATA_SAME) { + if (osync_change_compare(leftchange, rightchange, NULL /* hopefully obsoalte*/) != OSYNC_CONV_DATA_SAME) { engine->conflict = TRUE; goto conflict; } else @@ -722,6 +722,7 @@ OSyncList *e = NULL; OSyncChange *change = NULL; OSyncMappingEntryEngine *entry = NULL; + OSyncConvCmpResult cmpret; mapping = m->data; /* Get the first change of the mapping to test. Compare the given change with this change. @@ -733,11 +734,18 @@ break; } - if (!change || osync_change_compare(existingEntry->change, change) == OSYNC_CONV_DATA_SAME){ + if (change) + cmpret = osync_change_compare(existingEntry->change, change, error); + + if (!change || cmpret == OSYNC_CONV_DATA_SAME) { existingChange = existingEntry->change; osync_change_ref(existingChange); osync_assert(osync_change_get_uid(existingChange)); break; + } else if (cmpret == OSYNC_CONV_DATA_UNKNOWN) { + /* This is an error during comparing */ + goto error; + break; } Modified: trunk/opensync/engine/opensync_mapping_entry_engine.c ============================================================================== --- trunk/opensync/engine/opensync_mapping_entry_engine.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/engine/opensync_mapping_entry_engine.c Thu Sep 17 20:26:15 2009 (r5785) @@ -198,7 +198,7 @@ goto error_free_marshal; */ osync_trace(TRACE_SENSITIVE, "Post Demerge:\n%s\n", - osync_objformat_print(objformat, buffer, size)); + osync_objformat_print(objformat, buffer, size, NULL)); osync_marshal_unref(marshal); Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/engine/opensync_obj_engine.c Thu Sep 17 20:26:15 2009 (r5785) @@ -326,7 +326,7 @@ change2 = mapping_change; } - tmp_result = osync_change_compare(change1, change2); + tmp_result = osync_change_compare(change1, change2, error); if (caps1) osync_change_unref(clone_change1); @@ -345,6 +345,9 @@ /* SIMILAR is better than MISMATCH */ result = OSYNC_CONV_DATA_SIMILAR; *mapping_engine = tmp_mapping_engine; + } else if (tmp_result == OSYNC_CONV_DATA_UNKNOWN) { + /* This is an error, handle th error. */ + goto error; } } } Modified: trunk/opensync/format/opensync_converter.c ============================================================================== --- trunk/opensync/format/opensync_converter.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/format/opensync_converter.c Thu Sep 17 20:26:15 2009 (r5785) @@ -201,7 +201,8 @@ /* Good. We now have some new data. Now we have to see what to do with the old data */ if (free_input) { - osync_objformat_destroy(converter->source_format, input_data, input_size); + if (!osync_objformat_destroy(converter->source_format, input_data, input_size, error)) + goto error; } osync_data_set_data(data, output_data, output_size); } Modified: trunk/opensync/format/opensync_format_env.c ============================================================================== --- trunk/opensync/format/opensync_format_env.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/format/opensync_format_env.c Thu Sep 17 20:26:15 2009 (r5785) @@ -190,6 +190,7 @@ { OSyncObjFormat *objformat = NULL; unsigned int i, num_objformats; + OSyncError *error = NULL; osync_return_if_fail(env); osync_trace(TRACE_ENTRY, "%s(%p)", __func__, env); @@ -199,7 +200,10 @@ for (i = 0; i < num_objformats; i++ ) { objformat = osync_format_env_nth_objformat(env, i); osync_assert(objformat); - osync_objformat_finalize(objformat); + if (!osync_objformat_finalize(objformat, &error)) { + /* FIXME, how to handle errors in here? */ + osync_error_unref(&error); /* fow now just ignore the error */ + } } osync_trace(TRACE_EXIT, "%s", __func__); } Modified: trunk/opensync/format/opensync_objformat.c ============================================================================== --- trunk/opensync/format/opensync_objformat.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/format/opensync_objformat.c Thu Sep 17 20:26:15 2009 (r5785) @@ -114,11 +114,11 @@ format->finalize_func = finalize_func; } -void osync_objformat_finalize(OSyncObjFormat *format) +osync_bool osync_objformat_finalize(OSyncObjFormat *format, OSyncError **error) { - osync_return_if_fail(format); - osync_return_if_fail(format->finalize_func); - format->finalize_func(format->user_data); + osync_return_val_if_fail(format, TRUE); + osync_return_val_if_fail(format->finalize_func, TRUE); + return format->finalize_func(format->user_data, error); } void osync_objformat_set_compare_func(OSyncObjFormat *format, OSyncFormatCompareFunc cmp_func) @@ -127,11 +127,11 @@ format->cmp_func = cmp_func; } -OSyncConvCmpResult osync_objformat_compare(OSyncObjFormat *format, const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize) +OSyncConvCmpResult osync_objformat_compare(OSyncObjFormat *format, const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, OSyncError **error) { osync_return_val_if_fail(format, OSYNC_CONV_DATA_UNKNOWN); osync_return_val_if_fail(format->cmp_func, OSYNC_CONV_DATA_UNKNOWN); - return format->cmp_func(leftdata, leftsize, rightdata, rightsize, format->user_data); + return format->cmp_func(leftdata, leftsize, rightdata, rightsize, format->user_data, error); } void osync_objformat_set_destroy_func(OSyncObjFormat *format, OSyncFormatDestroyFunc destroy_func) @@ -140,16 +140,16 @@ format->destroy_func = destroy_func; } -void osync_objformat_destroy(OSyncObjFormat *format, char *data, unsigned int size) +osync_bool osync_objformat_destroy(OSyncObjFormat *format, char *data, unsigned int size, OSyncError **error) { - osync_return_if_fail(format); + osync_return_val_if_fail(format, TRUE); if (!format->destroy_func) { osync_trace(TRACE_INTERNAL, "Format %s don't have a destroy function. Possible memory leak", format->name); - return; + return TRUE; } - format->destroy_func(data, size, format->user_data); + return format->destroy_func(data, size, format->user_data, error); } void osync_objformat_set_copy_func(OSyncObjFormat *format, OSyncFormatCopyFunc copy_func) @@ -205,12 +205,12 @@ format->create_func = create_func; } -void osync_objformat_create(OSyncObjFormat *format, char **data, unsigned int *size) +osync_bool osync_objformat_create(OSyncObjFormat *format, char **data, unsigned int *size, OSyncError **error) { - osync_return_if_fail(format); - osync_return_if_fail(format->create_func); + osync_return_val_if_fail(format, TRUE); + osync_return_val_if_fail(format->create_func, TRUE); - format->create_func(data, size, format->user_data); + return format->create_func(data, size, format->user_data, error); } void osync_objformat_set_print_func(OSyncObjFormat *format, OSyncFormatPrintFunc print_func) @@ -219,7 +219,7 @@ format->print_func = print_func; } -char *osync_objformat_print(OSyncObjFormat *format, const char *data, unsigned int size) +char *osync_objformat_print(OSyncObjFormat *format, const char *data, unsigned int size, OSyncError **error) { osync_return_val_if_fail(format, NULL); osync_return_val_if_fail(data, NULL); @@ -228,7 +228,7 @@ if (!format->print_func) return g_strndup(data, size); - return format->print_func(data, size, format->user_data); + return format->print_func(data, size, format->user_data, error); } void osync_objformat_set_revision_func(OSyncObjFormat *format, OSyncFormatRevisionFunc revision_func) Modified: trunk/opensync/format/opensync_objformat.h ============================================================================== --- trunk/opensync/format/opensync_objformat.h Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/format/opensync_objformat.h Thu Sep 17 20:26:15 2009 (r5785) @@ -31,14 +31,14 @@ /*@{*/ typedef void * (* OSyncFormatInitializeFunc) (OSyncError **error); -typedef void (* OSyncFormatFinalizeFunc) (void *user_data); +typedef osync_bool (* OSyncFormatFinalizeFunc) (void *user_data, OSyncError **error); -typedef OSyncConvCmpResult (* OSyncFormatCompareFunc) (const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data); +typedef OSyncConvCmpResult (* OSyncFormatCompareFunc) (const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error); typedef osync_bool (* OSyncFormatCopyFunc) (const char *input, unsigned int inpsize, char **output, unsigned int *outpsize, void *user_data, OSyncError **error); typedef osync_bool (* OSyncFormatDuplicateFunc) (const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *user_data, OSyncError **error); -typedef void (* OSyncFormatCreateFunc) (char **data, unsigned int *size, void *user_data); -typedef void (* OSyncFormatDestroyFunc) (char *data, unsigned int size, void *user_data); -typedef char *(* OSyncFormatPrintFunc) (const char *data, unsigned int size, void *user_data); +typedef osync_bool (* OSyncFormatCreateFunc) (char **data, unsigned int *size, void *user_data, OSyncError **error); +typedef osync_bool (* OSyncFormatDestroyFunc) (char *data, unsigned int size, void *user_data, OSyncError **error); +typedef char *(* OSyncFormatPrintFunc) (const char *data, unsigned int size, void *user_data, OSyncError **error); typedef time_t (* OSyncFormatRevisionFunc) (const char *data, unsigned int size, void *user_data, OSyncError **error); typedef osync_bool (* OSyncFormatMarshalFunc) (const char *input, unsigned int inpsize, OSyncMarshal *marshal, void *user_data, OSyncError **error); typedef osync_bool (* OSyncFormatDemarshalFunc) (OSyncMarshal *marshal, char **output, unsigned int *outpsize, void *user_data, OSyncError **error); @@ -230,10 +230,11 @@ * @param format Pointer to the object format * @param data Pointer to the object to destroy * @param size Size in bytes of the object specified by the data parameter + * @param error Pointer to an error struct * @returns Human readable string of the specified object. Caller is responsible for freeing the string with osync_free(). * Or NULL if size is 0 or data NULL. */ -OSYNC_EXPORT char *osync_objformat_print(OSyncObjFormat *format, const char *data, unsigned int size); +OSYNC_EXPORT char *osync_objformat_print(OSyncObjFormat *format, const char *data, unsigned int size, OSyncError **error); /*@}*/ Modified: trunk/opensync/format/opensync_objformat_internals.h ============================================================================== --- trunk/opensync/format/opensync_objformat_internals.h Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/opensync/format/opensync_objformat_internals.h Thu Sep 17 20:26:15 2009 (r5785) @@ -49,8 +49,10 @@ * this object format got registered this function is NOOP. * * @param format Pointer to the object format + * @param error Pointer to an error struct + * @returns TRUE on success, FALSE otherwise */ -OSYNC_TEST_EXPORT void osync_objformat_finalize(OSyncObjFormat *format); +OSYNC_TEST_EXPORT osync_bool osync_objformat_finalize(OSyncObjFormat *format, OSyncError **error); /** * @brief Compares two objects of the same object format @@ -62,9 +64,10 @@ * @param leftsize the size in bytes of the object specified by the leftdata parameter * @param rightdata Pointer to the other object to compare * @param rightsize the size in bytes of the object specified by the rightdata parameter + * @param error Pointer to an error struct * @returns the comparison result */ -OSYNC_TEST_EXPORT OSyncConvCmpResult osync_objformat_compare(OSyncObjFormat *format, const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize); +OSYNC_TEST_EXPORT OSyncConvCmpResult osync_objformat_compare(OSyncObjFormat *format, const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, OSyncError **error); /** * @brief Duplicate an object of the specified format @@ -91,16 +94,21 @@ * @param format Pointer to the object format * @param data Pointer to the data * @param size Size of the data + * @param error Pointer to an error struct + * @returns TRUE on success, FALSE otherwise */ -OSYNC_TEST_EXPORT void osync_objformat_create(OSyncObjFormat *format, char **data, unsigned int *size); +OSYNC_TEST_EXPORT osync_bool osync_objformat_create(OSyncObjFormat *format, char **data, unsigned int *size, OSyncError **error); /** * @brief Destroy an object of the specified format * @param format Pointer to the object format * @param data Pointer to the object to destroy * @param size Size in bytes of the object specified by the data parameter + * @param error Pointer to an error struct + * @returns TRUE on success, FALSE otherwise + * */ -OSYNC_TEST_EXPORT void osync_objformat_destroy(OSyncObjFormat *format, char *data, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_objformat_destroy(OSyncObjFormat *format, char *data, unsigned int size, OSyncError **error); /** * @brief Copy data in the specified way of the format Modified: trunk/tests/format-tests/check_conv.c ============================================================================== --- trunk/tests/format-tests/check_conv.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/tests/format-tests/check_conv.c Thu Sep 17 20:26:15 2009 (r5785) @@ -361,11 +361,13 @@ } #endif -static void format_simple_destroy(char *data, unsigned int size, void *user_data) +static osync_bool format_simple_destroy(char *data, unsigned int size, void *user_data, OSyncError **error) { osync_assert(data); if (size) g_free(data); + + return TRUE; } Modified: trunk/tests/format-tests/check_converter.c ============================================================================== --- trunk/tests/format-tests/check_converter.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/tests/format-tests/check_converter.c Thu Sep 17 20:26:15 2009 (r5785) @@ -10,21 +10,25 @@ return TRUE; } -void destroy_format(char *data, unsigned int size, void *user_data) +osync_bool destroy_format(char *data, unsigned int size, void *user_data, OSyncError **error) { g_free(data); + + return TRUE; } typedef struct testdata { char *string1; } testdata; -void destroy_testdata(char *input, unsigned int size, void *user_data) +osync_bool destroy_testdata(char *input, unsigned int size, void *user_data, OSyncError **error) { testdata *data = (testdata *)input; if (data->string1) g_free(data->string1); g_free(data); + + return TRUE; } osync_bool conv_format1_to_format2_const(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) Modified: trunk/tests/format-tests/check_objformat.c ============================================================================== --- trunk/tests/format-tests/check_objformat.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/tests/format-tests/check_objformat.c Thu Sep 17 20:26:15 2009 (r5785) @@ -4,7 +4,7 @@ #include <opensync/opensync-serializer.h> #include "opensync/format/opensync_objformat_internals.h" -static OSyncConvCmpResult compare_format(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_format(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { if (rightsize == leftsize && !strcmp(leftdata, rightdata)) return OSYNC_CONV_DATA_SAME; @@ -12,9 +12,10 @@ return OSYNC_CONV_DATA_MISMATCH; } -void destroy_format(char *data, unsigned int size, void *user_data) +osync_bool destroy_format(char *data, unsigned int size, void *user_data, OSyncError **error) { g_free(data); + return TRUE; } osync_bool copy_format(const char *indata, unsigned int insize, char **outdata, unsigned int *outsize, void *user_data, OSyncError **error) @@ -31,13 +32,14 @@ return TRUE; } -void create_format(char **data, unsigned int *size, void *user_data) +osync_bool create_format(char **data, unsigned int *size, void *user_data, OSyncError **error) { *data = strdup("data"); *size = 5; + return TRUE; } -char *print_format(const char *data, unsigned int size, void *user_data) +char *print_format(const char *data, unsigned int size, void *user_data, OSyncError **error) { return strdup(data); } @@ -128,8 +130,11 @@ fail_unless(error == NULL, NULL); osync_objformat_set_compare_func(format, compare_format); - fail_unless(osync_objformat_compare(format, "test", 5, "test", 5) == OSYNC_CONV_DATA_SAME, NULL); - fail_unless(osync_objformat_compare(format, "test", 5, "tesd", 5) == OSYNC_CONV_DATA_MISMATCH, NULL); + fail_unless(osync_objformat_compare(format, "test", 5, "test", 5, &error) == OSYNC_CONV_DATA_SAME, NULL); + fail_unless(error == NULL, NULL); + + fail_unless(osync_objformat_compare(format, "test", 5, "tesd", 5, &error) == OSYNC_CONV_DATA_MISMATCH, NULL); + fail_unless(error == NULL, NULL); osync_objformat_unref(format); @@ -147,7 +152,8 @@ fail_unless(error == NULL, NULL); osync_objformat_set_destroy_func(format, destroy_format); - osync_objformat_destroy(format, strdup("test"), 5); + osync_objformat_destroy(format, strdup("test"), 5, &error); + fail_unless(error == NULL, NULL); osync_objformat_unref(format); @@ -174,7 +180,8 @@ fail_unless(!strcmp(outdata, "test"), NULL); fail_unless(outsize == 5, NULL); - osync_objformat_destroy(format, outdata, 5); + osync_objformat_destroy(format, outdata, 5, &error); + fail_unless(error == NULL, NULL); osync_objformat_unref(format); @@ -221,12 +228,14 @@ char *outdata = NULL; unsigned int outsize = 0; - osync_objformat_create(format, &outdata, &outsize); + osync_objformat_create(format, &outdata, &outsize, &error); + fail_unless(error == NULL, NULL); fail_unless(!strcmp(outdata, "data"), NULL); fail_unless(outsize == 5, NULL); - osync_objformat_destroy(format, outdata, 5); + osync_objformat_destroy(format, outdata, 5, &error); + fail_unless(error == NULL, NULL); osync_objformat_unref(format); @@ -244,7 +253,8 @@ fail_unless(error == NULL, NULL); osync_objformat_set_print_func(format, print_format); - char *print = osync_objformat_print(format, "test", 5); + char *print = osync_objformat_print(format, "test", 5, &error); + fail_unless(error == NULL, NULL); fail_unless(!strcmp(print, "test"), NULL); g_free(print); Modified: trunk/tests/mock-plugin/mock_format.c ============================================================================== --- trunk/tests/mock-plugin/mock_format.c Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/tests/mock-plugin/mock_format.c Thu Sep 17 20:26:15 2009 (r5785) @@ -45,7 +45,7 @@ return FALSE; } -static OSyncConvCmpResult compare_file(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data) +static OSyncConvCmpResult compare_file(const char *leftdata, unsigned int leftsize, const char *rightdata, unsigned int rightsize, void *user_data, OSyncError **error) { osync_trace(TRACE_ENTRY, "%s(%p, %i, %p, %i)", __func__, leftdata, leftsize, rightdata, rightsize); osync_assert(leftdata); @@ -112,7 +112,7 @@ return TRUE; } -static void destroy_file(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_file(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { OSyncFileFormat *file = (OSyncFileFormat *)input; osync_assert(sizeof(OSyncFileFormat) == inpsize); @@ -124,14 +124,18 @@ g_free(file->path); g_free(file); + + return TRUE; } -static void destroy_mockformat2(char *input, unsigned int inpsize, void *user_data) +static osync_bool destroy_mockformat2(char *input, unsigned int inpsize, void *user_data, OSyncError **error) { if (!input || inpsize == 0) - return; + return TRUE; osync_free(input); + + return TRUE; } static osync_bool duplicate_file(const char *uid, const char *input, unsigned int insize, char **newuid, char **output, unsigned int *outsize, osync_bool *dirty, void *user_data, OSyncError **error) @@ -166,20 +170,21 @@ return TRUE; } -static void create_file(char **buffer, unsigned int *size, void *user_data) +static osync_bool create_file(char **buffer, unsigned int *size, void *user_data, OSyncError **error) { - OSyncError *error = NULL; OSyncFileFormat *outfile = osync_try_malloc0(sizeof(OSyncFileFormat), NULL); - outfile->path = osync_rand_str(g_random_int_range(1, 100), &error); - osync_assert(error == NULL); + outfile->path = osync_rand_str(g_random_int_range(1, 100), error); + osync_assert(*error == NULL); - outfile->data = osync_rand_str(g_random_int_range(1, 100), &error); - osync_assert(error == NULL); + outfile->data = osync_rand_str(g_random_int_range(1, 100), error); + osync_assert(*error == NULL); outfile->size = strlen(outfile->data); *buffer = (char *)outfile; *size = sizeof(OSyncFileFormat); + + return TRUE; } static time_t revision_file(const char *input, unsigned int inpsize, void *user_data, OSyncError **error) @@ -193,7 +198,7 @@ return lastmod; } -static char *print_file(const char *data, unsigned int size, void *user_data) +static char *print_file(const char *data, unsigned int size, void *user_data, OSyncError **error) { OSyncFileFormat *file = (OSyncFileFormat *)data; Modified: trunk/wrapper/opensync-data.i ============================================================================== --- trunk/wrapper/opensync-data.i Thu Sep 17 19:02:46 2009 (r5784) +++ trunk/wrapper/opensync-data.i Thu Sep 17 20:26:15 2009 (r5785) @@ -85,7 +85,12 @@ */ char *get_printable() { - return osync_data_get_printable(self); + Error *err = NULL; + char *data = osync_data_get_printable(self, &err); + if (raise_exception_on_error(err)) + return NULL; + else + return data; } time_t get_revision() { @@ -170,7 +175,12 @@ } ConvCmpResult compare(Change *change) { - return osync_change_compare(self, change); + Error *err = NULL; + ConvCmpResult ret = osync_change_compare(self, change, &err); + if (raise_exception_on_error(err)) + return 0; /*FIXME return CONV_DATA_UNKNOWN */ + else + return ret; } /* |
From: <svn...@op...> - 2009-09-17 17:03:01
|
Author: dgollub Date: Thu Sep 17 19:02:46 2009 New Revision: 5784 URL: http://www.opensync.org/changeset/5784 Log: Port vformat plugin to osync_xmlformat_{assemble,sort} API changes See r5783 Modified: format-plugins/vformat/src/xmlformat-vcard.c format-plugins/vformat/src/xmlformat-vevent.c format-plugins/vformat/src/xmlformat-vnote.c Modified: format-plugins/vformat/src/xmlformat-vcard.c ============================================================================== --- format-plugins/vformat/src/xmlformat-vcard.c Thu Sep 17 19:02:06 2009 (r5783) +++ format-plugins/vformat/src/xmlformat-vcard.c Thu Sep 17 19:02:46 2009 (r5784) @@ -1056,11 +1056,15 @@ *outpsize = osync_xmlformat_size(); // XXX: remove this later? - osync_xmlformat_sort(xmlformat); + if (!osync_xmlformat_sort(xmlformat, error)) + goto error; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "Output XMLFormat is:\n%s", str); g_free(str); @@ -1068,6 +1072,10 @@ osync_trace(TRACE_EXIT, "%s: TRUE", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } static void handle_xml_assistant_x_evolution_parameter(VFormatAttribute *attr, OSyncXMLField *xmlfield) @@ -1897,7 +1905,10 @@ OSyncXMLFormat *xmlformat = (OSyncXMLFormat *)input; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "Input XMLFormat is:\n%s", str); g_free(str); @@ -1931,6 +1942,11 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool conv_xmlformat_to_vcard30(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) Modified: format-plugins/vformat/src/xmlformat-vevent.c ============================================================================== --- format-plugins/vformat/src/xmlformat-vevent.c Thu Sep 17 19:02:06 2009 (r5783) +++ format-plugins/vformat/src/xmlformat-vevent.c Thu Sep 17 19:02:46 2009 (r5784) @@ -687,11 +687,15 @@ *outpsize = osync_xmlformat_size(); // XXX: remove this later? - osync_xmlformat_sort(xmlformat); + if (!osync_xmlformat_sort(xmlformat, error)) + goto error; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "Output XMLFormat is:\n%s", str); g_free(str); @@ -699,6 +703,10 @@ osync_trace(TRACE_EXIT, "%s: TRUE", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } static osync_bool conv_xmlformat_to_vcalendar(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, OSyncError **error, int target) @@ -744,7 +752,10 @@ OSyncXMLFormat *xmlformat = (OSyncXMLFormat *)input; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "Input XMLFormat is:\n%s", str); g_free(str); @@ -869,6 +880,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool conv_xmlformat_to_vjournal(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) Modified: format-plugins/vformat/src/xmlformat-vnote.c ============================================================================== --- format-plugins/vformat/src/xmlformat-vnote.c Thu Sep 17 19:02:06 2009 (r5783) +++ format-plugins/vformat/src/xmlformat-vnote.c Thu Sep 17 19:02:46 2009 (r5784) @@ -71,17 +71,25 @@ *output = (char *)xmlformat; *outpsize = osync_xmlformat_size(); - osync_xmlformat_sort(xmlformat); + if (!osync_xmlformat_sort(xmlformat, error)) + goto error; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "... Output XMLFormat is: \n%s", str); g_free(str); vformat_free(vnote); osync_trace(TRACE_EXIT, "%s: TRUE", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } static VFormatAttribute *handle_xml_body_attribute(VFormat *vnote, OSyncXMLField *xmlfield, const char *encoding) @@ -131,7 +139,10 @@ OSyncXMLFormat *xmlformat = (OSyncXMLFormat *)input; unsigned int size; char *str; - osync_xmlformat_assemble(xmlformat, &str, &size); + + if (!osync_xmlformat_assemble(xmlformat, &str, &size, error)) + goto error; + osync_trace(TRACE_SENSITIVE, "Input XMLFormat is:\n%s", str); g_free(str); @@ -163,6 +174,10 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool conv_xmlformat_to_vnote(char *input, unsigned int inpsize, char **output, unsigned int *outpsize, osync_bool *free_input, const char *config, void *userdata, OSyncError **error) |
From: <svn...@op...> - 2009-09-17 17:02:24
|
Author: dgollub Date: Thu Sep 17 19:02:06 2009 New Revision: 5783 URL: http://www.opensync.org/changeset/5783 Log: Add OSyncError** struct to: * osync_xmlformat_sort * osync_xmlformat_assemble To make those interface more future safe refs #1087 Modified: trunk/opensync/xmlformat/opensync_xmlformat.c trunk/opensync/xmlformat/opensync_xmlformat.h trunk/tests/capabilities-tests/check_xmlformat.c trunk/wrapper/opensync-merger.i Modified: trunk/opensync/xmlformat/opensync_xmlformat.c ============================================================================== --- trunk/opensync/xmlformat/opensync_xmlformat.c Thu Sep 17 18:39:09 2009 (r5782) +++ trunk/opensync/xmlformat/opensync_xmlformat.c Thu Sep 17 19:02:06 2009 (r5783) @@ -242,17 +242,17 @@ return NULL; } -osync_bool osync_xmlformat_assemble(OSyncXMLFormat *xmlformat, char **buffer, unsigned int *size) +osync_bool osync_xmlformat_assemble(OSyncXMLFormat *xmlformat, char **buffer, unsigned int *size, OSyncError **error) { osync_assert(xmlformat); osync_assert(buffer); osync_assert(size); xmlDocDumpFormatMemoryEnc(xmlformat->doc, (xmlChar **)buffer, (int *)size, NULL, 1); - return TRUE; + return TRUE; } -void osync_xmlformat_sort(OSyncXMLFormat *xmlformat) +osync_bool osync_xmlformat_sort(OSyncXMLFormat *xmlformat, OSyncError **error) { int index; OSyncXMLField *cur; @@ -266,7 +266,9 @@ goto end; } - list = g_malloc0(sizeof(OSyncXMLField *) * xmlformat->child_count); + list = osync_try_malloc0(sizeof(OSyncXMLField *) * xmlformat->child_count, error); + if (!list) + goto error; index = 0; cur = osync_xmlformat_get_first_field(xmlformat); @@ -301,6 +303,11 @@ end: xmlformat->sorted = TRUE; osync_trace(TRACE_EXIT, "%s", __func__); + return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_xmlformat_is_sorted(OSyncXMLFormat *xmlformat) @@ -344,19 +351,24 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, source, destination); - osync_xmlformat_assemble(source, &buffer, &size); + if (!osync_xmlformat_assemble(source, &buffer, &size, error)) + goto error; + *destination = osync_xmlformat_parse(buffer, size, error); - if (!(*destination)) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; - } + if (!(*destination)) + goto error; - if (source->sorted) (*destination)->sorted = TRUE; + if (source->sorted) + (*destination)->sorted = TRUE; g_free(buffer); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } unsigned int osync_xmlformat_size() Modified: trunk/opensync/xmlformat/opensync_xmlformat.h ============================================================================== --- trunk/opensync/xmlformat/opensync_xmlformat.h Thu Sep 17 18:39:09 2009 (r5782) +++ trunk/opensync/xmlformat/opensync_xmlformat.h Thu Sep 17 19:02:06 2009 (r5783) @@ -97,9 +97,10 @@ * @param buffer The pointer to the buffer which will hold the xml document. It is up * to the caller to free this buffer. * @param size The pointer to the buffer which will hold the size of the xml document - * @return Always returns TRUE. + * @param error The error which will hold the info in case of an error + * @return TRUE on success, FALSE on any error */ -OSYNC_EXPORT osync_bool osync_xmlformat_assemble(OSyncXMLFormat *xmlformat, char **buffer, unsigned int *size); +OSYNC_EXPORT osync_bool osync_xmlformat_assemble(OSyncXMLFormat *xmlformat, char **buffer, unsigned int *size, OSyncError **error); /** * @brief Sort all xmlfields of the xmlformat. @@ -108,8 +109,11 @@ * The recommended approach is to assemble the xmlformat in a sorted way instead. * * @param xmlformat The pointer to the xmlformat object + * @param error The error which will hold the info in case of an error + * @return TRUE on success, FALSE on any error + * */ -OSYNC_EXPORT void osync_xmlformat_sort(OSyncXMLFormat *xmlformat); +OSYNC_EXPORT osync_bool osync_xmlformat_sort(OSyncXMLFormat *xmlformat, OSyncError **error); /** * @brief Check if all xmlfields of an xmlformat are sorted. Modified: trunk/tests/capabilities-tests/check_xmlformat.c ============================================================================== --- trunk/tests/capabilities-tests/check_xmlformat.c Thu Sep 17 18:39:09 2009 (r5782) +++ trunk/tests/capabilities-tests/check_xmlformat.c Thu Sep 17 19:02:06 2009 (r5783) @@ -57,7 +57,8 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); - osync_xmlformat_sort(xmlformat); + osync_xmlformat_sort(xmlformat, &error); + fail_unless(error == NULL, NULL); osync_xmlformat_unref(xmlformat); @@ -82,7 +83,9 @@ fail_unless(osync_xmlformat_is_sorted(xmlformat) == FALSE, NULL); - osync_xmlformat_sort(xmlformat); + osync_xmlformat_sort(xmlformat, &error); + fail_unless(error == NULL, NULL); + fail_unless(osync_xmlformat_is_sorted(xmlformat) == TRUE, NULL); @@ -108,7 +111,10 @@ fail_unless(xmlformat != NULL, NULL); fail_unless(error == NULL, NULL); g_free(buffer); - osync_xmlformat_sort(xmlformat); + osync_xmlformat_sort(xmlformat, &error); + fail_unless(error == NULL, NULL); + + OSyncXMLFieldList *xmlfieldlist = osync_xmlformat_search_field(xmlformat, "Name", &error, NULL); fail_unless(xmlfieldlist != NULL, NULL); Modified: trunk/wrapper/opensync-merger.i ============================================================================== --- trunk/wrapper/opensync-merger.i Thu Sep 17 18:39:09 2009 (r5782) +++ trunk/wrapper/opensync-merger.i Thu Sep 17 19:02:06 2009 (r5783) @@ -113,18 +113,21 @@ PyObject *assemble() { char *buf; unsigned int size; - osync_bool ret = osync_xmlformat_assemble(self, &buf, &size); - if (!ret) { - wrapper_exception("osync_xmlformat_assemble failed\n"); + Error *err = NULL; + osync_xmlformat_assemble(self, &buf, &size, &err); + if (raise_exception_on_error(err)) return NULL; - } + PyObject *obj = PyString_FromStringAndSize(buf, size); free(buf); return obj; } void sort() { - osync_xmlformat_sort(self); + Error *err = NULL; + osync_xmlformat_sort(self, &err); + if (raise_exception_on_error(err)) + return; } %pythoncode %{ |
From: <svn...@op...> - 2009-09-17 16:39:23
|
Author: dgollub Date: Thu Sep 17 18:39:09 2009 New Revision: 5782 URL: http://www.opensync.org/changeset/5782 Log: Port file-sync plugin to latest API changes - osync_rand_str got OSyncError** parameter - OSyncMarshal API changes, see r5780 Modified: plugins/file-sync/src/file.c Modified: plugins/file-sync/src/file.c ============================================================================== --- plugins/file-sync/src/file.c Thu Sep 17 18:37:15 2009 (r5781) +++ plugins/file-sync/src/file.c Thu Sep 17 18:39:09 2009 (r5782) @@ -84,8 +84,11 @@ *free_input = FALSE; file = osync_try_malloc0(sizeof(OSyncFileFormat), error); if (!file) - return FALSE; - file->path = osync_rand_str(g_random_int_range(1, 100)); + goto error; + + file->path = osync_rand_str(g_random_int_range(1, 100), error); + if (!file->path) + goto error; file->data = input; file->size = inpsize - 1; @@ -93,6 +96,9 @@ *output = (char *)file; *outpsize = sizeof(OSyncFileFormat); return TRUE; + +error: + return FALSE; } static void destroy_file(char *input, unsigned int inpsize, void *user_data) @@ -167,11 +173,19 @@ OSyncFileFormat *file = (OSyncFileFormat *)input; osync_trace(TRACE_ENTRY, "%s(%p, %i, %p, %p)", __func__, input, inpsize, marshal, error); - osync_marshal_write_string(marshal, file->path); - osync_marshal_write_buffer(marshal, file->data, file->size); + if (!osync_marshal_write_string(marshal, file->path, error)) + goto error; + + if (!osync_marshal_write_buffer(marshal, file->data, file->size, error)) + goto error; osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; + } static osync_bool demarshal_file(OSyncMarshal *marshal, char **output, unsigned int *outpsize, void *user_data, OSyncError **error) @@ -183,8 +197,11 @@ if (!file) goto error; - osync_marshal_read_string(marshal, &(file->path)); - osync_marshal_read_buffer(marshal, (void *)&(file->data), &(file->size)); + if (!osync_marshal_read_string(marshal, &(file->path), error)) + goto error; + + if (!osync_marshal_read_buffer(marshal, (void *)&(file->data), &(file->size), error)) + goto error; *output = (char *)file; *outpsize = sizeof(OSyncFileFormat); @@ -192,7 +209,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; - error: +error: osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return FALSE; |
From: <svn...@op...> - 2009-09-17 16:37:33
|
Author: dgollub Date: Thu Sep 17 18:37:15 2009 New Revision: 5781 URL: http://www.opensync.org/changeset/5781 Log: Port to latest OSyncMarshal API changes from r5780 Modified: format-plugins/xmlformat/trunk/src/xmlformat.c Modified: format-plugins/xmlformat/trunk/src/xmlformat.c ============================================================================== --- format-plugins/xmlformat/trunk/src/xmlformat.c Thu Sep 17 18:36:52 2009 (r5780) +++ format-plugins/xmlformat/trunk/src/xmlformat.c Thu Sep 17 18:37:15 2009 (r5781) @@ -88,14 +88,18 @@ char *buffer; unsigned int size; - if(!osync_xmlformat_assemble((OSyncXMLFormat *)input, &buffer, &size)) - return FALSE; + if (!osync_xmlformat_assemble((OSyncXMLFormat *)input, &buffer, &size)) + goto error; - osync_marshal_write_buffer(marshal, buffer, (int)size); + if (!osync_marshal_write_buffer(marshal, buffer, (int)size, error)) + goto error; g_free(buffer); return TRUE; + +error: + return FALSE; } osync_bool demarshal_xmlformat(OSyncMarshal *marshal, char **output, unsigned int *outpsize, void *userdata, OSyncError **error) @@ -103,13 +107,12 @@ void *buffer = NULL; unsigned int size = 0; OSyncXMLFormat *xmlformat = NULL; - osync_marshal_read_buffer(marshal, &buffer, &size); + if (!osync_marshal_read_buffer(marshal, &buffer, &size, error)) + goto error; xmlformat = osync_xmlformat_parse((char *)buffer, size, error); - if (!xmlformat) { - osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; - } + if (!xmlformat) + goto error; /* FIXME: Avoid sorting in demarshal call! * Demarshal the entire XMLFormat struct, including the sorte @@ -122,6 +125,10 @@ *output = (char*)xmlformat; *outpsize = osync_xmlformat_size(); return TRUE; + +error: + osync_trace(TRACE_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } |
From: <svn...@op...> - 2009-09-17 16:37:06
|
Author: dgollub Date: Thu Sep 17 18:36:52 2009 New Revision: 5780 URL: http://www.opensync.org/changeset/5780 Log: Make OSyncMarshal API more future proof and apply a common API pattern: osync_bool osync_masrhal_XXXX(...., OSyncError**) refs #1087, comment:11 Modified: trunk/opensync/client/opensync_client.c trunk/opensync/client/opensync_client_proxy.c trunk/opensync/common/opensync_marshal.c trunk/opensync/common/opensync_marshal.h trunk/opensync/common/opensync_marshal_internals.h trunk/opensync/engine/opensync_engine.c trunk/opensync/engine/opensync_mapping_entry_engine.c trunk/opensync/ipc/opensync_message.c trunk/opensync/ipc/opensync_message_internals.h trunk/opensync/ipc/opensync_queue.c trunk/opensync/ipc/opensync_serializer.c trunk/opensync/ipc/opensync_serializer_internals.h trunk/tests/format-tests/check_objformat.c trunk/tests/ipc-tests/check_ipc.c trunk/tests/mock-plugin/mock_format.c Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/client/opensync_client.c Thu Sep 17 18:36:52 2009 (r5780) @@ -119,7 +119,8 @@ message = baton->message; client = baton->client; osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, data, error); - osync_message_read_string(message, &objtype); + if (!osync_message_read_string(message, &objtype, &error)) + goto error; if (objtype) { // objtype sink (e.g. event, contact, ...) @@ -145,7 +146,8 @@ goto error; //Send connect specific reply data - osync_message_write_int(reply, slowsync); + if (!osync_message_write_int(reply, slowsync, &error)) + goto error_free_message; } else { reply = osync_message_new_errorreply(message, error, &locerror); @@ -269,29 +271,38 @@ version = osync_plugin_info_get_version(client->plugin_info); if (version) { - osync_message_write_int(reply, 1); - osync_message_write_string(reply, osync_version_get_plugin(version)); - osync_message_write_string(reply, osync_version_get_priority(version)); - osync_message_write_string(reply, osync_version_get_vendor(version)); - osync_message_write_string(reply, osync_version_get_modelversion(version)); - osync_message_write_string(reply, osync_version_get_firmwareversion(version)); - osync_message_write_string(reply, osync_version_get_softwareversion(version)); - osync_message_write_string(reply, osync_version_get_hardwareversion(version)); - osync_message_write_string(reply, osync_version_get_identifier(version)); + osync_message_write_int(reply, 1, error); + osync_message_write_string(reply, osync_version_get_plugin(version), error); + osync_message_write_string(reply, osync_version_get_priority(version), error); + osync_message_write_string(reply, osync_version_get_vendor(version), error); + osync_message_write_string(reply, osync_version_get_modelversion(version), error); + osync_message_write_string(reply, osync_version_get_firmwareversion(version), error); + osync_message_write_string(reply, osync_version_get_softwareversion(version), error); + osync_message_write_string(reply, osync_version_get_hardwareversion(version), error); + osync_message_write_string(reply, osync_version_get_identifier(version), error); } else { - osync_message_write_int(reply, 0); + osync_message_write_int(reply, 0, error); } + + if (osync_error_is_set(error)) + goto error; /* Report detected capabilities */ capabilities = osync_plugin_info_get_capabilities(client->plugin_info); if (capabilities) { - osync_message_write_int(reply, 1); + if (!osync_message_write_int(reply, 1, error)) + goto error; + if (!osync_capabilities_assemble(capabilities, &buffer, &size, error)) goto error; - osync_message_write_string(reply, buffer); + + if (!osync_message_write_string(reply, buffer, error)) + goto error; + g_free(buffer); } else { - osync_message_write_int(reply, 0); + if (!osync_message_write_int(reply, 0, error)) + goto error; } return TRUE; @@ -442,7 +453,8 @@ goto error; //Send get_changes specific reply data - osync_message_write_string(reply, osync_change_get_uid(baton->change)); + if (!osync_message_write_string(reply, osync_change_get_uid(baton->change), &locerror)) + goto error; } else { reply = osync_message_new_errorreply(message, error, &locerror); } @@ -493,7 +505,8 @@ goto error; //Send get_changes specific reply data - osync_message_write_string(reply, osync_change_get_uid(baton->change)); + if (!osync_message_write_string(reply, osync_change_get_uid(baton->change), &locerror)) + goto error_free_message; } else { reply = osync_message_new_errorreply(message, error, &locerror); } @@ -635,13 +648,16 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &enginepipe); - osync_message_read_string(message, &formatdir); - osync_message_read_string(message, &plugindir); - osync_message_read_string(message, &pluginname); - osync_message_read_string(message, &groupname); - osync_message_read_string(message, &configdir); - osync_message_read_int(message, &haspluginconfig); + osync_message_read_string(message, &enginepipe, error); + osync_message_read_string(message, &formatdir, error); + osync_message_read_string(message, &plugindir, error); + osync_message_read_string(message, &pluginname, error); + osync_message_read_string(message, &groupname, error); + osync_message_read_string(message, &configdir, error); + osync_message_read_int(message, &haspluginconfig, error); + + if (osync_error_is_set(error)) + goto error; if (haspluginconfig && !osync_demarshal_pluginconfig(message, &config, error)) goto error; @@ -705,7 +721,9 @@ #ifdef OPENSYNC_UNITTESTS { long long int memberid; - osync_message_read_long_long_int(message, &memberid); // Introduced (only) for testing/debugging purpose (mock-sync) + if (!osync_message_read_long_long_int(message, &memberid, error)) // Introduced (only) for testing/debugging purpose (mock-sync) + goto error; + client->plugin_info->memberid = memberid; } #endif @@ -896,9 +914,12 @@ goto error; if (osync_plugin_info_get_main_sink(client->plugin_info)) - osync_message_write_int(reply, 1); + osync_message_write_int(reply, 1, error); else - osync_message_write_int(reply, 0); + osync_message_write_int(reply, 0, error); + + if (osync_error_is_set(error)) + goto error_free_message; objtypesinks = osync_plugin_info_get_objtype_sinks(client->plugin_info); list = objtypesinks; @@ -910,7 +931,8 @@ list = list->next; } - osync_message_write_uint(reply, avail); + if (!osync_message_write_uint(reply, avail, error)) + goto error_free_message; list = objtypesinks; while(list) { @@ -930,7 +952,9 @@ res = osync_plugin_config_get_resources(config); num_res = osync_list_length(res); - osync_message_write_uint(reply, num_res); + if (!osync_message_write_uint(reply, num_res, error)) + goto error; + for (; res; res = res->next) { resource = res->data; if (!osync_marshal_pluginresource(reply, resource, error)) @@ -969,9 +993,13 @@ * because the connect functions work asynchronous and the last sink * (usually the main sink) is the current sink. */ - osync_message_read_string(message, &objtype); - osync_message_read_int(message, &slowsync); - osync_message_write_string(message, objtype); + osync_message_read_string(message, &objtype, error); + osync_message_read_int(message, &slowsync, error); + osync_message_write_string(message, objtype, error); + + if (osync_error_is_set(error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s", objtype); if (objtype) { @@ -993,7 +1021,8 @@ goto error; /* SlowSync dummy value for connect reply message handler. */ - osync_message_write_int(reply, FALSE); + if (!osync_message_write_int(reply, FALSE, error)) + goto error_free_reply; if (!osync_queue_send_message(client->outgoing, NULL, reply, error)) goto error_free_reply; @@ -1041,8 +1070,12 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &objtype); - osync_message_read_int(message, &slowsync); + osync_message_read_string(message, &objtype, error); + osync_message_read_int(message, &slowsync, error); + + if (osync_error_is_set(error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s (slowsync: %d)", objtype, slowsync); if (objtype) { @@ -1103,7 +1136,9 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &objtype); + if (!osync_message_read_string(message, &objtype, error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s", objtype); if (objtype) { @@ -1158,8 +1193,12 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &objtype); - osync_message_read_int(message, &slowsync); + osync_message_read_string(message, &objtype, error); + osync_message_read_int(message, &slowsync, error); + + if (osync_error_is_set(error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s (slowsync: %i)", objtype, slowsync); if (objtype) { @@ -1320,7 +1359,9 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &objtype); + if (!osync_message_read_string(message, &objtype, error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s", objtype ? objtype : "(MainSink)"); if (objtype) { @@ -1374,7 +1415,9 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); - osync_message_read_string(message, &objtype); + if (!osync_message_read_string(message, &objtype, error)) + goto error; + osync_trace(TRACE_INTERNAL, "Searching sink for %s", objtype); if (objtype) { Modified: trunk/opensync/client/opensync_client_proxy.c ============================================================================== --- trunk/opensync/client/opensync_client_proxy.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/client/opensync_client_proxy.c Thu Sep 17 18:36:52 2009 (r5780) @@ -260,7 +260,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->init_callback(proxy, ctx->init_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->init_callback(proxy, ctx->init_callback_data, error); osync_error_unref(&error); } else { @@ -293,7 +296,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->fin_callback(proxy, ctx->fin_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->fin_callback(proxy, ctx->fin_callback_data, error); osync_error_unref(&error); } else { @@ -327,41 +333,50 @@ /* Merger - Set the capabilities */ - osync_message_read_int(message, &sent_version); + if (!osync_message_read_int(message, &sent_version, error)) + goto error; + if (sent_version) { version = osync_version_new(error); if (!version) goto error; - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_plugin(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_priority(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_vendor(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_modelversion(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_firmwareversion(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_softwareversion(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_hardwareversion(version, str); osync_free(str); - osync_message_read_string(message, &str); + osync_message_read_string(message, &str, error); osync_version_set_identifier(version, str); osync_free(str); + + if (osync_error_is_set(error)) + goto error_free_version; } - osync_message_read_int(message, &sent_capabilities); + if (!osync_message_read_int(message, &sent_capabilities, error)) + goto error; + if (sent_capabilities) { - osync_message_read_string(message, &str); + if (!osync_message_read_string(message, &str, error)) + goto error_free_version; + capabilities = osync_capabilities_parse(str, strlen(str), error); osync_free(str); if (!capabilities) @@ -428,9 +443,12 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { - osync_message_read_int(message, &proxy->has_main_sink); + osync_message_read_int(message, &proxy->has_main_sink, &locerror); - osync_message_read_uint(message, &num_sinks); + osync_message_read_uint(message, &num_sinks, &locerror); + + if (osync_error_is_set(&locerror)) + goto error; osync_trace(TRACE_INTERNAL, "main sink?: %i, num objs?: %i", proxy->has_main_sink, num_sinks); @@ -456,7 +474,10 @@ goto error; osync_plugin_config_flush_resources(config); - osync_message_read_uint(message, &num_res); + + if (!osync_message_read_uint(message, &num_res, &locerror)) + goto error; + for (i=0; i < num_res; i++) { if (!osync_demarshal_pluginresource(message, &resource, &locerror)) goto error; @@ -471,7 +492,10 @@ ctx->discover_callback(proxy, ctx->discover_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->discover_callback(proxy, ctx->discover_callback_data, error); osync_error_unref(&error); } else { @@ -503,10 +527,16 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, message, user_data); if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { - osync_message_read_int(message, &slowsync); + + if (!osync_message_read_int(message, &slowsync, &locerror)) + goto error; + ctx->connect_callback(proxy, ctx->connect_callback_data, slowsync, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->connect_callback(proxy, ctx->connect_callback_data, FALSE, error); osync_error_unref(&error); } else { @@ -539,7 +569,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->connect_done_callback(proxy, ctx->connect_done_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->connect_done_callback(proxy, ctx->connect_done_callback_data, error); osync_error_unref(&error); } else { @@ -572,7 +605,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->disconnect_callback(proxy, ctx->disconnect_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->disconnect_callback(proxy, ctx->disconnect_callback_data, error); osync_error_unref(&error); } else { @@ -605,7 +641,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->read_callback(proxy, ctx->read_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->read_callback(proxy, ctx->read_callback_data, error); osync_error_unref(&error); } else { @@ -644,7 +683,10 @@ } } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->get_changes_callback(proxy, ctx->get_changes_callback_data, error); osync_client_proxy_set_error(proxy, error); osync_error_unref(&error); @@ -677,11 +719,17 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { char *uid = NULL; - osync_message_read_string(message, &uid); + + if (!osync_message_read_string(message, &uid, &locerror)) + goto error; + ctx->commit_change_callback(proxy, ctx->commit_change_callback_data, uid, NULL); osync_free(uid); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->commit_change_callback(proxy, ctx->commit_change_callback_data, NULL, error); osync_error_unref(&error); } else { @@ -714,7 +762,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->committed_all_callback(proxy, ctx->committed_all_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->committed_all_callback(proxy, ctx->committed_all_callback_data, error); osync_error_unref(&error); } else { @@ -747,7 +798,10 @@ if (osync_message_get_cmd(message) == OSYNC_MESSAGE_REPLY) { ctx->sync_done_callback(proxy, ctx->sync_done_callback_data, NULL); } else if (osync_message_get_cmd(message) == OSYNC_MESSAGE_ERRORREPLY) { - osync_demarshal_error(message, &error); + + if (!osync_demarshal_error(message, &error, &locerror)) + goto error; + ctx->sync_done_callback(proxy, ctx->sync_done_callback_data, error); osync_error_unref(&error); } else { @@ -1187,13 +1241,16 @@ if (!message) goto error; - osync_message_write_string(message, osync_queue_get_path(proxy->incoming)); - osync_message_write_string(message, formatdir); - osync_message_write_string(message, plugindir); - osync_message_write_string(message, plugin); - osync_message_write_string(message, groupname); - osync_message_write_string(message, configdir); - osync_message_write_int(message, haspluginconfig); + osync_message_write_string(message, osync_queue_get_path(proxy->incoming), error); + osync_message_write_string(message, formatdir, error); + osync_message_write_string(message, plugindir, error); + osync_message_write_string(message, plugin, error); + osync_message_write_string(message, groupname, error); + osync_message_write_string(message, configdir, error); + osync_message_write_int(message, haspluginconfig, error); + + if (osync_error_is_set(error)) + goto error; if (haspluginconfig && !osync_marshal_pluginconfig(message, config, error)) goto error; @@ -1228,7 +1285,7 @@ if (proxy->member) memberid = osync_member_get_id(proxy->member); - osync_message_write_long_long_int(message, memberid); + osync_message_write_long_long_int(message, memberid, error); #endif osync_message_set_handler(message, _osync_client_proxy_init_handler, ctx); @@ -1427,8 +1484,11 @@ osync_message_set_handler(message, _osync_client_proxy_connect_handler, ctx); - osync_message_write_string(message, objtype); - osync_message_write_int(message, slowsync); + osync_message_write_string(message, objtype, error); + osync_message_write_int(message, slowsync, error); + + if (osync_error_is_set(error)) + goto error_free_message; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; @@ -1477,8 +1537,11 @@ osync_message_set_handler(message, _osync_client_proxy_connect_done_handler, ctx); - osync_message_write_string(message, objtype); - osync_message_write_int(message, slowsync); + osync_message_write_string(message, objtype, error); + osync_message_write_int(message, slowsync, error); + + if (osync_error_is_set(error)) + goto error_free_message; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; @@ -1526,7 +1589,8 @@ osync_message_set_handler(message, _osync_client_proxy_disconnect_handler, ctx); - osync_message_write_string(message, objtype); + if (!osync_message_write_string(message, objtype, error)) + goto error_free_message; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; @@ -1623,8 +1687,11 @@ osync_message_set_handler(message, _osync_client_proxy_get_changes_handler, ctx); - osync_message_write_string(message, objtype); - osync_message_write_int(message, slowsync); + osync_message_write_string(message, objtype, error); + osync_message_write_int(message, slowsync, error); + + if (osync_error_is_set(error)) + goto error_free_message; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; @@ -1724,7 +1791,10 @@ osync_message_set_handler(message, _osync_client_proxy_committed_all_handler, ctx); - osync_message_write_string(message, objtype); + osync_message_write_string(message, objtype, error); + + if (osync_error_is_set(error)) + goto error; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; @@ -1773,7 +1843,8 @@ osync_message_set_handler(message, _osync_client_proxy_sync_done_handler, ctx); - osync_message_write_string(message, objtype); + if (!osync_message_write_string(message, objtype, error)) + goto error_free_message; if (!osync_queue_send_message_with_timeout(proxy->outgoing, proxy->incoming, message, timeout, error)) goto error_free_message; Modified: trunk/opensync/common/opensync_marshal.c ============================================================================== --- trunk/opensync/common/opensync_marshal.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/common/opensync_marshal.c Thu Sep 17 18:36:52 2009 (r5780) @@ -70,13 +70,15 @@ return marshal->buffer->len; } -void osync_marshal_set_marshal_size(OSyncMarshal *marshal, unsigned int size) +osync_bool osync_marshal_set_marshal_size(OSyncMarshal *marshal, unsigned int size, OSyncError **error) { osync_assert(marshal); marshal->buffer->len = size; + + return TRUE; } -void osync_marshal_get_buffer(OSyncMarshal *marshal, char **data, unsigned int *size) +osync_bool osync_marshal_get_buffer(OSyncMarshal *marshal, char **data, unsigned int *size, OSyncError **error) { osync_assert(marshal); @@ -85,24 +87,32 @@ if (size) *size = marshal->buffer->len; + + return TRUE; } -void osync_marshal_write_int(OSyncMarshal *marshal, int value) +osync_bool osync_marshal_write_int(OSyncMarshal *marshal, int value, OSyncError **error) { g_byte_array_append( marshal->buffer, (unsigned char*)&value, sizeof( int ) ); + + return TRUE; } -void osync_marshal_write_uint(OSyncMarshal *marshal, unsigned int value) +osync_bool osync_marshal_write_uint(OSyncMarshal *marshal, unsigned int value, OSyncError **error) { g_byte_array_append( marshal->buffer, (unsigned char*)&value, sizeof( unsigned int ) ); + + return TRUE; } -void osync_marshal_write_long_long_int(OSyncMarshal *marshal, long long int value) +osync_bool osync_marshal_write_long_long_int(OSyncMarshal *marshal, long long int value, OSyncError **error) { g_byte_array_append( marshal->buffer, (unsigned char*)&value, sizeof( long long int ) ); + + return TRUE; } -void osync_marshal_write_string(OSyncMarshal *marshal, const char *value) +osync_bool osync_marshal_write_string(OSyncMarshal *marshal, const char *value, OSyncError **error) { unsigned int length = 0; @@ -113,106 +123,152 @@ if (value) g_byte_array_append( marshal->buffer, (unsigned char*)value, length ); + + return TRUE; } -void osync_marshal_write_data(OSyncMarshal *marshal, const void *value, unsigned int size) +osync_bool osync_marshal_write_data(OSyncMarshal *marshal, const void *value, unsigned int size, OSyncError **error) { g_byte_array_append( marshal->buffer, value, size ); + + return TRUE; } -void osync_marshal_write_buffer(OSyncMarshal *marshal, const void *value, unsigned int size) +osync_bool osync_marshal_write_buffer(OSyncMarshal *marshal, const void *value, unsigned int size, OSyncError **error) { /* serialize the length of the data to make it possible to determine the end of this data blob in the serialized blob. This makes demarshaling possible! */ - osync_marshal_write_uint(marshal, size); - if (size > 0) - osync_marshal_write_data(marshal, value, size); + if (!osync_marshal_write_uint(marshal, size, error)) + goto error; + + if (size > 0) { + if (!osync_marshal_write_data(marshal, value, size, error)) + goto error; + } + + return TRUE; + +error: + return FALSE; } -void osync_marshal_read_int(OSyncMarshal *marshal, int *value) +osync_bool osync_marshal_read_int(OSyncMarshal *marshal, int *value, OSyncError **error) { osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + sizeof(int)); memcpy(value, &(marshal->buffer->data[ marshal->buffer_read_pos ]), sizeof(int)); marshal->buffer_read_pos += sizeof(int); + + return TRUE; } -void osync_marshal_read_uint(OSyncMarshal *marshal, unsigned int *value) +osync_bool osync_marshal_read_uint(OSyncMarshal *marshal, unsigned int *value, OSyncError **error) { osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + sizeof(unsigned int)); memcpy(value, &(marshal->buffer->data[ marshal->buffer_read_pos ]), sizeof(unsigned int)); marshal->buffer_read_pos += sizeof(unsigned int); + + return TRUE; } -void osync_marshal_read_long_long_int(OSyncMarshal *marshal, long long int *value) +osync_bool osync_marshal_read_long_long_int(OSyncMarshal *marshal, long long int *value, OSyncError **error) { osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + sizeof(long long int)); memcpy(value, &(marshal->buffer->data[ marshal->buffer_read_pos ]), sizeof(long long int)); marshal->buffer_read_pos += sizeof(long long int); + + return TRUE; } -void osync_marshal_read_const_string(OSyncMarshal *marshal, const char **value) +osync_bool osync_marshal_read_const_string(OSyncMarshal *marshal, const char **value, OSyncError **error) { int length = 0; - osync_marshal_read_int(marshal, &length); + + if (!osync_marshal_read_int(marshal, &length, error)) + goto error; if (length == -1) { *value = NULL; - return; + return TRUE; } osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + length); *value = (char *)&(marshal->buffer->data[marshal->buffer_read_pos]); marshal->buffer_read_pos += length; + + return TRUE; +error: + return FALSE; } -void osync_marshal_read_string(OSyncMarshal *marshal, char **value) +osync_bool osync_marshal_read_string(OSyncMarshal *marshal, char **value, OSyncError **error) { unsigned int length = 0; - osync_marshal_read_uint(marshal, &length); + + if (!osync_marshal_read_uint(marshal, &length, error)) + goto error; if (!length) { *value = NULL; - return; + return TRUE; } osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + length); - /* TODO: Error handling? */ - *value = (char*) osync_try_malloc0(length, NULL); + *value = (char*) osync_try_malloc0(length, error); if (!*value) - return; + goto error; memcpy(*value, &(marshal->buffer->data[ marshal->buffer_read_pos ]), length ); marshal->buffer_read_pos += length; + + return TRUE; + +error: + return FALSE; } -void osync_marshal_read_const_data(OSyncMarshal *marshal, void **value, unsigned int size) +osync_bool osync_marshal_read_const_data(OSyncMarshal *marshal, void **value, unsigned int size, OSyncError **error) { osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + size); *value = &(marshal->buffer->data[marshal->buffer_read_pos]); marshal->buffer_read_pos += size; + + return TRUE; } -void osync_marshal_read_data(OSyncMarshal *marshal, void *value, unsigned int size) +osync_bool osync_marshal_read_data(OSyncMarshal *marshal, void *value, unsigned int size, OSyncError **error) { osync_assert(marshal->buffer->len >= marshal->buffer_read_pos + size); memcpy(value, &(marshal->buffer->data[ marshal->buffer_read_pos ]), size ); marshal->buffer_read_pos += size; + + return TRUE; } -void osync_marshal_read_buffer(OSyncMarshal *marshal, void **value, unsigned int *size) +osync_bool osync_marshal_read_buffer(OSyncMarshal *marshal, void **value, unsigned int *size, OSyncError **error) { /* Now, read the data from the marshal */ - osync_marshal_read_uint(marshal, size); + if (!osync_marshal_read_uint(marshal, size, error)) + goto error; if (*size > 0) { - *value = g_malloc0(*size); - osync_marshal_read_data(marshal, *value, *size); + *value = osync_try_malloc0(*size, error); + + if (!*value) + goto error; + + if (!osync_marshal_read_data(marshal, *value, *size, error)) + goto error; } + + return TRUE; + +error: + return FALSE; } Modified: trunk/opensync/common/opensync_marshal.h ============================================================================== --- trunk/opensync/common/opensync_marshal.h Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/common/opensync_marshal.h Thu Sep 17 18:36:52 2009 (r5780) @@ -77,46 +77,52 @@ * * @param marshal The marshal object * @param size The size of the marshal to set + * @param error Pointer to a error-struct * */ -OSYNC_EXPORT void osync_marshal_set_marshal_size(OSyncMarshal *marshal, unsigned int size); +OSYNC_EXPORT osync_bool osync_marshal_set_marshal_size(OSyncMarshal *marshal, unsigned int size, OSyncError **error); /** @brief Get the buffer/content of the marshal object * * @param marshal The marshal object * @param data Pointer to data * @param size Size of the data + * @param error Pointer to a error-struct * */ -OSYNC_EXPORT void osync_marshal_get_buffer(OSyncMarshal *marshal, char **data, unsigned int *size); +OSYNC_EXPORT osync_bool osync_marshal_get_buffer(OSyncMarshal *marshal, char **data, unsigned int *value, OSyncError **error); /** @brief Appends an integer value to serialized buffer * * @param marshal The marshal object * @param value The integer value to append + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_write_int(OSyncMarshal *marshal, int value); +OSYNC_EXPORT osync_bool osync_marshal_write_int(OSyncMarshal *marshal, int value, OSyncError **error); /** @brief Appends an unsigned integer value to serialized buffer * * @param marshal The marshal object * @param value The integer value to append + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_write_uint(OSyncMarshal *marshal, unsigned int value); +OSYNC_EXPORT osync_bool osync_marshal_write_uint(OSyncMarshal *marshal, unsigned int value, OSyncError **error); /** @brief Appends a long long integer value to serialized buffer * * @param marshal The marshal object * @param value The long long integer value to append + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_write_long_long_int(OSyncMarshal *marshal, long long int value); +OSYNC_EXPORT osync_bool osync_marshal_write_long_long_int(OSyncMarshal *marshal, long long int value, OSyncError **error); /** @brief Appends a string to serialized buffer * * @param marshal The marshal object * @param value The string to append + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_write_string(OSyncMarshal *marshal, const char *value); +OSYNC_EXPORT osync_bool osync_marshal_write_string(OSyncMarshal *marshal, const char *value, OSyncError **error); /** @brief Appends data with a specific length to the serialized buffer, * plus the length of the data to determine the end. @@ -124,32 +130,36 @@ * @param marshal The marshal object * @param value The data to append * @param size Size of corresponding data parameter + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_write_buffer(OSyncMarshal *marshal, const void *value, unsigned int size); +OSYNC_EXPORT osync_bool osync_marshal_write_buffer(OSyncMarshal *marshal, const void *value, unsigned int size, OSyncError **error); /** @brief Read serialized integer from marshal buffer. This increments the read * position of the marshal buffer. * * @param marshal The marshal object * @param value Reference to store the integer value + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_int(OSyncMarshal *marshal, int *value); +OSYNC_EXPORT osync_bool osync_marshal_read_int(OSyncMarshal *marshal, int *value, OSyncError **error); /** @brief Read serialized unsigned integer from marshal buffer. This increments the read * position of the marshal buffer. * * @param marshal The marshal object * @param value Reference to store the integer value + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_uint(OSyncMarshal *marshal, unsigned int *value); +OSYNC_EXPORT osync_bool osync_marshal_read_uint(OSyncMarshal *marshal, unsigned int *value, OSyncError **error); /** @brief Read serialized long long integer from marshal buffer. This increments the read * position of the marshal buffer. * * @param marshal The marshal object * @param value Reference to store the long long integer value + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_long_long_int(OSyncMarshal *marshal, long long int *value); +OSYNC_EXPORT osync_bool osync_marshal_read_long_long_int(OSyncMarshal *marshal, long long int *value, OSyncError **error); /** @brief Read serialized string from marshal buffer. This increments the read * position of the marshal buffer. Caller is responsible for freeing the duplicated @@ -157,8 +167,9 @@ * * @param marshal The marshal object * @param value Reference to store the pointer to the newly allocated string + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_string(OSyncMarshal *marshal, char **value); +OSYNC_EXPORT osync_bool osync_marshal_read_string(OSyncMarshal *marshal, char **value, OSyncError **error); /** @brief Read serialized const data from marshal buffer. This increments the read * position of the marshal buffer. @@ -166,16 +177,18 @@ * @param marshal The marshal object * @param value Reference to store the data pointer * @param size The size of data + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_const_data(OSyncMarshal *marshal, void **value, unsigned int size); +OSYNC_EXPORT osync_bool osync_marshal_read_const_data(OSyncMarshal *marshal, void **value, unsigned int size, OSyncError **error); /** @brief Read serialized const string from marshal buffer. This increments the read * position of the marshal buffer. * * @param marshal The marshal object * @param value Reference to store the string pointer + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_const_string(OSyncMarshal *marshal, const char **value); +OSYNC_EXPORT osync_bool osync_marshal_read_const_string(OSyncMarshal *marshal, const char **value, OSyncError **error); /** @brief Read serialized data from marshal buffer. This increments the read * position of the marshal buffer. Caller is responsible for freeing the duplicated @@ -184,8 +197,9 @@ * @param marshal The marshal object * @param value Reference to store the pointer to the newly allocated data * @param size Size of data + * @param error Pointer to a error-struct */ -OSYNC_EXPORT void osync_marshal_read_buffer(OSyncMarshal *marshal, void **value, unsigned int *size); +OSYNC_EXPORT osync_bool osync_marshal_read_buffer(OSyncMarshal *marshal, void **value, unsigned int *size, OSyncError **error); /*@}*/ Modified: trunk/opensync/common/opensync_marshal_internals.h ============================================================================== --- trunk/opensync/common/opensync_marshal_internals.h Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/common/opensync_marshal_internals.h Thu Sep 17 18:36:52 2009 (r5780) @@ -40,8 +40,9 @@ * @param marshal The marshal object * @param value The data to append * @param size Size of corresponding data parameter + * @param error Pointer to a error-struct */ -OSYNC_TEST_EXPORT void osync_marshal_write_data(OSyncMarshal *marshal, const void *value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_marshal_write_data(OSyncMarshal *marshal, const void *value, unsigned int size, OSyncError **error); /** @brief Read specific size of serialized data from marshal buffer. This increments * the read position of the marshal buffer. Caller is responsible for freeing the @@ -50,8 +51,9 @@ * @param marshal The marshal object * @param value Reference to store the pointer to the newly allocated data * @param size Size of data + * @param error Pointer to a error-struct */ -OSYNC_TEST_EXPORT void osync_marshal_read_data(OSyncMarshal *marshal, void *value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_marshal_read_data(OSyncMarshal *marshal, void *value, unsigned int size, OSyncError **error); /*@}*/ Modified: trunk/opensync/engine/opensync_engine.c ============================================================================== --- trunk/opensync/engine/opensync_engine.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/engine/opensync_engine.c Thu Sep 17 18:36:52 2009 (r5780) @@ -291,7 +291,10 @@ if (!marshal) goto error; - osync_marshal_write_data(marshal, entirebuf, entsize); + if (!osync_marshal_write_data(marshal, entirebuf, entsize, &error)) { + osync_marshal_unref(marshal); + goto error; + } if (!osync_objformat_demarshal(objformat, marshal, &entirebuf, &entsize, &error)) { osync_marshal_unref(marshal); Modified: trunk/opensync/engine/opensync_mapping_entry_engine.c ============================================================================== --- trunk/opensync/engine/opensync_mapping_entry_engine.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/engine/opensync_mapping_entry_engine.c Thu Sep 17 18:36:52 2009 (r5780) @@ -180,7 +180,8 @@ if (!osync_objformat_marshal(objformat, buffer, size, marshal, error)) goto error_free_marshal; - osync_marshal_get_buffer(marshal, &marshalbuf, &marshalsize); + if (!osync_marshal_get_buffer(marshal, &marshalbuf, &marshalsize, error)) + goto error_free_marshal; if (marshalbuf == 0) { marshalbuf = buffer; Modified: trunk/opensync/ipc/opensync_message.c ============================================================================== --- trunk/opensync/ipc/opensync_message.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/ipc/opensync_message.c Thu Sep 17 18:36:52 2009 (r5780) @@ -110,14 +110,14 @@ return osync_marshal_get_marshal_size(message->marshal); } -void osync_message_set_message_size(OSyncMessage *message, unsigned int size) +osync_bool osync_message_set_message_size(OSyncMessage *message, unsigned int size, OSyncError **error) { - osync_marshal_set_marshal_size(message->marshal, size); + return osync_marshal_set_marshal_size(message->marshal, size, error); } -void osync_message_get_buffer(OSyncMessage *message, char **data, unsigned int *size) +osync_bool osync_message_get_buffer(OSyncMessage *message, char **data, unsigned int *size, OSyncError **error) { - osync_marshal_get_buffer(message->marshal, data, size); + return osync_marshal_get_buffer(message->marshal, data, size, error); } void osync_message_set_handler(OSyncMessage *message, OSyncMessageHandler handler, void *user_data) @@ -152,35 +152,47 @@ { OSyncMessage *reply = osync_message_new(OSYNC_MESSAGE_ERRORREPLY, 0, loc_error); if (!reply) - return NULL; + goto error; - osync_marshal_error(reply, error); + if (!osync_marshal_error(reply, error, loc_error)) + goto error; if (message) reply->id = message->id; return reply; + +error: + return NULL; } OSyncMessage *osync_message_new_error(OSyncError *error, OSyncError **loc_error) { OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_ERROR, 0, loc_error); if (!message) - return NULL; + goto error; - osync_marshal_error(message, error); + if (!osync_marshal_error(message, error, loc_error)) + goto error; return message; + +error: + return NULL; } OSyncMessage *osync_message_new_queue_error(OSyncError *error, OSyncError **loc_error) { OSyncMessage *message = osync_message_new(OSYNC_MESSAGE_QUEUE_ERROR, 0, loc_error); if (!message) - return NULL; + goto error; - osync_marshal_error(message, error); + if (!osync_marshal_error(message, error, loc_error)) + goto error; return message; + +error: + return NULL; } osync_bool osync_message_is_error(OSyncMessage *message) @@ -206,75 +218,75 @@ return message->cmd; } -void osync_message_write_int(OSyncMessage *message, int value) +osync_bool osync_message_write_int(OSyncMessage *message, int value, OSyncError **error) { - osync_marshal_write_int(message->marshal, value); + return osync_marshal_write_int(message->marshal, value, error); } -void osync_message_write_uint(OSyncMessage *message, unsigned int value) +osync_bool osync_message_write_uint(OSyncMessage *message, unsigned int value, OSyncError **error) { - osync_marshal_write_uint(message->marshal, value); + return osync_marshal_write_uint(message->marshal, value, error); } -void osync_message_write_long_long_int(OSyncMessage *message, long long int value) +osync_bool osync_message_write_long_long_int(OSyncMessage *message, long long int value, OSyncError **error) { - osync_marshal_write_long_long_int(message->marshal, value); + return osync_marshal_write_long_long_int(message->marshal, value, error); } -void osync_message_write_string(OSyncMessage *message, const char *value) +osync_bool osync_message_write_string(OSyncMessage *message, const char *value, OSyncError **error) { - osync_marshal_write_string(message->marshal, value); + return osync_marshal_write_string(message->marshal, value, error); } -void osync_message_write_data(OSyncMessage *message, const void *value, unsigned int size) +osync_bool osync_message_write_data(OSyncMessage *message, const void *value, unsigned int size, OSyncError **error) { - osync_marshal_write_data(message->marshal, value, size); + return osync_marshal_write_data(message->marshal, value, size, error); } -void osync_message_write_buffer(OSyncMessage *message, const void *value, unsigned int size) +osync_bool osync_message_write_buffer(OSyncMessage *message, const void *value, unsigned int size, OSyncError **error) { - osync_marshal_write_buffer(message->marshal, value, size); + return osync_marshal_write_buffer(message->marshal, value, size, error); } -void osync_message_read_int(OSyncMessage *message, int *value) +osync_bool osync_message_read_int(OSyncMessage *message, int *value, OSyncError **error) { - osync_marshal_read_int(message->marshal, value); + return osync_marshal_read_int(message->marshal, value, error); } -void osync_message_read_uint(OSyncMessage *message, unsigned int *value) +osync_bool osync_message_read_uint(OSyncMessage *message, unsigned int *value, OSyncError **error) { - osync_marshal_read_uint(message->marshal, value); + return osync_marshal_read_uint(message->marshal, value, error); } -void osync_message_read_long_long_int(OSyncMessage *message, long long int *value) +osync_bool osync_message_read_long_long_int(OSyncMessage *message, long long int *value, OSyncError **error) { - osync_marshal_read_long_long_int(message->marshal, value); + return osync_marshal_read_long_long_int(message->marshal, value, error); } /* TODO Change char** to const char ** */ -void osync_message_read_const_string(OSyncMessage *message, const char **value) +osync_bool osync_message_read_const_string(OSyncMessage *message, const char **value, OSyncError **error) { - osync_marshal_read_const_string(message->marshal, value); + return osync_marshal_read_const_string(message->marshal, value, error); } -void osync_message_read_string(OSyncMessage *message, char **value) +osync_bool osync_message_read_string(OSyncMessage *message, char **value, OSyncError **error) { - osync_marshal_read_string(message->marshal, value); + return osync_marshal_read_string(message->marshal, value, error); } -void osync_message_read_const_data(OSyncMessage *message, void **value, unsigned int size) +osync_bool osync_message_read_const_data(OSyncMessage *message, void **value, unsigned int size, OSyncError **error) { - osync_marshal_read_const_data(message->marshal, value, size); + return osync_marshal_read_const_data(message->marshal, value, size, error); } -void osync_message_read_data(OSyncMessage *message, void *value, unsigned int size) +osync_bool osync_message_read_data(OSyncMessage *message, void *value, unsigned int size, OSyncError **error) { - osync_marshal_read_data(message->marshal, value, size); + return osync_marshal_read_data(message->marshal, value, size, error); } -void osync_message_read_buffer(OSyncMessage *message, void **value, unsigned int *size) +osync_bool osync_message_read_buffer(OSyncMessage *message, void **value, unsigned int *size, OSyncError **error) { - osync_marshal_read_buffer(message->marshal, value, size); + return osync_marshal_read_buffer(message->marshal, value, size, error); } char* osync_message_get_commandstr(OSyncMessage *message) Modified: trunk/opensync/ipc/opensync_message_internals.h ============================================================================== --- trunk/opensync/ipc/opensync_message_internals.h Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/ipc/opensync_message_internals.h Thu Sep 17 18:36:52 2009 (r5780) @@ -180,18 +180,20 @@ * * @param message The message * @param size The size of the message to set + * @param error Pointer to a error-struct * */ -OSYNC_TEST_EXPORT void osync_message_set_message_size(OSyncMessage *message, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_message_set_message_size(OSyncMessage *message, unsigned int size, OSyncError **error); /** @brief Get the buffer/content of the message object * * @param message The message * @param data Pointer to data * @param size Size of the data + * @param error Pointer to a error-struct * */ -OSYNC_TEST_EXPORT void osync_message_get_buffer(OSyncMessage *message, char **data, unsigned int *size); +OSYNC_TEST_EXPORT osync_bool osync_message_get_buffer(OSyncMessage *message, char **data, unsigned int *size, OSyncError **error); /** @brief Set timeout (in seconds) for the message object * @@ -277,28 +279,28 @@ * @param message The message * @param value The integer value to append */ -OSYNC_TEST_EXPORT void osync_message_write_int(OSyncMessage *message, int value); +OSYNC_TEST_EXPORT osync_bool osync_message_write_int(OSyncMessage *message, int value, OSyncError **error); /** @brief Appends an unsigned integer value to serialized message buffer * * @param message The message * @param value The integer value to append */ -OSYNC_TEST_EXPORT void osync_message_write_uint(OSyncMessage *message, unsigned int value); +OSYNC_TEST_EXPORT osync_bool osync_message_write_uint(OSyncMessage *message, unsigned int value, OSyncError **error); /** @brief Appends a long long integer value to serialized message buffer * * @param message The message * @param value The long long integer value to append */ -OSYNC_TEST_EXPORT void osync_message_write_long_long_int(OSyncMessage *message, long long int value); +OSYNC_TEST_EXPORT osync_bool osync_message_write_long_long_int(OSyncMessage *message, long long int value, OSyncError **error); /** @brief Appends a string to serialized message buffer * * @param message The message * @param value The string to append */ -OSYNC_TEST_EXPORT void osync_message_write_string(OSyncMessage *message, const char *value); +OSYNC_TEST_EXPORT osync_bool osync_message_write_string(OSyncMessage *message, const char *value, OSyncError **error); /** @brief Appends data with a specific length to the serialized message buffer * @@ -309,7 +311,7 @@ * @param value The data to append * @param size Size of corresponding data parameter */ -OSYNC_TEST_EXPORT void osync_message_write_data(OSyncMessage *message, const void *value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_message_write_data(OSyncMessage *message, const void *value, unsigned int size, OSyncError **error); /** @brief Appends data with a specific length to the serialized message buffer, * plus the length of the data to determine the end. @@ -318,7 +320,7 @@ * @param value The data to append * @param size Size of corresponding data parameter */ -OSYNC_TEST_EXPORT void osync_message_write_buffer(OSyncMessage *message, const void *value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_message_write_buffer(OSyncMessage *message, const void *value, unsigned int size, OSyncError **error); /** @brief Read serialized integer from message buffer. This increments the read * position of the message buffer. @@ -326,7 +328,7 @@ * @param message The message * @param value Reference to store the integer value */ -OSYNC_TEST_EXPORT void osync_message_read_int(OSyncMessage *message, int *value); +OSYNC_TEST_EXPORT osync_bool osync_message_read_int(OSyncMessage *message, int *value, OSyncError **error); /** @brief Read serialized unsigned integer from message buffer. This increments the read * position of the message buffer. @@ -334,7 +336,7 @@ * @param message The message * @param value Reference to store the integer value */ -OSYNC_TEST_EXPORT void osync_message_read_uint(OSyncMessage *message, unsigned int *value); +OSYNC_TEST_EXPORT osync_bool osync_message_read_uint(OSyncMessage *message, unsigned int *value, OSyncError **error); /** @brief Read serialized long long integer from message buffer. This increments the read * position of the message buffer. @@ -342,7 +344,7 @@ * @param message The message * @param value Reference to store the long long integer value */ -OSYNC_TEST_EXPORT void osync_message_read_long_long_int(OSyncMessage *message, long long int *value); +OSYNC_TEST_EXPORT osync_bool osync_message_read_long_long_int(OSyncMessage *message, long long int *value, OSyncError **error); /** @brief Read serialized string from message buffer. This increments the read * position of the message buffer. Caller is responsible for freeing the duplicated @@ -351,7 +353,7 @@ * @param message The message * @param value Reference to store the pointer to the newly allocated string */ -OSYNC_TEST_EXPORT void osync_message_read_string(OSyncMessage *message, char **value); +OSYNC_TEST_EXPORT osync_bool osync_message_read_string(OSyncMessage *message, char **value, OSyncError **error); /** @brief Read specific size of serialized data from message buffer. This increments * the read position of the message buffer. Caller is responsible for freeing the @@ -361,7 +363,7 @@ * @param value Reference to store the pointer to the newly allocated data * @param size Size of data */ -OSYNC_TEST_EXPORT void osync_message_read_data(OSyncMessage *message, void *value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_message_read_data(OSyncMessage *message, void *value, unsigned int size, OSyncError **error); /** @brief Read serialized const data from message buffer. This increments the read * position of the message buffer. @@ -370,7 +372,7 @@ * @param value Reference to store the data pointer * @param size The size of data */ -OSYNC_TEST_EXPORT void osync_message_read_const_data(OSyncMessage *message, void **value, unsigned int size); +OSYNC_TEST_EXPORT osync_bool osync_message_read_const_data(OSyncMessage *message, void **value, unsigned int size, OSyncError **error); /** @brief Read serialized const string from message buffer. This increments the read * position of the message buffer. @@ -378,7 +380,7 @@ * @param message The message * @param value Reference to store the string pointer */ -OSYNC_TEST_EXPORT void osync_message_read_const_string(OSyncMessage *message, const char **value); +OSYNC_TEST_EXPORT osync_bool osync_message_read_const_string(OSyncMessage *message, const char **value, OSyncError **error); /** @brief Read serialized data from message buffer. This increments the read * position of the message buffer. Caller is responsible for freeing the duplicated @@ -388,7 +390,7 @@ * @param value Reference to store the pointer to the newly allocated data * @param size Size of data */ -OSYNC_TEST_EXPORT void osync_message_read_buffer(OSyncMessage *message, void **value, unsigned int *size); +OSYNC_TEST_EXPORT osync_bool osync_message_read_buffer(OSyncMessage *message, void **value, unsigned int *size, OSyncError **error); /*@}*/ Modified: trunk/opensync/ipc/opensync_queue.c ============================================================================== --- trunk/opensync/ipc/opensync_queue.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/ipc/opensync_queue.c Thu Sep 17 18:36:52 2009 (r5780) @@ -521,7 +521,8 @@ if (!_osync_queue_write_int(queue, (int) osync_message_get_timeout(message), &error)) goto error; - osync_message_get_buffer(message, &data, &length); + if (!osync_message_get_buffer(message, &data, &length, &error)) + goto error; if (length) { unsigned int sent = 0; @@ -716,7 +717,9 @@ /* We now get the buffer from the message which will already * have the correct size for the read */ - osync_message_get_buffer(message, &buffer, NULL); + if (!osync_message_get_buffer(message, &buffer, NULL, &error)) + goto error_free_message; + if (size) { int read = 0; do { @@ -733,7 +736,9 @@ read += inc; } while (read < size); } - osync_message_set_message_size(message, size); + + if (!osync_message_set_message_size(message, size, &error)) + goto error_free_message; g_async_queue_push(queue->incoming, message); Modified: trunk/opensync/ipc/opensync_serializer.c ============================================================================== --- trunk/opensync/ipc/opensync_serializer.c Thu Sep 17 16:39:20 2009 (r5779) +++ trunk/opensync/ipc/opensync_serializer.c Thu Sep 17 18:36:52 2009 (r5780) @@ -53,14 +53,18 @@ objformat = osync_data_get_objformat(data); /* Write the format and objtype first */ - osync_message_write_string(message, osync_objformat_get_name(objformat)); - osync_message_write_string(message, osync_data_get_objtype(data)); + osync_message_write_string(message, osync_objformat_get_name(objformat), error); + osync_message_write_string(message, osync_data_get_objtype(data), error); + + if (osync_error_is_set(error)) + goto error; /* Now we get the pointer to the data */ osync_data_get_data(data, &input_data, &input_size); if (input_size > 0) { - osync_message_write_int(message, 1); + if (!osync_message_write_int(message, 1, error)) + goto error; /* If the format must be marshalled, we call the marshal function * and the send the marshalled data. Otherwise we send the unmarshalled data */ @@ -74,10 +78,12 @@ * be removed by the osync_demarshal_data funciton. */ input_size++; - osync_message_write_buffer(message, input_data, input_size); + if (!osync_message_write_buffer(message, input_data, input_size, error)) + goto error; } } else { - osync_message_write_int(message, 0); + if (!osync_message_write_int(message, 0, error)) + goto error; } return TRUE; @@ -106,8 +112,11 @@ * data */ /* Get the objtype and format */ - osync_message_read_string(message, &objformat); - osync_message_read_string(message, &objtype); + osync_message_read_string(message, &objformat, error); + osync_message_read_string(message, &objtype, error); + + if (osync_error_is_set(error)) + goto error; /* Search for the format */ format = osync_format_env_find_objformat(env, objformat); @@ -116,7 +125,8 @@ goto error; } - osync_message_read_int(message, &has_data); + if (!osync_message_read_int(message, &has_data, error)) + goto error; if (has_data) { if (osync_objformat_must_marshal(format) == TRUE) { @@ -124,7 +134,8 @@ if (!osync_objformat_demarshal(format, marshal, &input_data, &input_size, error)) goto error; } else { - osync_message_read_buffer(message, (void *)&input_data, &input_size); + if (!osync_message_read_buffer(message, (void *)&input_data, &input_size, error)) + goto error; /* If the format is a plain, then we have to remove * one from the input_size, since once one was added by @@ -165,9 +176,12 @@ * changetype * data */ - osync_message_write_string(message, osync_change_get_uid(change)); - osync_message_write_string(message, osync_change_get_hash(change)); - osync_message_write_int(message, osync_change_get_changetype(change)); + osync_message_write_string(message, osync_change_get_uid(change), error); + osync_message_write_string(message, osync_change_get_hash(change), error); + osync_message_write_int(message, osync_change_get_changetype(change), error); + + if (osync_error_is_set(error)) + goto error; data = osync_change_get_data(change); if (!osync_marshal_data(message, data, error)) @@ -200,9 +214,12 @@ if (!*change) goto error; - osync_message_read_string(message, &uid); - osync_message_read_string(message, &hash); - osync_message_read_int(message, &change_type); + osync_message_read_string(message, &uid, error); + osync_message_read_string(message, &hash, error); + osync_message_read_int(message, &change_type, error); + + if (osync_error_is_set(error)) + goto error; if (!osync_demarshal_data(message, &data, env, error)) goto error_free_change; @@ -238,10 +255,16 @@ const char *objformat_name = osync_objformat_sink_get_objformat(sink); const char *objformat_sink_config = osync_objformat_sink_get_config(sink); - osync_message_write_string(message, objformat_name); - osync_message_write_string(message, objformat_sink_config); + osync_message_write_string(message, objformat_name, error); + osync_message_write_string(message, objformat_sink_config, error); + + if (osync_error_is_set(error)) + goto error; return TRUE; + +error: + return FALSE; } osync_bool osync_demarshal_objformat_sink(OSyncMessage *message, OSyncObjFormatSink **sink, OSyncError **error) @@ -258,13 +281,16 @@ */ /* Get the objtype and format */ - osync_message_read_string(message, &objformat_name); + if (!osync_message_read_string(message, &objformat_name, error)) + goto error; *sink = osync_objformat_sink_new(objformat_name, error); if (!*sink) goto error; - osync_message_read_string(message, &objformat_sink_config); + if (!osync_message_read_string(message, &objformat_sink_config, error)) + goto error; + osync_objformat_sink_set_config(*sink, objformat_sink_config); osync_free(objformat_sink_config); @@ -303,14 +329,18 @@ */ num = osync_objtype_sink_num_objformat_sinks(sink); - osync_message_write_string(message, osync_objtype_sink_get_name(sink)); + osync_message_write_string(message, osync_objtype_sink_get_name(sink), error); + + osync_message_write_int(message, osync_objtype_sink_get_function_read(sink), error); + osync_message_write_int(message, osync_objtype_sink_get_function_getchanges(sink), error); - osync_message_wr... [truncated message content] |
From: <svn...@op...> - 2009-09-17 14:39:36
|
Author: dgollub Date: Thu Sep 17 16:39:20 2009 New Revision: 5779 URL: http://www.opensync.org/changeset/5779 Log: Add OSyncError** to parameter list of osync_rand_str See #1087, comment:10 Modified: trunk/opensync/common/opensync_string.c trunk/opensync/common/opensync_string.h trunk/tests/engine-tests/check_engine.c trunk/tests/helper-tests/check_hash.c trunk/tests/mock-plugin/mock_format.c trunk/tests/support.c Modified: trunk/opensync/common/opensync_string.c ============================================================================== --- trunk/opensync/common/opensync_string.c Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/opensync/common/opensync_string.c Thu Sep 17 16:39:20 2009 (r5779) @@ -55,7 +55,7 @@ return ret; } -char *osync_rand_str(int maxlength) +char *osync_rand_str(int maxlength, OSyncError **error) { char *randchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIKLMNOPQRSTUVWXYZ1234567890"; @@ -65,8 +65,9 @@ length = g_random_int_range(1, maxlength + 1); - retchar = osync_try_malloc0(length * sizeof(char) + 1, NULL); - osync_return_val_if_fail(retchar, NULL); + retchar = osync_try_malloc0(length * sizeof(char) + 1, error); + if (!retchar) + goto error; retchar[0] = 0; @@ -76,5 +77,8 @@ } return retchar; + +error: + return NULL; } Modified: trunk/opensync/common/opensync_string.h ============================================================================== --- trunk/opensync/common/opensync_string.h Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/opensync/common/opensync_string.h Thu Sep 17 16:39:20 2009 (r5779) @@ -69,7 +69,7 @@ * NULL on OOM situation. * */ -OSYNC_EXPORT char *osync_rand_str(int maxlength); +OSYNC_EXPORT char *osync_rand_str(int maxlength, OSyncError **error); /*@} */ Modified: trunk/tests/engine-tests/check_engine.c ============================================================================== --- trunk/tests/engine-tests/check_engine.c Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/tests/engine-tests/check_engine.c Thu Sep 17 16:39:20 2009 (r5779) @@ -1420,7 +1420,8 @@ osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_ADDED); - char *uid = osync_rand_str(16); + char *uid = osync_rand_str(16, &error); + osync_assert(error == NULL); osync_change_set_uid(change, uid); g_free(uid); @@ -1632,7 +1633,8 @@ osync_assert(error == NULL); osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_ADDED); - char *rand = osync_rand_str(16); + char *rand = osync_rand_str(16, &error); + osync_assert(error == NULL); char *uid = osync_strdup_printf("uid_%s_%u", rand, i); osync_change_set_uid(change, uid); osync_free(uid); @@ -1837,7 +1839,8 @@ osync_assert(error == NULL); osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_ADDED); - char *uid = osync_rand_str(16); + char *uid = osync_rand_str(16, &error); + osync_assert(error == NULL); osync_change_set_uid(change, uid); g_free(uid); Modified: trunk/tests/helper-tests/check_hash.c ============================================================================== --- trunk/tests/helper-tests/check_hash.c Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/tests/helper-tests/check_hash.c Thu Sep 17 16:39:20 2009 (r5779) @@ -83,7 +83,8 @@ osync_change_set_uid(fakechange, "test1"); - char *rndhash = osync_rand_str(g_random_int_range(100, 200)); + char *rndhash = osync_rand_str(g_random_int_range(100, 200), &error); + osync_assert(error == NULL); osync_change_set_hash(fakechange, rndhash); osync_change_set_changetype(fakechange, OSYNC_CHANGE_TYPE_ADDED); Modified: trunk/tests/mock-plugin/mock_format.c ============================================================================== --- trunk/tests/mock-plugin/mock_format.c Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/tests/mock-plugin/mock_format.c Thu Sep 17 16:39:20 2009 (r5779) @@ -101,7 +101,8 @@ OSyncFileFormat *file = osync_try_malloc0(sizeof(OSyncFileFormat), error); osync_assert(file); - file->path = osync_rand_str(g_random_int_range(1, 100)); + file->path = osync_rand_str(g_random_int_range(1, 100), error); + osync_assert(error == NULL); file->data = input; file->size = inpsize - 1; @@ -167,11 +168,14 @@ static void create_file(char **buffer, unsigned int *size, void *user_data) { + OSyncError *error = NULL; OSyncFileFormat *outfile = osync_try_malloc0(sizeof(OSyncFileFormat), NULL); - outfile->path = osync_rand_str(g_random_int_range(1, 100)); + outfile->path = osync_rand_str(g_random_int_range(1, 100), &error); + osync_assert(error == NULL); - outfile->data = osync_rand_str(g_random_int_range(1, 100)); + outfile->data = osync_rand_str(g_random_int_range(1, 100), &error); + osync_assert(error == NULL); outfile->size = strlen(outfile->data); *buffer = (char *)outfile; Modified: trunk/tests/support.c ============================================================================== --- trunk/tests/support.c Thu Sep 17 02:22:25 2009 (r5778) +++ trunk/tests/support.c Thu Sep 17 16:39:20 2009 (r5779) @@ -318,7 +318,9 @@ void create_random_file(const char *path) { - char *content = osync_rand_str(g_random_int_range(100, 200)); + OSyncError *error = NULL; + char *content = osync_rand_str(g_random_int_range(100, 200), &error); + fail_unless(error == NULL, NULL); osync_assert(osync_file_write(path, content, strlen(content), 0700, NULL) == TRUE); g_free(content); } |
From: <svn...@op...> - 2009-09-17 02:57:02
|
Author: dgollub Date: Thu Sep 17 02:17:44 2009 New Revision: 5775 URL: http://www.opensync.org/changeset/5775 Log: Port file-sync and file format plugin to format_env and plugin_env register API changes. See #1087 Modified: plugins/file-sync/src/file.c plugins/file-sync/src/file_sync.c plugins/file-sync/src/plain.c Modified: plugins/file-sync/src/file.c ============================================================================== --- plugins/file-sync/src/file.c Thu Sep 17 02:17:12 2009 (r5774) +++ plugins/file-sync/src/file.c Thu Sep 17 02:17:44 2009 (r5775) @@ -202,7 +202,7 @@ { OSyncObjFormat *format = osync_objformat_new("file", "data", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_file); osync_objformat_set_destroy_func(format, destroy_file); @@ -214,9 +214,14 @@ osync_objformat_set_marshal_func(format, marshal_file); osync_objformat_set_demarshal_func(format, demarshal_file); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) Modified: plugins/file-sync/src/file_sync.c ============================================================================== --- plugins/file-sync/src/file_sync.c Thu Sep 17 02:17:12 2009 (r5774) +++ plugins/file-sync/src/file_sync.c Thu Sep 17 02:17:44 2009 (r5775) @@ -652,7 +652,9 @@ osync_plugin_set_finalize(plugin, osync_filesync_finalize); osync_plugin_set_discover(plugin, osync_filesync_discover); - osync_plugin_env_register_plugin(env, plugin); + if (!osync_plugin_env_register_plugin(env, plugin, error)) + goto error; + osync_plugin_unref(plugin); return TRUE; Modified: plugins/file-sync/src/plain.c ============================================================================== --- plugins/file-sync/src/plain.c Thu Sep 17 02:17:12 2009 (r5774) +++ plugins/file-sync/src/plain.c Thu Sep 17 02:17:44 2009 (r5775) @@ -62,28 +62,35 @@ { OSyncObjFormat *format = osync_objformat_new("plain", "data", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_plain); osync_objformat_set_copy_func(format, copy_plain); osync_objformat_set_destroy_func(format, destroy_plain); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); /* "memo" is the same as "plain" expect the object type is fixed to "note" */ format = osync_objformat_new("memo", "note", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_plain); osync_objformat_set_copy_func(format, copy_plain); osync_objformat_set_destroy_func(format, destroy_plain); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); return TRUE; + +error: + return FALSE; } int get_version(void) |
From: <svn...@op...> - 2009-09-17 01:02:12
|
Author: dgollub Date: Thu Sep 17 02:17:12 2009 New Revision: 5774 URL: http://www.opensync.org/changeset/5774 Log: Port vformat plugin to format_env register API changes. See #1087 Modified: format-plugins/vformat/src/vcard.c format-plugins/vformat/src/vevent.c format-plugins/vformat/src/vjournal.c format-plugins/vformat/src/vnote.c format-plugins/vformat/src/vtodo.c Modified: format-plugins/vformat/src/vcard.c ============================================================================== --- format-plugins/vformat/src/vcard.c Thu Sep 17 02:16:52 2009 (r5773) +++ format-plugins/vformat/src/vcard.c Thu Sep 17 02:17:12 2009 (r5774) @@ -82,18 +82,22 @@ osync_objformat_set_compare_func(format, compare_vcard); osync_objformat_set_destroy_func(format, destroy_vcard); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); format = osync_objformat_new("vcard30", "contact", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_vcard); osync_objformat_set_destroy_func(format, destroy_vcard); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); #if 0 /* Filters are not available for 0.40 */ @@ -113,6 +117,9 @@ #endif /* Filters are not available for 0.40 */ return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vevent.c ============================================================================== --- format-plugins/vformat/src/vevent.c Thu Sep 17 02:16:52 2009 (r5773) +++ format-plugins/vformat/src/vevent.c Thu Sep 17 02:17:12 2009 (r5774) @@ -81,12 +81,13 @@ { OSyncObjFormat *format = osync_objformat_new("vevent10", "event", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_vevent); osync_objformat_set_destroy_func(format, destroy_vevent); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; osync_objformat_unref(format); @@ -97,7 +98,9 @@ osync_objformat_set_compare_func(format, compare_vevent); osync_objformat_set_destroy_func(format, destroy_vevent); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); @@ -118,6 +121,9 @@ */ return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vjournal.c ============================================================================== --- format-plugins/vformat/src/vjournal.c Thu Sep 17 02:16:52 2009 (r5773) +++ format-plugins/vformat/src/vjournal.c Thu Sep 17 02:17:12 2009 (r5774) @@ -63,15 +63,20 @@ { OSyncObjFormat *format = osync_objformat_new("vjournal", "note", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_vjournal); osync_objformat_set_destroy_func(format, destroy_vjournal); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vnote.c ============================================================================== --- format-plugins/vformat/src/vnote.c Thu Sep 17 02:16:52 2009 (r5773) +++ format-plugins/vformat/src/vnote.c Thu Sep 17 02:17:12 2009 (r5774) @@ -62,15 +62,20 @@ { OSyncObjFormat *format = osync_objformat_new("vnote11", "note", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_vnote); osync_objformat_set_destroy_func(format, destroy_vnote); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) Modified: format-plugins/vformat/src/vtodo.c ============================================================================== --- format-plugins/vformat/src/vtodo.c Thu Sep 17 02:16:52 2009 (r5773) +++ format-plugins/vformat/src/vtodo.c Thu Sep 17 02:17:12 2009 (r5774) @@ -74,12 +74,14 @@ { OSyncObjFormat *format = osync_objformat_new("vtodo10", "todo", error); if (!format) - return FALSE; + goto error; osync_objformat_set_compare_func(format, compare_vtodo); osync_objformat_set_destroy_func(format, destroy_vtodo); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); format = osync_objformat_new("vtodo20", "todo", error); @@ -89,10 +91,15 @@ osync_objformat_set_compare_func(format, compare_vtodo); osync_objformat_set_destroy_func(format, destroy_vtodo); - osync_format_env_register_objformat(env, format); + if (!osync_format_env_register_objformat(env, format, error)) + goto error; + osync_objformat_unref(format); return TRUE; + +error: + return FALSE; } osync_bool get_conversion_info(OSyncFormatEnv *env, OSyncError **error) |