### Eclipse Workspace Patch 1.0
#P libopensync-Source@opensync-db2
Index: opensync/plugin/opensync_plugin_env.h
===================================================================
--- opensync/plugin/opensync_plugin_env.h	(revision 5314)
+++ opensync/plugin/opensync_plugin_env.h	(working copy)
@@ -101,27 +101,13 @@
  */
 OSYNC_EXPORT OSyncPlugin *osync_plugin_env_find_plugin(OSyncPluginEnv *env, const char *name);
 
-/** @brief Returns the number of loaded plugins
+/* @brief Get all plugins which are registered in the Plugin Env
  * 
- * Returns the number of loaded plugins. 0 if used before initialization
- * 
- * @param env Pointer to a OSyncPluginEnv environment
- * @returns Number of plugins
- * 
+ * @param env Pointer to a OSyncPluginEnv
+ * @return A shallow copy of the internal plugin list
  */
-OSYNC_EXPORT unsigned int osync_plugin_env_num_plugins(OSyncPluginEnv *env);
+OSYNC_EXPORT OSyncList *osync_plugin_env_get_plugins(OSyncPluginEnv *env);
 
-/** @brief Returns pointer to nth plugin
- * 
- * Returns pointer to nth plugin
- * 
- * @param env Pointer to a OSyncPluginEnv environment
- * @param nth Which plugin to return
- * @returns Pointer to plugin
- * 
- */
-OSYNC_EXPORT OSyncPlugin *osync_plugin_env_nth_plugin(OSyncPluginEnv *env, unsigned int nth);
-
 /*@}*/
 
 #endif /* _OPENSYNC_PLUGIN_ENV_H_ */
Index: opensync/plugin/opensync_plugin_env_internals.h
===================================================================
--- opensync/plugin/opensync_plugin_env_internals.h	(revision 5314)
+++ opensync/plugin/opensync_plugin_env_internals.h	(working copy)
@@ -50,6 +50,16 @@
  */
 OSYNC_TEST_EXPORT osync_bool osync_plugin_env_plugin_is_usable(OSyncPluginEnv *env, const char *pluginname, OSyncError **error);
 
+/** @brief Returns the number of loaded plugins
+ * 
+ * Returns the number of loaded plugins. 0 if used before initialization
+ * 
+ * @param env Pointer to a OSyncPluginEnv environment
+ * @returns Number of plugins
+ * 
+ */
+OSYNC_EXPORT unsigned int osync_plugin_env_num_plugins(OSyncPluginEnv *env);
+
 /*@}*/
 
 #endif /* _OPENSYNC_PLUGIN_ENV_INTERNALS_H_ */
Index: tools/osyncplugin.c
===================================================================
--- tools/osyncplugin.c	(revision 5314)
+++ tools/osyncplugin.c	(working copy)
@@ -1226,9 +1226,10 @@
 	if (!osync_plugin_env_load(plugin_env, pluginpath, error))
 		goto error_free_formatenv;
 
-	num= osync_plugin_env_num_plugins(plugin_env);
+	OSyncList *plugins = osync_plugin_env_get_plugins(plugin_env);
+	num = osync_list_length(plugins);
 	for(i= 0; i < num; i++) {
-		OSyncPlugin* plugin= osync_plugin_env_nth_plugin(plugin_env, i);
+		OSyncPlugin* plugin = (OSyncPlugin*)osync_list_nth_data(plugins, i);
 		fprintf (stdout, "Name:        %s\n", osync_plugin_get_name(plugin));
 		fprintf (stdout, "Description: %s\n", osync_plugin_get_description(plugin));		
 	} 
Index: wrapper/opensync-plugin.i
===================================================================
--- wrapper/opensync-plugin.i	(revision 5314)
+++ wrapper/opensync-plugin.i	(working copy)
@@ -120,11 +120,14 @@
 	}
 
 	int num_plugins() {
-		return osync_plugin_env_num_plugins(self);
+		OSyncList *plugins = osync_plugin_env_get_plugins(self);
+		return osync_list_length(plugins);
 	}
 
 	Plugin *nth_plugin(int nth) {
-		Plugin *plugin = osync_plugin_env_nth_plugin(self, nth);
+		OSyncList *plugins = osync_plugin_env_get_plugins(self);
+		
+		Plugin *plugin = (OSyncPlugin*)osync_list_nth_data(plugins, nth);
 		if (plugin)
 			osync_plugin_ref(plugin);
 		return plugin;
Index: opensync/plugin/opensync_plugin_env.c
===================================================================
--- opensync/plugin/opensync_plugin_env.c	(revision 5314)
+++ opensync/plugin/opensync_plugin_env.c	(working copy)
@@ -214,9 +214,10 @@
 	return osync_list_length(env->plugins);
 }
 
-OSyncPlugin *osync_plugin_env_nth_plugin(OSyncPluginEnv *env, unsigned int nth)
+OSyncList *osync_plugin_env_get_plugins(OSyncPluginEnv *env)
 {
-	return (OSyncPlugin *)osync_list_nth_data(env->plugins, nth);
+	OSyncList *newlist = osync_list_alloc();
+	return osync_list_copy(newlist);
 }
 
 osync_bool osync_plugin_env_plugin_is_usable(OSyncPluginEnv *env, const char *pluginname, OSyncError **error)


