From: <svn...@op...> - 2009-06-26 15:44:54
|
Author: dgollub Date: Fri Jun 26 17:44:51 2009 New Revision: 5687 URL: http://www.opensync.org/changeset/5687 Log: poc for ticket #1084 for osynctool and evo2-sync Modified: branches/ticket1084/evo2-sync/src/evolution2_capabilities.c branches/ticket1084/evo2-sync/src/evolution2_sync.c branches/ticket1084/osynctool/tools/osynctool.c Modified: branches/ticket1084/evo2-sync/src/evolution2_capabilities.c ============================================================================== --- branches/ticket1084/evo2-sync/src/evolution2_capabilities.c Fri Jun 26 17:42:37 2009 (r5686) +++ branches/ticket1084/evo2-sync/src/evolution2_capabilities.c Fri Jun 26 17:44:51 2009 (r5687) @@ -100,8 +100,11 @@ osync_assert(fields); osync_assert(objtype); + OSyncCapabilitiesObjType *capsobjtype = osync_capabilities_objtype_new(caps, objtype, error); + for(; fields; fields = g_list_next(fields)) { +#if 0 const char *value = g_hash_table_lookup(hash, fields->data); if (value == NULL) { osync_trace(TRACE_INTERNAL, "%s: ebook capability '%s' could not be translated", __func__, fields->data); @@ -113,6 +116,12 @@ goto error; } } +#endif + OSyncCapability *cap = osync_capability_new(capsobjtype, error); + if (!cap) + goto error; + + osync_capability_set_name(cap, (const char *) fields->data); } osync_trace(TRACE_EXIT, "%s", __func__); Modified: branches/ticket1084/evo2-sync/src/evolution2_sync.c ============================================================================== --- branches/ticket1084/evo2-sync/src/evolution2_sync.c Fri Jun 26 17:42:37 2009 (r5686) +++ branches/ticket1084/evo2-sync/src/evolution2_sync.c Fri Jun 26 17:44:51 2009 (r5687) @@ -183,7 +183,7 @@ osync_version_unref(version); OSyncCapabilities *capabilities; - capabilities = osync_capabilities_new(error); + capabilities = osync_capabilities_new("evo2-caps", error); if (!evo2_ebook_discover(env, capabilities, error)) { goto error_free_capabilties; } Modified: branches/ticket1084/osynctool/tools/osynctool.c ============================================================================== --- branches/ticket1084/osynctool/tools/osynctool.c Fri Jun 26 17:42:37 2009 (r5686) +++ branches/ticket1084/osynctool/tools/osynctool.c Fri Jun 26 17:44:51 2009 (r5687) @@ -154,7 +154,6 @@ OSYNCTOOL_CONFIGURE_ENABLE_CONVERTER, OSYNCTOOL_CONFIGURE_DISABLE_CONVERTER, OSYNCTOOL_CONFIGURE_FILTER, - OSYNCTOOL_CONFIGURE_CAPABILITIES, OSYNCTOOL_CONFIGURE_DISCOVER, OSYNCTOOL_CONFIGURE_MEMBER_ENABLE_WRITE, OSYNCTOOL_CONFIGURE_MEMBER_DISABLE_WRITE, @@ -838,10 +837,8 @@ static osync_bool osynctool_show_capabilities(OSyncGroupEnv *env, const char *groupname, OSyncError **error) { - int size; - char *data = NULL; OSyncMember *member = NULL; - OSyncList *m, *members; + OSyncList *m, *members, *o, *objtypes; OSyncGroup *group = osync_group_env_find_group(env, groupname); if (!group) { @@ -857,14 +854,28 @@ printf("Member %lli: %s\n", osync_member_get_id(member), osync_member_get_pluginname(member)); OSyncCapabilities *capabilities = osync_member_get_capabilities(member); - if(!capabilities) { + if (!capabilities) { printf("No capabilities found.\n"); continue; } - - osync_capabilities_assemble(capabilities, &data, &size); - printf("\n%s\n", data); - g_free(data); + + objtypes = osync_member_get_objtypes(member); + for (o=objtypes; o; o = o->next) { + const char *objtype = (const char *) o->data; + OSyncCapabilitiesObjType *capsobjtype = osync_capabilities_get_objtype(capabilities, objtype); + OSyncList *caps = osync_capabilities_objtype_get_caps(capsobjtype); + printf("Capabilities for \"%s\":\n", objtype); + printf("Name\tDisplayName\tMaxOccurs\tMax\tMin\n"); + for (; caps; caps = caps->next) { + OSyncCapability *cap = (OSyncCapability *) caps->data; + printf("%s\t%s\t%u\t%u\t%u\n", + osync_capability_get_name(cap), + osync_capability_get_displayname(cap), + osync_capability_get_maxoccurs(cap), + osync_capability_get_max(cap), + osync_capability_get_min(cap)); + } + } } osync_list_free(members); @@ -1019,72 +1030,6 @@ return TRUE; } -static osync_bool edit_data(const char* data, int size, char** edited_data, unsigned int* edited_size, OSyncError** error) -{ - int file = 0; - char *tmpfile = NULL; - char *editcmd = NULL; - char *editor = NULL; - - tmpfile = g_strdup_printf("%s/osynctooltmp-XXXXXX", g_get_tmp_dir()); - file = g_mkstemp(tmpfile); - if (!file) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to create temp file"); - goto error_free_tmp; - } - - if (write(file, data, size) == -1) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to write to temp file: %i", errno); - goto error_close_file; - } - - if (close(file) == -1) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to close temp file: %i", errno); - goto error_free_tmp; - } - -#ifdef _WIN32 - editcmd = g_strdup_printf("notepad %s", tmpfile); -#else - if (!(editor = getenv("EDITOR"))) - editor = getenv("VISUAL"); - - if (editor) - editcmd = g_strdup_printf("%s %s", editor, tmpfile); - else - editcmd = g_strdup_printf("vi %s", tmpfile); -#endif - - if (system(editcmd)) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to open editor. Aborting"); - g_free(editcmd); - goto error_free_tmp; - } - - g_free(editcmd); - - if (!osync_file_read(tmpfile, edited_data, edited_size, error)) - goto error_free_tmp; - - if (remove(tmpfile) != 0) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to remove file %s", tmpfile); - g_free(edited_data); - goto error_free_tmp; - } - - g_free(tmpfile); - - osync_trace(TRACE_EXIT, "%s", __func__); - return TRUE; - -error_close_file: - close(file); -error_free_tmp: - g_free(tmpfile); - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; -} - static osync_bool edit_config(OSyncPluginConfig **config, OSyncError** error) { int file = 0; @@ -1269,61 +1214,6 @@ return TRUE; } -static osync_bool osynctool_configure_capabilities(OSyncGroupEnv *env, const char *groupname, const char *memberid, OSyncError **error) -{ - char *data = NULL; - char *edited = NULL; - int size = 0; - long long id = 0; - OSyncGroup *group = NULL; - OSyncMember *member = NULL; - - osync_trace(TRACE_ENTRY, "%s(%p, %p, %s, %s, %p)", __func__, env, groupname, memberid, error); - - group = osync_group_env_find_group(env, groupname); - if (!group) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to find group with name %s", groupname); - goto error; - } - - id = atoi(memberid); - member = osync_group_find_member(group, id); - if (!member) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to find member with id %s", memberid); - goto error; - } - - OSyncCapabilities *capabilities = osync_member_get_capabilities(member); - osync_bool rc; - if(capabilities) { - osync_capabilities_assemble(capabilities, &data, &size); - rc = edit_data(data, strlen(data), &edited, (unsigned int *)&size, error); - g_free(data); - }else{ - rc = edit_data(NULL, 0, &edited, (unsigned int *)&size, error); - } - if(!rc) - goto error; - - OSyncCapabilities *capabilitiesnew = osync_capabilities_parse(edited, size, error); - g_free(edited); - if(!capabilitiesnew) - goto error; - - if(!osync_member_set_capabilities(member, capabilitiesnew, error)) - goto error; - - if (!osync_member_save(member, 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 osynctool_configure_discover_member(OSyncEngine *engine, OSyncMember *member, OSyncError **error) { OSyncList *objtypes, *o; @@ -1464,7 +1354,6 @@ {"enable-converter", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_ENABLE_CONVERTER}, {"disable-converter", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_DISABLE_CONVERTER}, {"configure-filter", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_FILTER}, - {"configure-capabilities", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_CAPABILITIES}, {"addmember", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_ADDMEMBER}, {"configure", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE}, {"delmember", no_argument, (int *)&action, OSYNCTOOL_CONFIGURE_DELMEMBER}, @@ -1552,7 +1441,6 @@ break; case OSYNCTOOL_CONFIGURE: case OSYNCTOOL_CONFIGURE_DELMEMBER: - case OSYNCTOOL_CONFIGURE_CAPABILITIES: if (argc - optind != 2) usage(argv[0], 1); groupname = argv[optind]; @@ -1649,7 +1537,6 @@ case OSYNCTOOL_CONFIGURE_ADDMEMBER: case OSYNCTOOL_SYNC: case OSYNCTOOL_CONFIGURE: - case OSYNCTOOL_CONFIGURE_CAPABILITIES: case OSYNCTOOL_CONFIGURE_DISCOVER: if (!osync_group_env_load_groups(group_env, configdir, &error)) goto error_free_plugin_env; @@ -1746,10 +1633,6 @@ if (!osynctool_configure_filter(group_env, groupname, &error)) goto error_free_plugin_env; break; - case OSYNCTOOL_CONFIGURE_CAPABILITIES: - if (!osynctool_configure_capabilities(group_env, groupname, membername, &error)) - goto error_free_plugin_env; - break; case OSYNCTOOL_CONFIGURE_DISCOVER: if (!osynctool_configure_discover(group_env, plugin_env, groupname, membername, &error)) goto error_free_plugin_env; |