static void dump_map(OSyncGroupEnv *env, const char *groupname) { OSyncGroup *group = osync_group_env_find_group(env, groupname); int num_objtypes; if (!group) { printf("Unable to find group with name \"%s\"\n", groupname); return; } OSyncList *objtypes = osync_group_get_objtypes(group); num_objtypes = osync_list_length(objtypes); if (num_objtypes == 0) { printf("Group has no objtypes. Have the objtypes already been discovered?\n"); return; } OSyncList *o; for (o = objtypes; o; o = o->next) { const char *objtype = (char *) o->data; printf("Mappings for objtype \"%s\":\n", objtype); dump_map_objtype(env, objtype, groupname); } osync_list_free(objtypes); }
static void dump_map(OSyncGroupEnv *env, const char *groupname) { OSyncGroup *group = osync_group_env_find_group(env, groupname); int i, num_objtypes; if (!group) { printf("Unable to find group with name \"%s\"\n", groupname); return; } num_objtypes = osync_group_num_objtypes(group); if (num_objtypes == 0) { printf("Group has no objtypes. Have the objtypes already been discovered?\n"); return; } for (i = 0; i < num_objtypes; i++) { const char *objtype = osync_group_nth_objtype(group, i); printf("Mappings for objtype \"%s\":\n", objtype); dump_map_objtype(env, objtype, groupname); } }
int main (int argc, char *argv[]) { int i; char *groupname = NULL; char *membername = NULL; ToolAction action = DUMPMAPS; char *configdir = NULL; char *objtype = NULL; OSyncError *error = NULL; OSyncGroupEnv *env = NULL; if (argc == 1) usage (argv[0], 1); groupname = argv[1]; for (i = 2; i < argc; i++) { char *arg = argv[i]; if (!strcmp (arg, "--mappings")) { action = DUMPMAPS; objtype = argv[i + 1]; i++; if (!objtype) usage (argv[0], 1); } else if (!strcmp (arg, "--hash")) { action = DUMPHASH; objtype = argv[i + 1]; membername = argv[i + 2]; i += 2; if (!objtype || !membername) usage (argv[0], 1); } else if (!strcmp (arg, "--reset")) { action = RESET; } else if (!strcmp (arg, "--help")) { usage (argv[0], 0); } else if (!strcmp (arg, "--configdir")) { configdir = argv[i + 1]; i++; if (!configdir) usage (argv[0], 1); } else if (!strcmp (arg, "--")) { break; } else if (arg[0] == '-') { usage (argv[0], 1); } else { usage (argv[0], 1); } } env = osync_group_env_new(&error); if (!env) goto error; if (!osync_group_env_load_groups(env, configdir, &error)) goto error; switch (action) { case DUMPMAPS: if (objtype) dump_map_objtype(env, objtype, groupname); else dump_map(env, groupname); break; case DUMPHASH: dump_hash(env, objtype, groupname, membername); break; case RESET: reset(env, groupname); break; } osync_group_env_unref(env); return 0; error: if (env) osync_group_env_unref(env); printf("ERROR: %s", osync_error_print(&error)); osync_error_unref(&error); return 1; }