|
From: <svn...@op...> - 2009-03-30 03:08:21
|
Author: dgollub Date: Mon Mar 30 05:08:09 2009 New Revision: 5448 URL: http://www.opensync.org/changeset/5448 Log: Ported osynctool to latest API-list-pattern redesign. refs #975 Modified: osynctool/trunk/tools/osynctool.c Modified: osynctool/trunk/tools/osynctool.c ============================================================================== --- osynctool/trunk/tools/osynctool.c Mon Mar 30 04:40:10 2009 (r5447) +++ osynctool/trunk/tools/osynctool.c Mon Mar 30 05:08:09 2009 (r5448) @@ -164,12 +164,16 @@ static osync_bool osynctool_list_formats(OSyncFormatEnv *env, OSyncError **error) { - int i; - for (i = 0; i < osync_format_env_num_objformats(env); i++) { - OSyncObjFormat *format = osync_format_env_nth_objformat(env, i); + OSyncList *o, *objformats = osync_format_env_get_objformats(env); + + for (o = objformats; o; o = o->next) { + OSyncObjFormat *format = (OSyncObjFormat *) o->data; printf("Format: %s\n", osync_objformat_get_name(format)); printf("\tObject Type: %s\n", osync_objformat_get_objtype(format)); } + + osync_list_free(objformats); + return TRUE; } @@ -200,15 +204,17 @@ static void osynctool_show_groups(OSyncGroupEnv *env) { - int i; OSyncGroup *group; + OSyncList *g, *groups = osync_group_env_get_groups(env); printf("Available groups:\n"); - for (i = 0; i < osync_group_env_num_groups(env); i++) { - group = osync_group_env_nth_group(env, i); + for (g = groups; g; g = g->next) { + group = (OSyncGroup *) g->data; printf("%s\n", osync_group_get_name(group)); } + + osync_list_free(groups); } static const char *OSyncChangeType2String(OSyncChangeType type) @@ -272,28 +278,28 @@ static void multiply_summary(OSyncEngine *engine, void *user_data) { - unsigned int o, i, num_objengines, num_members; const OSyncList *mapping_entry_engines, *e; osync_bool dirty = FALSE; OSyncError *error = NULL; + OSyncList *o, *objengines = osync_engine_get_objengines(engine); + OSyncList *m, *members; osync_trace(TRACE_ENTRY, "%s(%p %p)", __func__, engine, user_data); printf("\nSynchronization Forecast Summary:\n"); - num_objengines = osync_engine_num_objengines(engine); - for (o = 0; o < num_objengines; o++) { + for (o = objengines; o; o = o->next) { OSyncChangeType type; - OSyncObjEngine *objengine = osync_engine_nth_objengine(engine, o); + OSyncObjEngine *objengine = (OSyncObjEngine *) o->data; unsigned int added, modified, deleted; printf("\nObjType: %s\n", osync_obj_engine_get_objtype(objengine)); - num_members = osync_obj_engine_num_members(objengine); - for (i=0; i < num_members; i++) { - OSyncMember *member = osync_obj_engine_nth_member(objengine, i); + members = osync_obj_engine_get_members(objengine); + for (m = members; m; m = m->next) { + OSyncMember *member = (OSyncMember *) m->data; mapping_entry_engines = osync_obj_engine_get_mapping_entry_engines_of_member(objengine, member); @@ -482,9 +488,11 @@ static void conflict_handler(OSyncEngine *engine, OSyncMappingEngine *mapping, void *user_data) { + int i; OSyncError *error = NULL; OSyncConflictResolution res = OSYNC_CONFLICT_RESOLUTION_UNKNOWN; OSyncChange *change = NULL; + OSyncList *c, *changes = osync_mapping_engine_get_changes(mapping); printf("Conflict for Mapping %p: ", mapping); fflush(stdout); @@ -504,9 +512,8 @@ osync_bool supports_use_latest = osync_mapping_engine_supports_use_latest(mapping); if (res == OSYNC_CONFLICT_RESOLUTION_UNKNOWN) { - int i = 0; - for (i = 0; i < osync_mapping_engine_num_changes(mapping); i++) { - OSyncChange *change = osync_mapping_engine_nth_change(mapping, i); + for (i = 0, c = changes; c; c = c->next, i++) { + OSyncChange *change = (OSyncChange *) c->data; 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); @@ -547,7 +554,7 @@ winner = atoi(inpbuf) - 1; if (winner >= 0) { - if (!osync_mapping_engine_nth_change(mapping, winner)) + if (!osync_list_nth(changes, winner)) printf("Unable to find change #%i\n", winner + 1); else res = OSYNC_CONFLICT_RESOLUTION_SELECT; @@ -584,7 +591,7 @@ case OSYNC_CONFLICT_RESOLUTION_SELECT: printf("Solving conflict\n"); - change = osync_mapping_engine_nth_change(mapping, winner); + change = (OSyncChange *) osync_list_nth(changes, winner); g_assert(change); if (!osync_engine_mapping_solve(engine, mapping, change, &error)) @@ -593,10 +600,13 @@ case OSYNC_CONFLICT_RESOLUTION_UNKNOWN: g_assert_not_reached(); } + + osync_list_free(changes); return; error: + osync_list_free(changes); printf("Conflict not resolved: %s\n", osync_error_print(&error)); osync_error_unref(&error); } @@ -605,6 +615,7 @@ { osync_trace(TRACE_ENTRY, "%s(%p, %s, %i, %i, %p, %p)", __func__, env, groupname, wait, multi, objtypes, error); + OSyncList *m, *members; OSyncGroup *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); @@ -634,14 +645,15 @@ //if (manual) // osengine_flag_manual(engine); - unsigned int i; - for (i=0; i < osync_group_num_members(group); i++) { - OSyncMember *member = osync_group_nth_member(group, i); - unsigned int num = osync_member_num_objtypes(member); - if (num == 0) { + members = osync_group_get_members(group); + for (m = members; m; m = m->next) { + OSyncMember *member = (OSyncMember *) m->data; + OSyncList *objtypes = osync_member_get_objtypes(member); + if (osync_list_length(objtypes) == 0) { printf("Member %llu has no objtypes. Has it already been discovered?\n", osync_member_get_id(member)); } } + osync_list_free(members); if (!osync_engine_initialize(engine, error)) goto error_free_engine; @@ -715,9 +727,9 @@ static osync_bool osynctool_show_group(OSyncGroupEnv *env, const char *groupname, OSyncError **error) { - int i; const char *membername = NULL; OSyncMember *member = NULL; + OSyncList *m, *members; OSyncGroup *group = osync_group_env_find_group(env, groupname); if (!group) { @@ -727,8 +739,9 @@ printf("Group: %s\n", osync_group_get_name(group)); - for (i = 0; i < osync_group_num_members(group); i++) { - member = osync_group_nth_member(group, i); + members = osync_group_get_members(group); + for (m=members; m; m = m->next) { + member = (OSyncMember *) m->data; membername = osync_member_get_name(member); if (membername) { printf("Member %lli (%s): %s\n", osync_member_get_id(member), membername, osync_member_get_pluginname(member)); @@ -749,13 +762,16 @@ */ } } + + osync_list_free(members); + return TRUE; } static osync_bool osynctool_show_objtypes(OSyncGroupEnv *env, const char *groupname, OSyncError **error) { - int i; - OSyncMember *member = NULL; + unsigned int max; + OSyncList *o, *group_objtypes, *m, *members; OSyncGroup *group = osync_group_env_find_group(env, groupname); if (!group) { @@ -763,17 +779,17 @@ return FALSE; } - for (i = 0; i < osync_group_num_members(group); i++) { - member = osync_group_nth_member(group, i); - int num = osync_member_num_objtypes(member); - if (num == 0) { + members = osync_group_get_members(group); + for (m=members; m; m = m->next) { + OSyncMember *member = (OSyncMember *) m->data; + OSyncList *o, *objtypes = osync_member_get_objtypes(member); + if (osync_list_length(objtypes) == 0) { printf("Member %lli has no objtypes. Has it already been discovered?\n", osync_member_get_id(member)); } else { printf("Member %lli Objtypes:\n", osync_member_get_id(member)); - int n = 0; - for (n = 0; n < osync_member_num_objtypes(member); n++) { - const char *objtype = osync_member_nth_objtype(member, n); + for (o=objtypes; o; o = o->next) { + const char *objtype = (const char *) o->data; printf("\tObjtype %s: %s\n", objtype, osync_member_objtype_enabled(member, objtype) ? "Enabled" : "Disabled"); const OSyncList *formats = osync_member_get_objformats(member, objtype, error); if (!formats) { @@ -793,18 +809,22 @@ } } } + osync_list_free(objtypes); } + osync_list_free(members); - int max = osync_group_num_objtypes(group); + group_objtypes = osync_group_get_objtypes(group); + max = osync_list_length(group_objtypes); if (max == 0) { printf("Group has no objtypes. Have the objtypes already been discovered?\n"); } else { printf("Objtypes for the group:\n"); - for (i = 0; i < max; i++) { - const char *objtype = osync_group_nth_objtype(group, i); + for (o=group_objtypes; o; o = o->next) { + const char *objtype = (const char *) o->data; printf("\t%s: %s\n", objtype, osync_group_objtype_enabled(group, objtype) ? "Enabled" : "Disabled"); } } + osync_list_free(group_objtypes); return TRUE; } @@ -816,9 +836,10 @@ static osync_bool osynctool_show_capabilities(OSyncGroupEnv *env, const char *groupname, OSyncError **error) { - int i, size; + int size; char *data = NULL; OSyncMember *member = NULL; + OSyncList *m, *members; OSyncGroup *group = osync_group_env_find_group(env, groupname); if (!group) { @@ -828,8 +849,9 @@ printf("Group: %s\n", osync_group_get_name(group)); - for (i = 0; i < osync_group_num_members(group); i++) { - member = osync_group_nth_member(group, i); + members = osync_group_get_members(group); + for (m=members; m; m = m->next) { + member = (OSyncMember *) m->data; printf("Member %lli: %s\n", osync_member_get_id(member), osync_member_get_pluginname(member)); OSyncCapabilities *capabilities = osync_member_get_capabilities(member); @@ -842,6 +864,8 @@ printf("\n%s\n", data); g_free(data); } + osync_list_free(members); + return TRUE; } @@ -1190,6 +1214,7 @@ long long id = 0; OSyncMember *member = NULL; OSyncGroup *group = NULL; + OSyncList *objtypes = NULL, *o; osync_trace(TRACE_ENTRY, "%s(%p, %s, %s, %s, %i, %p)", __func__, env, groupname, memberid, objtype, isEnable, error); @@ -1212,19 +1237,19 @@ osync_objtype_sink_set_write(sink, isEnable); } else { /* Otherwise configure all sinks */ - int num = osync_member_num_objtypes(member); - if (num == 0) { + objtypes = osync_member_get_objtypes(member); + if (osync_list_length(objtypes) == 0) { osync_error_set(error, OSYNC_ERROR_GENERIC, "Member %lli has no objtypes. Has it already been discovered?\n", osync_member_get_id(member)); goto error; } else { - int n = 0; - for (n = 0; n < osync_member_num_objtypes(member); n++) { - const char *objtype = osync_member_nth_objtype(member, n); + for (o = objtypes; o; o = o->next) { + const char *objtype = (const char*) o->data; OSyncObjTypeSink *sink = osync_member_find_objtype_sink(member, objtype); osync_objtype_sink_set_write(sink, isEnable); } } } + osync_list_free(objtypes); if (!osync_member_save(member, error)) goto error; @@ -1232,6 +1257,7 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; error: + osync_list_free(objtypes); osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return FALSE; } @@ -1298,20 +1324,21 @@ static osync_bool osynctool_configure_discover_member(OSyncEngine *engine, OSyncMember *member, OSyncError **error) { + OSyncList *objtypes, *o; + /* Discover the objtypes for the members */ if (!osync_engine_discover_and_block(engine, member, error)) return FALSE; - int num = osync_member_num_objtypes(member); - if (num == 0) { + objtypes = osync_member_get_objtypes(member); + if (osync_list_length(objtypes) == 0) { osync_error_set(error, OSYNC_ERROR_GENERIC, "discover failed: no objtypes returned"); return FALSE; } else { printf("Discovered Objtypes:\n"); - int n = 0; - for (n = 0; n < osync_member_num_objtypes(member); n++) { - const char *objtype = osync_member_nth_objtype(member, n); + for (o = objtypes; o; o = o->next) { + const char *objtype = (const char *) o->data; printf("\t%s\n", objtype); const OSyncList *formats = osync_member_get_objformats(member, objtype, error); if (!formats) { @@ -1331,6 +1358,8 @@ } } + osync_list_free(objtypes); + if (!osync_member_save(member, error)) return FALSE; @@ -1342,6 +1371,7 @@ long long id = 0; OSyncMember *member = NULL; OSyncGroup *group = NULL; + OSyncList *members = NULL, *m; osync_trace(TRACE_ENTRY, "%s(%p, %p, %s, %s, %p)", __func__, env, pluginenv, groupname, memberid, error); @@ -1366,17 +1396,13 @@ if (!osynctool_configure_discover_member(engine, member, error)) goto error_engine_finalize; } else { - int i; - for (i = 0; i < osync_group_num_members(group); i++) { - member = osync_group_nth_member(group, i); - if (!member) { - osync_error_set(error, OSYNC_ERROR_GENERIC, "Unable to find member #%i", i); - goto error; - } - + members = osync_group_get_members(group); + for (m = members; m; m = m->next) { + member = (OSyncMember *) m->data; if (!osynctool_configure_discover_member(engine, member, error)) goto error_engine_finalize; } + osync_list_free(members); } //osync_engine_set_enginestatus_callback(engine, engine_status, NULL); @@ -1392,6 +1418,7 @@ osync_engine_finalize(engine, error); osync_engine_unref(engine); error: + osync_list_free(members); osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return FALSE; } |