void discover_all_once(OSyncEngine *engine, OSyncError **error) { OSyncGroup *group = osync_engine_get_group(engine); int i, max = osync_group_num_members(group); for (i=0; i < max; i++) { OSyncMember *member = osync_group_nth_member(group, i); osync_engine_discover_and_block(engine, member, error); osync_member_save(member, error); } }
/*! @brief Saves the group to disc * * Saves the group to disc possibly creating the configdirectory * * @param group The group * @param error Pointer to an error struct * @returns TRUE on success, FALSE otherwise * */ osync_bool osync_group_save(OSyncGroup *group, OSyncError **error) { char *filename = NULL; int i; xmlDocPtr doc; char *tmstr = NULL; char *version_str = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, group, error); osync_assert(group); osync_assert(group->configdir); osync_trace(TRACE_INTERNAL, "Trying to open configdirectory %s to save group %s", group->configdir, group->name); if (!g_file_test(group->configdir, G_FILE_TEST_IS_DIR)) { osync_trace(TRACE_INTERNAL, "Creating group configdirectory %s", group->configdir); if (g_mkdir(group->configdir, 0700)) { osync_error_set(error, OSYNC_ERROR_IO_ERROR, "Unable to create directory for group %s\n", group->name); goto error; } } filename = g_strdup_printf ("%s%csyncgroup.conf", group->configdir, G_DIR_SEPARATOR); osync_trace(TRACE_INTERNAL, "Saving group to file %s", filename); doc = xmlNewDoc((xmlChar*)"1.0"); doc->children = xmlNewDocNode(doc, NULL, (xmlChar*)"syncgroup", NULL); version_str = g_strdup_printf("%u.%u", OSYNC_GROUP_MAJOR_VERSION, OSYNC_GROUP_MINOR_VERSION); xmlSetProp(doc->children, (const xmlChar*)"version", (const xmlChar *)version_str); g_free(version_str); // TODO: reimplement the filter! //The filters /*GList *f; for (f = group->filters; f; f = f->next) { OSyncFilter *filter = f->data; xmlNodePtr child = xmlNewChild(doc->children, NULL, (xmlChar*)"filter", NULL); if (filter->sourcememberid) { char *sourcememberid = g_strdup_printf("%lli", filter->sourcememberid); xmlNewChild(child, NULL, (xmlChar*)"sourcemember", (xmlChar*)sourcememberid); g_free(sourcememberid); } if (filter->destmemberid) { char *destmemberid = g_strdup_printf("%lli", filter->destmemberid); xmlNewChild(child, NULL, (xmlChar*)"destmember", (xmlChar*)destmemberid); g_free(destmemberid); } if (filter->sourceobjtype) xmlNewChild(child, NULL, (xmlChar*)"sourceobjtype", (xmlChar*)filter->sourceobjtype); if (filter->destobjtype) xmlNewChild(child, NULL, (xmlChar*)"destobjtype", (xmlChar*)filter->destobjtype); if (filter->detectobjtype) xmlNewChild(child, NULL, (xmlChar*)"detectobjtype", (xmlChar*)filter->detectobjtype); if (filter->action) { char *action = g_strdup_printf("%i", filter->action); xmlNewChild(child, NULL, (xmlChar*)"action", (xmlChar*)action); g_free(action); } if (filter->function_name) xmlNewChild(child, NULL, (xmlChar*)"function_name", (xmlChar*)filter->function_name); if (filter->config) xmlNewChild(child, NULL, (xmlChar*)"config", (xmlChar*)filter->config); }*/ xmlNewChild(doc->children, NULL, (xmlChar*)"groupname", (xmlChar*)group->name); tmstr = g_strdup_printf("%i", (int)group->last_sync); xmlNewChild(doc->children, NULL, (xmlChar*)"last_sync", (xmlChar*)tmstr); g_free(tmstr); xmlNewChild(doc->children, NULL, (xmlChar*)"merger_enabled", (xmlChar*) (group->merger_enabled ? "true" : "false")); xmlNewChild(doc->children, NULL, (xmlChar*)"converter_enabled", (xmlChar*) (group->converter_enabled ? "true" : "false")); xmlSaveFormatFile(filename, doc, 1); osync_xml_free_doc(doc); g_free(filename); for (i = 0; i < osync_group_num_members(group); i++) { OSyncMember *member = osync_group_nth_member(group, i); 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; }