From: <svn...@op...> - 2009-06-21 22:55:37
|
Author: dgollub Date: Mon Jun 22 00:55:33 2009 New Revision: 5677 URL: http://www.opensync.org/changeset/5677 Log: Added interfaces and tests to save and load capabilities as file refs #1084 Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h branches/opensync-ticket1084/opensync/group/opensync_member.c branches/opensync-ticket1084/opensync/version/opensync_version.c branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c Mon Jun 22 00:18:50 2009 (r5676) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities.c Mon Jun 22 00:55:33 2009 (r5677) @@ -175,20 +175,46 @@ return FALSE; } +osync_bool osync_capabilities_save(OSyncCapabilities *capabilities, const char *file, OSyncError **error) +{ + unsigned int size; + char *buffer; + osync_bool ret; + + osync_trace(TRACE_ENTRY, "%s(%p, %s, %p)", __func__, capabilities, __NULLSTR(file), error); + + osync_assert(capabilities); + osync_assert(file); + + ret = osync_capabilities_assemble(capabilities, &buffer, &size, error); + if (!ret) + goto error; + + ret = osync_file_write(file, buffer, size, 0600, error); + osync_free(buffer); + + if (!ret) + 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; +} + OSyncCapabilities *osync_capabilities_load(const char *file, OSyncError **error) { unsigned int size; - char *buffer, *filename; + char *buffer; OSyncCapabilities *capabilities; osync_bool b; osync_trace(TRACE_ENTRY, "%s(%s, %p)", __func__, file, error); osync_assert(file); - filename = osync_strdup_printf("%s%c%s", OPENSYNC_CAPABILITIESDIR, G_DIR_SEPARATOR, file); - - b = osync_file_read(filename, &buffer, &size, error); - osync_free(filename); + b = osync_file_read(file, &buffer, &size, error); if(!b) { osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); return NULL; @@ -205,6 +231,29 @@ return capabilities; } +OSyncCapabilities *osync_capabilities_load_identifier(const char *file, OSyncError **error) +{ + unsigned int size; + char *buffer, *filename; + OSyncCapabilities *capabilities; + + osync_trace(TRACE_ENTRY, "%s(%s, %p)", __func__, file, error); + osync_assert(file); + + filename = osync_strdup_printf("%s%c%s", OPENSYNC_CAPABILITIESDIR, G_DIR_SEPARATOR, file); + + capabilities = osync_capabilities_load(filename, &error); + if (!capabilities) + goto error; + + osync_trace(TRACE_EXIT, "%s: %p", __func__, capabilities); + return capabilities; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; +} + const char *osync_capabilities_get_format(OSyncCapabilities *capabilities) { osync_assert(capabilities); Modified: branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h ============================================================================== --- branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h Mon Jun 22 00:18:50 2009 (r5676) +++ branches/opensync-ticket1084/opensync/capabilities/opensync_capabilities_internals.h Mon Jun 22 00:55:33 2009 (r5677) @@ -39,14 +39,33 @@ */ OSYNC_TEST_EXPORT void osync_capabilities_sort(OSyncCapabilities *capabilities); +/** + * @brief Save a capabilities object in a file + * @param capabilities The pointer to a capabilities object + * @param file The name of the file + * @param error The error which will hold the info in case of an error + * @return TRUE on success, FALSE otherwise + */ +OSYNC_TEST_EXPORT osync_bool osync_capabilities_save(OSyncCapabilities *capabilities, const char *file, OSyncError **error); + +/** + * @brief Load a capabilities object from a file + * @param file The name of the file + * @param error The error which will hold the info in case of an error + * @return The pointer to the newly allocated capabilities object or NULL in case of error + */ +OSYNC_TEST_EXPORT OSyncCapabilities *osync_capabilities_load(const char *file, OSyncError **error); /** * @brief Load a capabilities object from a prepackaged file + * + * The location of the prepackaged file is: OPENSYNC_CAPABILITIESDIR/$file + * * @param file The name of the file * @param error The error which will hold the info in case of an error * @return The pointer to the newly allocated capabilities object or NULL in case of error */ -OSyncCapabilities *osync_capabilities_load(const char *file, OSyncError **error); +OSYNC_TEST_EXPORT OSyncCapabilities *osync_capabilities_load_identifier(const char *file, OSyncError **error); /** * @brief Get the first capabilitiesobjtype for a given objtype from the capabilities Modified: branches/opensync-ticket1084/opensync/group/opensync_member.c ============================================================================== --- branches/opensync-ticket1084/opensync/group/opensync_member.c Mon Jun 22 00:18:50 2009 (r5676) +++ branches/opensync-ticket1084/opensync/group/opensync_member.c Mon Jun 22 00:55:33 2009 (r5677) @@ -985,8 +985,7 @@ OSyncCapabilities* osync_member_load_capabilities(OSyncMember *member, OSyncError** error) { - unsigned int size; - char* buffer, *filename; + char *filename; OSyncCapabilities *capabilities; osync_bool res; @@ -994,45 +993,35 @@ osync_assert(member); filename = osync_strdup_printf("%s%ccapabilities.xml", osync_member_get_configdir(member), G_DIR_SEPARATOR); - res = osync_file_read(filename, &buffer, &size, error); + capabilities = osync_capabilities_load(filename, error); osync_free(filename); - - if(!res) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; - } - - capabilities = osync_capabilities_parse(buffer, size, error); - osync_free(buffer); - if(!capabilities) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); - return NULL; - } + + if (!capabilities) + goto error; osync_trace(TRACE_EXIT, "%s: %p", __func__, capabilities); return capabilities; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s" , __func__, osync_error_print(error)); + return NULL; } osync_bool osync_member_save_capabilities(OSyncMember *member, OSyncCapabilities* capabilities, OSyncError** error) { - int size; - char* buffer, *filename; + char *filename; osync_bool res; osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, member, capabilities, error); osync_assert(member); osync_assert(capabilities); - if (!osync_capabilities_assemble(capabilities, &buffer, &size, error)) - goto error; filename = osync_strdup_printf("%s%ccapabilities.xml", osync_member_get_configdir(member), G_DIR_SEPARATOR); - res = osync_file_write(filename, buffer, size, 0600, error); + res = osync_capabilities_save(capabilities, filename, error); osync_free(filename); - osync_free(buffer); if (!res) goto error; - osync_trace(TRACE_EXIT, "%s: %i", __func__, res); return res; Modified: branches/opensync-ticket1084/opensync/version/opensync_version.c ============================================================================== --- branches/opensync-ticket1084/opensync/version/opensync_version.c Mon Jun 22 00:18:50 2009 (r5676) +++ branches/opensync-ticket1084/opensync/version/opensync_version.c Mon Jun 22 00:55:33 2009 (r5677) @@ -470,7 +470,7 @@ { osync_trace(TRACE_INTERNAL, "Found capabilities file by version: %s ", (const char*)osync_version_get_identifier(winner)); - capabilities = osync_capabilities_load((const char*)osync_version_get_identifier(winner), error); + capabilities = osync_capabilities_load_identifier((const char*)osync_version_get_identifier(winner), error); osync_version_unref(winner); if (!capabilities) Modified: branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c ============================================================================== --- branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Mon Jun 22 00:18:50 2009 (r5676) +++ branches/opensync-ticket1084/tests/capabilities-tests/check_capabilities.c Mon Jun 22 00:55:33 2009 (r5677) @@ -49,11 +49,11 @@ START_TEST (capabilities_parse) { char *testbed = setup_testbed("capabilities"); + + char *dummy_caps_file = osync_strdup_printf("%s%cdummy.caps", testbed, G_DIR_SEPARATOR); OSyncCapability *capability; OSyncError *error = NULL; - char* buffer; - unsigned int size; OSyncCapabilities *capabilities = osync_capabilities_new("testformat", &error); fail_unless(capabilities != NULL, NULL); @@ -85,15 +85,13 @@ osync_capability_set_name(capability, "capmock3"); - fail_unless(osync_capabilities_assemble(capabilities, &buffer, &size, &error) != FALSE, NULL); + fail_unless(osync_capabilities_save(capabilities, dummy_caps_file, &error) != FALSE, NULL); fail_unless(error == NULL, NULL); - fail_unless(size > 0, NULL); - fail_unless(buffer != NULL, NULL); osync_capabilities_unref(capabilities); /** Parse */ - capabilities = osync_capabilities_parse(buffer, size, &error); + capabilities = osync_capabilities_load(dummy_caps_file, &error); fail_unless(capabilities != NULL, NULL); fail_unless(error == NULL, NULL); @@ -120,7 +118,7 @@ osync_capabilities_unref(capabilities); - g_free(buffer); + osync_free(dummy_caps_file); destroy_testbed(testbed); } |