From: <dg...@su...> - 2009-01-11 16:20:36
|
Author: bricks Date: Sun Jan 11 17:19:57 2009 New Revision: 5109 URL: http://www.opensync.org/changeset/5109 Log: Changed osync_plugin_initialize to return osync_bool Now plugins don't have to return any data in their initialize function Modified: trunk/opensync/client/opensync_client.c trunk/opensync/plugin/opensync_plugin.c trunk/opensync/plugin/opensync_plugin.h trunk/tests/mock-plugin/mock_sync.c trunk/tests/support.c trunk/tests/sync-tests/check_sync_error.c trunk/tools/osyncplugin.c trunk/wrapper/opensync-plugin.i Modified: trunk/opensync/client/opensync_client.c ============================================================================== --- trunk/opensync/client/opensync_client.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/opensync/client/opensync_client.c Sun Jan 11 17:19:57 2009 (r5109) @@ -573,6 +573,7 @@ OSyncList *o = NULL; OSyncObjFormatSink *format_sink = NULL; unsigned int n, num_sinks; + osync_bool couldinit; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, client, message, error); @@ -685,9 +686,9 @@ } } - client->plugin_data = osync_plugin_initialize(client->plugin, client->plugin_info, error); - if (!client->plugin_data) { - if (!*error) + couldinit = osync_plugin_initialize(client->plugin, &(client->plugin_data), client->plugin_info, error); + if (!couldinit) { + if (!osync_error_is_set(error)) osync_error_set(error, OSYNC_ERROR_GENERIC, "Plugin \"%s\" failed to initialize but gave no reason", pluginname); goto error; } Modified: trunk/opensync/plugin/opensync_plugin.c ============================================================================== --- trunk/opensync/plugin/opensync_plugin.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/opensync/plugin/opensync_plugin.c Sun Jan 11 17:19:57 2009 (r5109) @@ -167,10 +167,24 @@ plugin->discover = discover; } -void *osync_plugin_initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **error) +osync_bool osync_plugin_initialize(OSyncPlugin *plugin, void **plugin_data, OSyncPluginInfo *info, OSyncError **error) { osync_assert(plugin); - return plugin->initialize(plugin, info, error); + osync_assert(plugin_data); + + osync_return_val_if_fail_and_set_error(plugin, FALSE, error, OSYNC_ERROR_PARAMETER, "osync_plugin_initialize: plugin is null"); + osync_return_val_if_fail_and_set_error(plugin_data, FALSE, error, OSYNC_ERROR_PARAMETER, "osync_plugin_initialize: plugin_data is null"); + + /* Just return with FALSE, if no initialize function is registered */ + osync_return_val_if_fail_and_set_error(plugin->initialize, FALSE, error, OSYNC_ERROR_INITIALIZATION, "plugin %s has no plugin initialize function", osync_plugin_get_name(plugin) ); + + void *data = plugin->initialize(plugin, info, error); + if (osync_error_is_set(error)) { + return FALSE; + } + *plugin_data = data; + + return TRUE; } void osync_plugin_finalize(OSyncPlugin *plugin, void *data) Modified: trunk/opensync/plugin/opensync_plugin.h ============================================================================== --- trunk/opensync/plugin/opensync_plugin.h Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/opensync/plugin/opensync_plugin.h Sun Jan 11 17:19:57 2009 (r5109) @@ -273,7 +273,7 @@ * @param error Pointer to error-struct * @return Userdata returned by the plugin on success, NULL on error */ -OSYNC_EXPORT void *osync_plugin_initialize(OSyncPlugin *plugin, OSyncPluginInfo *info, OSyncError **error); +OSYNC_EXPORT osync_bool osync_plugin_initialize(OSyncPlugin *plugin, void **plugin_data, OSyncPluginInfo *info, OSyncError **error); /** @brief Finalize Plugin * Modified: trunk/tests/mock-plugin/mock_sync.c ============================================================================== --- trunk/tests/mock-plugin/mock_sync.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/tests/mock-plugin/mock_sync.c Sun Jan 11 17:19:57 2009 (r5109) @@ -566,7 +566,7 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, info, error); if (mock_get_error(info->memberid, "INIT_NULL_NOERROR")) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + osync_trace(TRACE_EXIT, "%s: %s", __func__, "Everything is fine. I don't need plugin userdata."); return NULL; } Modified: trunk/tests/support.c ============================================================================== --- trunk/tests/support.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/tests/support.c Sun Jan 11 17:19:57 2009 (r5109) @@ -58,6 +58,7 @@ g_unsetenv("CONNECT_TIMEOUT"); g_unsetenv("CONNECT_SLOWSYNC"); g_unsetenv("INIT_NULL"); + g_unsetenv("INIT_NULL_NOERROR"); g_unsetenv("GET_CHANGES_ERROR"); g_unsetenv("GET_CHANGES_TIMEOUT"); g_unsetenv("GET_CHANGES_TIMEOUT2"); Modified: trunk/tests/sync-tests/check_sync_error.c ============================================================================== --- trunk/tests/sync-tests/check_sync_error.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/tests/sync-tests/check_sync_error.c Sun Jan 11 17:19:57 2009 (r5109) @@ -32,8 +32,8 @@ osync_engine_set_memberstatus_callback(engine, member_status, GINT_TO_POINTER(1)); - fail_unless(!osync_engine_initialize(engine, &error), NULL); - fail_unless(error != NULL, NULL); + fail_unless(osync_engine_initialize(engine, &error), NULL); + fail_unless(error == NULL, NULL); osync_engine_unref(engine); g_free(formatdir); Modified: trunk/tools/osyncplugin.c ============================================================================== --- trunk/tools/osyncplugin.c Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/tools/osyncplugin.c Sun Jan 11 17:19:57 2009 (r5109) @@ -450,7 +450,9 @@ static void *plugin_initialize(OSyncError **error) { unsigned int n, num_sinks = osync_plugin_info_num_objtypes(plugin_info); - void *plugin_data = osync_plugin_initialize(plugin, plugin_info, error); + void *plugin_data; + osync_bool couldinit; + couldinit = osync_plugin_initialize(plugin, &(plugin_data), plugin_info, error); for (n = 0; n < num_sinks; n++) { Modified: trunk/wrapper/opensync-plugin.i ============================================================================== --- trunk/wrapper/opensync-plugin.i Sun Jan 11 17:14:51 2009 (r5108) +++ trunk/wrapper/opensync-plugin.i Sun Jan 11 17:19:57 2009 (r5109) @@ -59,9 +59,9 @@ osync_plugin_set_config_type(self, config_type); } - void *initialize(PluginInfo *info) { + osync_bool initialize(PluginInfo *info, void **plugin_data) { Error *err = NULL; - void *ret = osync_plugin_initialize(self, info, &err); + osync_bool ret = osync_plugin_initialize(self, plugin_data, info, &err); raise_exception_on_error(err); return ret; } |