You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(56) |
Apr
(109) |
May
(15) |
Jun
(3) |
Jul
(37) |
Aug
(96) |
Sep
(40) |
Oct
(4) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(47) |
Feb
(30) |
Mar
(102) |
Apr
(120) |
May
(68) |
Jun
(54) |
Jul
(53) |
Aug
(122) |
Sep
(190) |
Oct
(71) |
Nov
(85) |
Dec
(108) |
2007 |
Jan
(72) |
Feb
(190) |
Mar
(53) |
Apr
(101) |
May
(145) |
Jun
(148) |
Jul
(167) |
Aug
(143) |
Sep
(23) |
Oct
(198) |
Nov
(223) |
Dec
(195) |
2008 |
Jan
(100) |
Feb
(129) |
Mar
(79) |
Apr
(77) |
May
(34) |
Jun
(95) |
Jul
(112) |
Aug
(160) |
Sep
(82) |
Oct
(124) |
Nov
(199) |
Dec
(355) |
2009 |
Jan
(436) |
Feb
(89) |
Mar
(298) |
Apr
(189) |
May
(33) |
Jun
(88) |
Jul
(105) |
Aug
(44) |
Sep
(181) |
Oct
(87) |
Nov
(75) |
Dec
(1) |
2010 |
Jan
(63) |
Feb
(21) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(26) |
Aug
(37) |
Sep
(26) |
Oct
(15) |
Nov
(13) |
Dec
|
From: <svn...@op...> - 2009-07-01 14:24:08
|
Author: bellmich Date: Wed Jul 1 15:48:22 2009 New Revision: 1139 URL: http://libsyncml.opensync.org/changeset/1139 Log: removed out dated test Modified: trunk/tests/CMakeLists.txt trunk/tests/check_devinf.c Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Wed Jul 1 15:31:13 2009 (r1138) +++ trunk/tests/CMakeLists.txt Wed Jul 1 15:48:22 2009 (r1139) @@ -335,8 +335,6 @@ SML_ADD_TESTCASE( devinf_crash ) SML_ADD_TESTCASE( devinf_result ) ENDIF( ENABLE_HTTP ) - # create matching device info - e.g. take it from a Nokia E65 - # SML_ADD_TESTCASE( devinf_max_size_element ) SML_END_TEST() SML_START_TEST( "Sync" sync check_sync.c ${TEST_TARGET_LIBRARIES} ) Modified: trunk/tests/check_devinf.c ============================================================================== --- trunk/tests/check_devinf.c Wed Jul 1 15:31:13 2009 (r1138) +++ trunk/tests/check_devinf.c Wed Jul 1 15:48:22 2009 (r1139) @@ -24,6 +24,7 @@ #include <libsyncml/objects/sml_auth.h> #include <libsyncml/objects/sml_devinf_obj.h> #include <libsyncml/data_sync_api/sml_location_internals.h> +#include "libsyncml/parser/sml_xml_parse.h" #define NUM_SESSIONS 30 @@ -392,26 +393,5 @@ } END_TEST -// FIXME:Parse a device information with Size and MaxSize as CTCap property. -// -///* SyncML 1.1 uses Size in CTCap Property. -// * SyncML 1.2 uses MaxSize in CTCap Property. -// * The CTCap parser must support both. -// */ -//START_TEST (devinf_max_size_element) -//{ -// SmlError *error = NULL; -// SmlDevInfCTCapType type; -// -// /* SyncML 1.1 */ -// type = _smlParseDevInfCTCapType(SML_ELEMENT_SIZE, &error); -// sml_fail_unless(type == SML_DEVINF_CTCAP_SIZE, NULL); -// -// /* SyncML 1.1 and 1.2 */ -// type = _smlParseDevInfCTCapType(SML_ELEMENT_MAXSIZE, &error); -// sml_fail_unless(type == SML_DEVINF_CTCAP_MAXSIZE, NULL); -//} -//END_TEST - @SML_TESTCASE_CODE@ |
From: <svn...@op...> - 2009-07-01 14:10:00
|
Author: bellmich Date: Wed Jul 1 15:31:13 2009 New Revision: 1138 URL: http://libsyncml.opensync.org/changeset/1138 Log: migrated SmlLocation to GObject style Added: trunk/libsyncml/data_sync_api/sml_location.c trunk/libsyncml/data_sync_api/sml_location.h trunk/libsyncml/data_sync_api/sml_location_internals.h trunk/tests/check_data_sync_api_location.c - copied, changed from r1137, trunk/tests/check_elements.c Deleted: trunk/tests/check_elements.c Modified: trunk/libsyncml/CMakeLists.txt trunk/libsyncml/data_sync_api/data_sync_callbacks.c trunk/libsyncml/data_sync_api/data_sync_client.c trunk/libsyncml/data_sync_api/data_sync_devinf.c trunk/libsyncml/data_sync_api/data_sync_server.c trunk/libsyncml/data_sync_api/transport_http_client.c trunk/libsyncml/objects/sml_auth.c trunk/libsyncml/objects/sml_devinf_obj.c trunk/libsyncml/objects/sml_ds_server.c trunk/libsyncml/parser/sml_xml_assm.c trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_command.c trunk/libsyncml/sml_elements.c trunk/libsyncml/sml_elements.h trunk/libsyncml/sml_elements_internals.h trunk/libsyncml/sml_error_internals.h trunk/libsyncml/sml_manager.c trunk/libsyncml/sml_notification.c trunk/libsyncml/sml_parse.c trunk/libsyncml/sml_session.c trunk/libsyncml/syncml.h trunk/tests/CMakeLists.txt trunk/tests/check_devinf.c trunk/tests/check_ds.c trunk/tests/check_manager.c trunk/tests/check_session.c trunk/tests/check_sync.c trunk/tests/check_wbxml_assembler.c trunk/tests/check_xml_assembler.c trunk/tests/support.c Modified: trunk/libsyncml/CMakeLists.txt ============================================================================== --- trunk/libsyncml/CMakeLists.txt Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/CMakeLists.txt Wed Jul 1 15:31:13 2009 (r1138) @@ -23,6 +23,7 @@ data_sync_api/data_sync_loop.c data_sync_api/data_sync_client.c data_sync_api/data_sync_server.c + data_sync_api/sml_location.c data_sync_api/transport_http_client.c data_sync_api/transport_http_server.c data_sync_api/transport_obex_client.c @@ -89,6 +90,7 @@ ## install header files of data sync API INSTALL( FILES + data_sync_api/sml_location.h data_sync_api/defines.h data_sync_api/standard.h data_sync_api/callbacks.h Modified: trunk/libsyncml/data_sync_api/data_sync_callbacks.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_callbacks.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/data_sync_api/data_sync_callbacks.c Wed Jul 1 15:31:13 2009 (r1138) @@ -643,7 +643,7 @@ SmlLocation *newuid, void *userdata) { - smlTrace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, dsession, VA_STRING(smlLocationGetURI(orig)), VA_STRING(smlLocationGetURI(newuid)), userdata); + smlTrace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, dsession, VA_STRING(sml_location_get_uri(orig)), VA_STRING(sml_location_get_uri(newuid)), userdata); SmlError *error = NULL; SmlDataSyncDatastore *datastore = userdata; @@ -655,8 +655,8 @@ /* perform callback */ if (!datastore->dsObject->mappingCallback( datastore->dsObject, datastore->sourceUri, - smlLocationGetURI(orig), - smlLocationGetURI(newuid), + sml_location_get_uri(orig), + sml_location_get_uri(newuid), datastore->dsObject->mappingUserdata, &error)) goto error; Modified: trunk/libsyncml/data_sync_api/data_sync_client.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_client.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/data_sync_api/data_sync_client.c Wed Jul 1 15:31:13 2009 (r1138) @@ -39,6 +39,7 @@ SmlDataSyncObject *dsObject = datastore->dsObject; SmlBool ret = TRUE; SmlError *error = NULL; + GError *gerror = NULL; /* libsyncml only supports SML_ALERT_TWO_WAY and SML_ALERT_SLOW_SYNC * but some old phones reply on a SAN alert 206 with a slow sync 201 @@ -118,9 +119,15 @@ } else { /* send alert 201 */ SmlLocation *source = NULL; - source = smlLocationNew(datastore->sourceUri, NULL, &error); - if (!source) + source = sml_location_new(); + if (!source) { + g_set_error(&gerror, SML_ERROR, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); goto error; + } + if (!sml_location_set_uri(source, datastore->sourceUri, &gerror)) { + g_object_unref(source); + goto error; + } SmlCommand *alert = NULL; alert = smlCommandNewAlert( SML_ALERT_SLOW_SYNC, @@ -129,10 +136,10 @@ NULL, datastore->localNext, NULL, &error); if (!alert) { - smlLocationUnref(source); + g_object_unref(source); goto error; } - smlLocationUnref(source); + g_object_unref(source); if (!smlSessionSendCommand(dsObject->session, alert, NULL, NULL, NULL, &error)) { smlCommandUnref(alert); goto error; @@ -150,6 +157,10 @@ smlTrace(TRACE_EXIT, "%s: %i", __func__, ret); return ret; error: + if (gerror) { + smlErrorSet(&error, gerror->code, "%s", gerror->message); + g_error_free(gerror); + } smlErrorRef(&error); smlDataSyncSendEvent( dsObject, SML_DATA_SYNC_EVENT_ERROR, @@ -304,6 +315,8 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, dsObject, error); CHECK_ERROR_REF + GError *gerror = NULL; + /* The manager responsible for handling the other objects */ dsObject->manager = smlManagerNew(dsObject->tsp, error); if (!dsObject->manager) @@ -326,12 +339,16 @@ smlTrace(TRACE_INTERNAL, "preparing DsServer (datastore) %s", datastore->sourceUri); /* We now create the ds server at the given location. */ - SmlLocation *loc = smlLocationNew(datastore->sourceUri, NULL, error); - if (!loc) + SmlLocation *loc = sml_location_new(); + if (!loc) { + g_set_error(&gerror, SML_ERROR, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); + goto error; + } + if (!sml_location_set_uri(loc, datastore->sourceUri, &gerror)) goto error; datastore->server = smlDsClientNew(datastore->contentType, loc, loc, error); - smlLocationUnref(loc); + g_object_unref(loc); if (!datastore->server) goto error; @@ -368,6 +385,10 @@ return TRUE; error: + if (gerror) { + smlErrorSet(error, gerror->code, "%s", gerror->message); + g_error_free(gerror); + } smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); return FALSE; } Modified: trunk/libsyncml/data_sync_api/data_sync_devinf.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_devinf.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/data_sync_api/data_sync_devinf.c Wed Jul 1 15:31:13 2009 (r1138) @@ -685,7 +685,7 @@ smlTrace(TRACE_INTERNAL, "%s: calling read DevInf callback", __func__); SmlDevInf *devinf = dsObject->readDevInfCallback( dsObject, - smlLocationGetURI(smlSessionGetTarget(dsObject->session)), + sml_location_get_uri(smlSessionGetTarget(dsObject->session)), dsObject->readDevInfUserdata, error); if (!devinf && *error) goto error; Modified: trunk/libsyncml/data_sync_api/data_sync_server.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_server.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/data_sync_api/data_sync_server.c Wed Jul 1 15:31:13 2009 (r1138) @@ -212,6 +212,8 @@ SmlBool smlDataSyncServerInit(SmlDataSyncObject *dsObject, SmlError **error) { CHECK_ERROR_REF + GError *gerror = NULL; + /* The manager responsible for handling the other objects */ dsObject->manager = smlManagerNew(dsObject->tsp, error); if (!dsObject->manager) @@ -247,16 +249,20 @@ SmlDataSyncDatastore *datastore = o->data; /* We now create the ds server hat the given location */ - SmlLocation *loc = smlLocationNew(datastore->sourceUri, NULL, error); - if (!loc) + SmlLocation *loc = sml_location_new(); + if (!loc) { + g_set_error(&gerror, SML_ERROR, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); + goto error; + } + if (!sml_location_set_uri(loc, datastore->sourceUri, &gerror)) goto error; datastore->server = smlDsServerNew(datastore->contentType, loc, error); if (!datastore->server) { - smlLocationUnref(loc); + g_object_unref(loc); goto error; } - smlLocationUnref(loc); + g_object_unref(loc); if (!smlDsServerRegister(datastore->server, dsObject->manager, error)) goto error; @@ -283,6 +289,10 @@ return TRUE; error: + if (gerror) { + smlErrorSet(error, gerror->code, "%s", gerror->message); + g_error_free(gerror); + } smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); return FALSE; } Added: trunk/libsyncml/data_sync_api/sml_location.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_location.c Wed Jul 1 15:31:13 2009 (r1138) @@ -0,0 +1,541 @@ +/* sml_location.c + * + * Copyright (C) 2009 Michael Bell <mic...@op...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#include "sml_location.h" +#include <libsyncml/syncml.h> +#include "../sml_error_internals.h" + +G_DEFINE_TYPE (SmlLocation, sml_location, G_TYPE_OBJECT) + +enum +{ + PROP_0, + PROP_URI, + PROP_NAME, + PROP_PARENT_URI +}; + +struct _SmlLocationPrivate +{ + gchar* uri; + gchar* name; + gchar* parent_uri; + gchar* full_uri; +}; + +static void +sml_location_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + switch (property_id) { + case PROP_URI: + g_value_set_string (value, SML_LOCATION (object)->priv->uri); + break; + case PROP_NAME: + g_value_set_string (value, SML_LOCATION (object)->priv->name); + break; + case PROP_PARENT_URI: + g_value_set_string (value, SML_LOCATION (object)->priv->parent_uri); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +sml_location_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (property_id) { + case PROP_URI: + g_free (SML_LOCATION (object)->priv->uri); + SML_LOCATION (object)->priv->uri = g_strdup (g_value_get_string (value)); + break; + case PROP_NAME: + g_free (SML_LOCATION (object)->priv->name); + SML_LOCATION (object)->priv->name = g_strdup (g_value_get_string (value)); + break; + case PROP_PARENT_URI: + g_free (SML_LOCATION (object)->priv->parent_uri); + SML_LOCATION (object)->priv->parent_uri = g_strdup (g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +sml_location_finalize (GObject *object) +{ + SmlLocation *self = SML_LOCATION (object); + g_free(self->priv->uri); + g_free(self->priv->name); + g_free(self->priv->parent_uri); + g_free(self->priv->full_uri); + /* all pointers must be NULL */ + self->priv->uri = NULL; + self->priv->name = NULL; + self->priv->parent_uri = NULL; + self->priv->full_uri = NULL; + G_OBJECT_CLASS (sml_location_parent_class)->finalize (object); +} + +static void +sml_location_class_init (SmlLocationClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (SmlLocationPrivate)); + + object_class->get_property = sml_location_get_property; + object_class->set_property = sml_location_set_property; + object_class->finalize = sml_location_finalize; + + /** + * SmlLocation:uri: + * + * The URI property. + */ + g_object_class_install_property (object_class, + PROP_URI, + g_param_spec_string ("URI", + "URI", + "URI", + NULL, + G_PARAM_READWRITE)); + /** + * SmlLocation:name: + * + * The name property. + */ + g_object_class_install_property (object_class, + PROP_NAME, + g_param_spec_string ("name", + "name", + "name", + NULL, + G_PARAM_READWRITE)); + /** + * SmlLocation:parent_uri: + * + * The The URI of the parent property. + */ + g_object_class_install_property (object_class, + PROP_PARENT_URI, + g_param_spec_string ("parentURI", + "parentURI", + "The URI of the parent", + NULL, + G_PARAM_READWRITE)); + +} + +static void +sml_location_init (SmlLocation *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + SML_TYPE_LOCATION, + SmlLocationPrivate); +} + +/** + * sml_location_new: + * + * Creates a new instance of #SmlLocation. + * + * Return value: the newly created #SmlLocation instance + */ +SmlLocation* +sml_location_new (void) +{ + return g_object_new (SML_TYPE_LOCATION, NULL); +} + +/** + * sml_location_new_with_options: + * + * Creates a new instance of #SmlLocation. + * + * Return value: the newly created #SmlLocation instance + */ +SmlLocation* +sml_location_new_with_options (const gchar* uid, + const gchar* name, + GError **error) +{ + CHECK_ERROR_REF + + SmlLocation *loc = sml_location_new(); + sml_return_val_error_if_fail (SML_IS_LOCATION (loc), NULL, error, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); + + if (!sml_location_set_uri(loc, uid, error)) { + g_object_unref(loc); + return NULL; + } + + if (!sml_location_set_name(loc, name, error)) { + g_object_unref(loc); + return NULL; + } + + return loc; +} + +/** + * sml_location_get_uri: + * @self: A #SmlLocation + * + * Gets the URI property. + * + * Return value: + */ +G_CONST_RETURN gchar* +sml_location_get_uri (SmlLocation *self) +{ + g_return_val_if_fail (SML_IS_LOCATION (self), NULL); + return self->priv->uri; +} + +/** + * sml_location_set_uri: + * @self: A #SmlLocation + * @uri: + * + * Sets the URI property. + */ +gboolean +sml_location_set_uri (SmlLocation *self, + const gchar* uri, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlLocation object."); + + /* normalize the URI */ + if (uri && strlen(uri) == 0) + uri = NULL; + + g_free (self->priv->uri); + self->priv->uri = g_strdup (uri); + sml_return_val_error_if_fail (!uri || self->priv->uri, FALSE, error, SML_ERROR_GENERIC, "Cannot copy the URI - out of memory."); + + return TRUE; +} + +/** + * sml_location_get_name: + * @self: A #SmlLocation + * + * Gets the name property. + * + * Return value: + */ +G_CONST_RETURN gchar* +sml_location_get_name (SmlLocation *self) +{ + g_return_val_if_fail (SML_IS_LOCATION (self), NULL); + return self->priv->name; +} + +/** + * sml_location_set_name: + * @self: A #SmlLocation + * @name: + * + * Sets the name property. + */ +gboolean +sml_location_set_name (SmlLocation *self, + const gchar* name, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlLocation object."); + + /* normalize the name */ + if (name && strlen(name) == 0) + name = NULL; + + g_free (self->priv->name); + self->priv->name = g_strdup (name); + sml_return_val_error_if_fail (!name || self->priv->name, FALSE, error, SML_ERROR_GENERIC, "Cannot copy the name - out of memory."); + + return TRUE; +} + +/** + * sml_location_get_parent_uri: + * @self: A #SmlLocation + * + * Gets the parentURI property. + * + * Return value: + */ +G_CONST_RETURN gchar* +sml_location_get_parent_uri (SmlLocation *self) +{ + g_return_val_if_fail (SML_IS_LOCATION (self), NULL); + return self->priv->parent_uri; +} + +/** + * sml_location_set_parent_uri: + * @self: A #SmlLocation + * @parent_uri: + * + * Sets the parentURI property. + */ +gboolean +sml_location_set_parent_uri (SmlLocation *self, + const gchar* parent_uri, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlLocation object."); + + /* normalize the parent URI */ + if (parent_uri && strlen(parent_uri) == 0) + parent_uri = NULL; + + g_free (self->priv->parent_uri); + self->priv->parent_uri = g_strdup (parent_uri); + sml_return_val_error_if_fail (!parent_uri || self->priv->parent_uri, FALSE, error, SML_ERROR_GENERIC, "Cannot copy the parent URI - out of memory."); + + return TRUE; +} + +/** + * sml_location_clone: + * @self: A #SmlLocation + * + * + */ +SmlLocation* +sml_location_clone (SmlLocation *self, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlLocation object."); + + SmlLocation *loc = sml_location_new(); + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); + if (self->priv->uri && !sml_location_set_uri(loc, self->priv->uri, error)) { + g_object_unref(loc); + return NULL; + } + if (self->priv->name && !sml_location_set_name(loc, self->priv->name, error)) { + g_object_unref(loc); + return NULL; + } + if (self->priv->parent_uri && !sml_location_set_parent_uri(loc, self->priv->parent_uri, error)) { + g_object_unref(loc); + return NULL; + } + return loc; +} + +/** + * + * This function replaces all occurences of @needle with @replacement. + * Actually we must still support glib 2.12. Therefore we cannot use + * GRegex. + * + */ +static gchar* +_sml_location_strreplace (const gchar *input, + const gchar *needle, + const gchar *replacement, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (input, NULL, error, SML_ERROR_GENERIC, "There must be an input string."); + sml_return_val_error_if_fail (strlen(input) > 0, NULL, error, SML_ERROR_GENERIC, "The input string cannot be an empty string."); + sml_return_val_error_if_fail (needle, NULL, error, SML_ERROR_GENERIC, "There must be a needle string."); + sml_return_val_error_if_fail (strlen(needle) > 0, NULL, error, SML_ERROR_GENERIC, "The needle string cannot be an empty string."); + + /* normalize the replacement string */ + if (replacement != NULL && strlen(replacement) == 0) + replacement = NULL; + + gchar *output = g_strdup(input); + sml_return_val_error_if_fail (output, NULL, error, SML_ERROR_GENERIC, "Cannot duplicate input string - out of memory."); + + /* loop until there is no needle */ + while (g_strrstr(output, needle)) { + + /* copy the string until the position of the needle */ + gchar *prefix = g_strndup(output, g_strrstr(output, needle) - output); + sml_return_val_error_if_fail (prefix, NULL, error, SML_ERROR_GENERIC, "Cannot copy string before the needle - out of memory."); + + /* concatenate prefix of needle, replacement and suffix of needle */ + gchar *buffer2 = g_strconcat(prefix, replacement ? replacement : "", g_strrstr(output, needle) + strlen(needle), NULL); + sml_return_val_error_if_fail (buffer2, NULL, error, SML_ERROR_GENERIC, "Cannot create new string with replacement - out of memory."); + + /* cleanup */ + g_free(prefix); + g_free(output); + output = buffer2; + } + + return output; +} + +static gchar* +_sml_location_get_normalized_uri (const gchar *uri, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (uri, NULL, error, SML_ERROR_GENERIC, "There must be an URI."); + sml_return_val_error_if_fail (strlen(uri) > 0, NULL, error, SML_ERROR_GENERIC, "The URI cannot be an empty string."); + + /* remove ./ (e.g. "./Contacts" will be "Contacts") */ + gchar *buffer = _sml_location_strreplace(uri, "./", "", error); + if (!buffer) + return NULL; + + /* replace // from Windows-like systems (e.g. "//Contacts" will be "/Contacts") */ + gchar *buffer2 = _sml_location_strreplace(buffer, "//", "/", error); + if (!buffer2) + return NULL; + + /* cleanup */ + g_free(buffer); + buffer = NULL; + + /* remove a trailing slash "/" (e.g. "Contacts/" will be "Contacts") + * Don't do this if the URI is "/" which has a special meaning. + */ + if (strlen(buffer2) > 1 && buffer2[strlen(buffer2) - 1] == '/') + buffer2[strlen(buffer2) - 1] = 0; + + return buffer2; +} + +/** + * sml_location_get_full_uri: + * @self: A #SmlLocation + * + * Gets the name property. + * + * Return value: + */ +G_CONST_RETURN gchar* +sml_location_get_full_uri (SmlLocation *self, + GError **error) +{ + CHECK_ERROR_REF + sml_return_val_error_if_fail (SML_IS_LOCATION (self), FALSE, error, SML_ERROR_GENERIC, "There must be a SmlLocation object."); + + /* cleanup cache */ + if (self->priv->full_uri) { + g_free(self->priv->full_uri); + self->priv->full_uri = NULL; + } + + /* normalize URI */ + gchar *path = NULL; + if (self->priv->uri) { + path = _sml_location_get_normalized_uri(self->priv->uri, error); + if (!path) + return NULL; + } + + /* add parent (e.g. TargetRef or SourceRef from hierarchical sync) */ + if (self->priv->parent_uri) { + + /* normalize parent */ + gchar *parent_uri = _sml_location_get_normalized_uri(self->priv->parent_uri, error); + if (!parent_uri) { + g_free(path); + return NULL; + } + + /* ensure absolute URI */ + if (path && !g_path_is_absolute(path)) { + gchar *absolute = g_strconcat("/", path, NULL); + g_free(path); + path = absolute; + if (!path) + g_free(parent_uri); + sml_return_val_error_if_fail (path, NULL, error, SML_ERROR_GENERIC, "Cannot add '/' as prefix - out of memory."); + } + + /* prepend the parent */ + gchar *parent = g_strconcat(parent_uri, path, NULL); + g_free(path); + g_free(parent_uri); + path = parent; + sml_return_val_error_if_fail (path, NULL, error, SML_ERROR_GENERIC, "Cannot add parent as prefix - out of memory."); + } + + /* cache the result */ + self->priv->full_uri = _sml_location_get_normalized_uri(path, error); + g_free(path); + + return self->priv->full_uri; +} + +/** + * sml_location_is_equal: + * @self: A #SmlLocation + * + * + */ +gboolean +sml_location_is_equal (SmlLocation *self, + SmlLocation *loc) +{ + g_return_val_if_fail (SML_IS_LOCATION (self), FALSE); + + GError *error = NULL; + gboolean ret = FALSE; + + if (!loc) + return FALSE; + + /* normalization */ + + const char *loc_path = sml_location_get_full_uri(loc, &error); + if (!loc_path) { + g_warning("%s", error->message); + g_error_free(error); + return FALSE; + } + + const char *self_path = sml_location_get_full_uri(self, &error); + if (!self_path) { + g_warning("%s", error->message); + g_error_free(error); + return FALSE; + } + + /* comparison */ + + if (strcmp(self_path, loc_path) != 0) + ret = FALSE; + else + ret = TRUE; + + return ret; +} Added: trunk/libsyncml/data_sync_api/sml_location.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_location.h Wed Jul 1 15:31:13 2009 (r1138) @@ -0,0 +1,67 @@ +/* sml_location.h + * + * Copyright (C) 2009 Michael Bell <mic...@op...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#ifndef __SML_LOCATION_H__ +#define __SML_LOCATION_H__ + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define SML_TYPE_LOCATION (sml_location_get_type()) +#define SML_LOCATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SML_TYPE_LOCATION, SmlLocation)) +#define SML_LOCATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SML_TYPE_LOCATION, SmlLocationClass)) +#define SML_IS_LOCATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SML_TYPE_LOCATION)) +#define SML_IS_LOCATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SML_TYPE_LOCATION)) +#define SML_LOCATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SML_TYPE_LOCATION, SmlLocationClass)) + +typedef struct _SmlLocation SmlLocation; +typedef struct _SmlLocationClass SmlLocationClass; +typedef struct _SmlLocationPrivate SmlLocationPrivate; + +struct _SmlLocation +{ + GObject parent; + + /*< private >*/ + SmlLocationPrivate *priv; +}; + +struct _SmlLocationClass +{ + GObjectClass parent_class; + +}; + +GType sml_location_get_type (void); +SmlLocation* sml_location_new (void); +G_CONST_RETURN gchar* sml_location_get_uri (SmlLocation *self); +gboolean sml_location_set_uri (SmlLocation *self, const gchar* uri, GError **error); +G_CONST_RETURN gchar* sml_location_get_name (SmlLocation *self); +gboolean sml_location_set_name (SmlLocation *self, const gchar* name, GError **error); +G_CONST_RETURN gchar* sml_location_get_parent_uri (SmlLocation *self); +gboolean sml_location_set_parent_uri (SmlLocation *self, const gchar* parent_uri, GError **error); +SmlLocation* sml_location_clone (SmlLocation *self, GError **error); +gboolean sml_location_is_equal (SmlLocation *self, SmlLocation *loc); +G_CONST_RETURN gchar* sml_location_get_full_uri (SmlLocation *self, GError **error); + +G_END_DECLS + +#endif /* __SML_LOCATION_H__ */ Added: trunk/libsyncml/data_sync_api/sml_location_internals.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/libsyncml/data_sync_api/sml_location_internals.h Wed Jul 1 15:31:13 2009 (r1138) @@ -0,0 +1,33 @@ +/* sml_location_internals.h + * + * Copyright (C) 2009 Michael Bell <mic...@op...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#ifndef __SML_LOCATION_INTERNALS_H__ +#define __SML_LOCATION_INTERNALS_H__ + +#include "sml_location.h" +#include "../sml_error_internals.h" + +G_BEGIN_DECLS + +SmlLocation* sml_location_new_with_options (const gchar* uid, const gchar* name, GError **error); + +G_END_DECLS + +#endif /* __SML_LOCATION_INTERNALS_H__ */ Modified: trunk/libsyncml/data_sync_api/transport_http_client.c ============================================================================== --- trunk/libsyncml/data_sync_api/transport_http_client.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/data_sync_api/transport_http_client.c Wed Jul 1 15:31:13 2009 (r1138) @@ -68,6 +68,7 @@ smlAssert(dsObject->manager); smlAssert(dsObject->agent); + GError *gerror = NULL; SmlLocation *target = NULL; SmlLocation *source = NULL; @@ -83,12 +84,21 @@ /* create session */ - target = smlLocationNew(dsObject->target, NULL, error); - if (!target) + target = sml_location_new(); + if (!target) { + g_set_error(&gerror, SML_ERROR, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); goto error; - source = smlLocationNew(dsObject->identifier, NULL, error); - if (!source) + } + if (!sml_location_set_uri(target, dsObject->target, &gerror)) + g_object_unref(target); + + source = sml_location_new(); + if (!source) { + g_set_error(&gerror, SML_ERROR, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); goto error; + } + if (!sml_location_set_uri(source, dsObject->identifier, &gerror)) + g_object_unref(source); char *sessionString = smlManagerGetNewSessionID(dsObject->manager); dsObject->session = smlSessionNew(SML_SESSION_TYPE_CLIENT, @@ -101,9 +111,9 @@ if (!dsObject->session) goto error; - smlLocationUnref(target); + g_object_unref(target); target = NULL; - smlLocationUnref(source); + g_object_unref(source); source = NULL; /* register all the add-ons */ @@ -116,13 +126,17 @@ return TRUE; error: if (target) { - smlLocationUnref(target); + g_object_unref(target); target = NULL; } if (source) { - smlLocationUnref(source); + g_object_unref(source); source = NULL; } + if (gerror) { + smlErrorSet(error, gerror->code, "%s", gerror->message); + g_error_free(gerror); + } smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); return FALSE; } Modified: trunk/libsyncml/objects/sml_auth.c ============================================================================== --- trunk/libsyncml/objects/sml_auth.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/objects/sml_auth.c Wed Jul 1 15:31:13 2009 (r1138) @@ -107,14 +107,14 @@ * LocName(username) */ if (auth->verifyCallback(session->chal, cred, - smlLocationGetName(session->source), + sml_location_get_name(session->source), auth->verifyCallbackUserdata, &error)) { auth->state = SML_AUTH_ACCEPTED; } else { smlErrorSet(&error, SML_ERROR_AUTH_REJECTED, "Auth rejected for username %s", - smlLocationGetName(session->source)); + sml_location_get_name(session->source)); smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); smlErrorDeref(&error); auth->state = SML_ERROR_AUTH_REJECTED; @@ -401,7 +401,7 @@ // of the remote peer // we have to revert source and target smlTrace(TRACE_INTERNAL, "%s: SourceRef: %s --> TargetRef: %s", - __func__, VA_STRING(session->target->locURI), VA_STRING(session->source->locURI)); + __func__, VA_STRING(sml_location_get_uri(session->target)), VA_STRING(sml_location_get_uri(session->source))); SmlStatus *reply = smlStatusNew(code, 0, session->lastReceivedMessageID, session->target, session->source, SML_COMMAND_TYPE_HEADER, error); if (!reply) goto error; Modified: trunk/libsyncml/objects/sml_devinf_obj.c ============================================================================== --- trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/objects/sml_devinf_obj.c Wed Jul 1 15:31:13 2009 (r1138) @@ -29,6 +29,7 @@ #include <libsyncml/sml_command_internals.h> #include "libsyncml/sml_error_internals.h" #include "libsyncml/parser/sml_xml_parse.h" +#include "libsyncml/data_sync_api/sml_location_internals.h" #ifdef WIN32 #include <windef.h> @@ -600,11 +601,21 @@ smlAssert(agent); smlAssert(manager); - SmlLocation *devinf12 = smlLocationNew("./devinf12", NULL, error); - SmlLocation *devinf11 = smlLocationNew("./devinf11", NULL, error); - SmlLocation *devinf10 = smlLocationNew("./devinf10", NULL, error); + GError *gerror = NULL; + SmlLocation *devinf10 = NULL; + SmlLocation *devinf11 = NULL; + SmlLocation *devinf12 = NULL; + + devinf12 = sml_location_new_with_options("./devinf12", NULL, &gerror); + if (!devinf12) + goto error; + + devinf11 = sml_location_new_with_options("./devinf11", NULL, &gerror); + if (!devinf12) + goto error; - if (!devinf12 || !devinf11 || !devinf10) + devinf10 = sml_location_new_with_options("./devinf10", NULL, &gerror); + if (!devinf12) goto error; /* PUT callbacks @@ -633,17 +644,17 @@ manager, SML_COMMAND_TYPE_PUT, session, NULL, devinf10, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_PUT, session, NULL, devinf11, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_PUT, session, NULL, devinf12, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; /* GET callbacks * @@ -670,17 +681,17 @@ manager, SML_COMMAND_TYPE_GET, session, devinf10, NULL, NULL, _request_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_GET, session, devinf11, NULL, NULL, _request_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_GET, session, devinf12, NULL, NULL, _request_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; /* RESULTS callbacks * @@ -703,33 +714,33 @@ manager, SML_COMMAND_TYPE_RESULTS, session, devinf10, NULL, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_RESULTS, session, devinf11, NULL, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; if (!smlManagerObjectRegister( manager, SML_COMMAND_TYPE_RESULTS, session, devinf12, NULL, NULL, _recv_devinf, NULL, agent, error)) - goto error_free_loc; + goto error; - smlLocationUnref(devinf10); - smlLocationUnref(devinf11); - smlLocationUnref(devinf12); + g_object_unref(devinf10); + g_object_unref(devinf11); + g_object_unref(devinf12); smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; -error_free_loc: +error: if (devinf10) - smlLocationUnref(devinf10); + g_object_unref(devinf10); if (devinf11) - smlLocationUnref(devinf11); + g_object_unref(devinf11); if (devinf12) - smlLocationUnref(devinf12); -error: + g_object_unref(devinf12); + GERROR_TO_SML_ERROR(gerror,error) smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); return FALSE; } Modified: trunk/libsyncml/objects/sml_ds_server.c ============================================================================== --- trunk/libsyncml/objects/sml_ds_server.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/objects/sml_ds_server.c Wed Jul 1 15:31:13 2009 (r1138) @@ -200,7 +200,7 @@ goto error; server->location = location; - smlLocationRef(location); + g_object_ref(location); server->contenttype = g_strdup(type); server->servertype = SML_DS_SERVER; @@ -225,10 +225,10 @@ goto error; server->location = location; - smlLocationRef(location); + g_object_ref(location); server->target = target; - smlLocationRef(target); + g_object_ref(target); server->contenttype = g_strdup(type); server->servertype = SML_DS_CLIENT; @@ -253,10 +253,10 @@ smlAssert(server); if (server->location) - smlLocationUnref(server->location); + g_object_unref(server->location); if (server->target) - smlLocationUnref(server->target); + g_object_unref(server->target); if (server->contenttype) smlSafeCFree(&(server->contenttype)); @@ -315,7 +315,7 @@ { smlAssert(server); if (server->location) - return server->location->locURI; + return sml_location_get_uri(server->location); return NULL; } @@ -332,7 +332,7 @@ smlAssert(san); CHECK_ERROR_REF - if (!smlNotificationNewAlert(san, SML_ALERT_TWO_WAY_BY_SERVER, server->contenttype, smlLocationGetURI(server->location), error)) + if (!smlNotificationNewAlert(san, SML_ALERT_TWO_WAY_BY_SERVER, server->contenttype, sml_location_get_uri(server->location), error)) goto error; smlTrace(TRACE_EXIT, "%s", __func__); @@ -422,11 +422,11 @@ if (server->servertype == SML_DS_CLIENT) { dsession->target = server->target; - smlLocationRef(dsession->target); + g_object_ref(dsession->target); } dsession->location = server->location; - smlLocationRef(dsession->location); + g_object_ref(dsession->location); dsession->pendingMapsLock = g_mutex_new(); @@ -458,10 +458,10 @@ smlTrace(TRACE_INTERNAL, "%s: Refcount == 0!", __func__); if (dsession->target) - smlLocationUnref(dsession->target); + g_object_unref(dsession->target); if (dsession->location) - smlLocationUnref(dsession->location); + g_object_unref(dsession->location); if (dsession->alertCommand) smlCommandUnref(dsession->alertCommand); @@ -652,7 +652,12 @@ if (!smlItemStealData(item, &data, &size, &error)) goto error; - if (!dsession->changesCallback(dsession, cmd->private.change.type, item->target ? item->target->locURI : item->source->locURI, data, size, item->contenttype, dsession->changesCallbackUserdata, &error)) + if (!dsession->changesCallback(dsession, + cmd->private.change.type, + item->target ? sml_location_get_uri(item->target) : sml_location_get_uri(item->source), + data, size, + item->contenttype, + dsession->changesCallbackUserdata, &error)) goto error; } @@ -744,7 +749,7 @@ return; } - if (!smlLocationCompare(NULL, dsession->location, NULL, cmd->target)) { + if (!sml_location_is_equal(dsession->location, cmd->target)) { SmlStatus *reply = smlCommandNewReply(cmd, SML_ERROR_NOT_FOUND, &error); if (!reply) goto error; @@ -764,7 +769,7 @@ if (!dsession->target) { dsession->target = cmd->source; - smlLocationRef(cmd->source); + g_object_ref(cmd->source); } dsession->alertCommand = cmd; @@ -907,15 +912,15 @@ item->source, dsession->recvMappingCallbackUserdata); } else { - SmlWriteContext *ctx = _write_context_find(dsession, item->target->locURI, SML_CHANGE_ADD); + SmlWriteContext *ctx = _write_context_find(dsession, sml_location_get_uri(item->target), SML_CHANGE_ADD); if (ctx) { - ctx->newuid = g_strdup(item->source->locURI); + ctx->newuid = g_strdup(sml_location_get_uri(item->source)); _write_context_dispatch(dsession, ctx); } else { smlTrace(TRACE_ERROR, "%s: Unknown map ... %s => %s", __func__, - VA_STRING(item->target->locURI), - VA_STRING(item->source->locURI)); + VA_STRING(sml_location_get_uri(item->target)), + VA_STRING(sml_location_get_uri(item->source))); } } } @@ -1305,9 +1310,9 @@ session->sessionType = SML_SESSION_TYPE_CLIENT; /* fix target */ - smlLocationUnref(server->target); + g_object_unref(server->target); server->target = cmd->source; - smlLocationRef(server->target); + g_object_ref(server->target); /* handle the SAN */ if (server->sanSessionCallback) { Modified: trunk/libsyncml/parser/sml_xml_assm.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_assm.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/parser/sml_xml_assm.c Wed Jul 1 15:31:13 2009 (r1138) @@ -245,16 +245,16 @@ goto error; } - if (!location->locURI) { + if (!sml_location_get_uri(location)) { smlErrorSet(error, SML_ERROR_GENERIC, "No locURI set"); goto error; } - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_LOCURI, location->locURI, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_LOCURI, sml_location_get_uri(location), error)) goto error; - if (location->locName) { - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_LOCNAME, location->locName, error)) + if (sml_location_get_name(location)) { + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_LOCNAME, sml_location_get_name(location), error)) goto error; } @@ -573,25 +573,25 @@ sessionType == SML_SESSION_TYPE_SERVER) { /* only Target must be set */ if (item->target) - smlLocationUnref(item->target); + g_object_unref(item->target); item->target = item->source; item->source = NULL; } else { /* only Source must be set */ if (item->target) - smlLocationUnref(item->target); + g_object_unref(item->target); item->target = NULL; } } else { if (sessionType == SML_SESSION_TYPE_SERVER) { /* Target must be set */ if (item->source) - smlLocationUnref(item->source); + g_object_unref(item->source); item->source = NULL; } else { /* only Source must be set */ if (item->target) - smlLocationUnref(item->target); + g_object_unref(item->target); item->target = NULL; } } @@ -852,13 +852,13 @@ /* TargetRef */ if (cmd->private.results.status->targetRef) { - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_TARGETREF, cmd->private.results.status->targetRef->locURI, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_TARGETREF, sml_location_get_uri(cmd->private.results.status->targetRef), error)) goto error; } /* SourceRef */ if (cmd->private.results.status->sourceRef) { - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_SOURCEREF, cmd->private.results.status->sourceRef->locURI, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_SOURCEREF, sml_location_get_uri(cmd->private.results.status->sourceRef), error)) goto error; } @@ -1413,13 +1413,13 @@ /* TargetRef */ if (status->targetRef) { - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_TARGETREF, status->targetRef->locURI, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_TARGETREF, sml_location_get_uri(status->targetRef), error)) goto error; } /* SourceRef */ if (status->sourceRef) { - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_SOURCEREF, status->sourceRef->locURI, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_SOURCEREF, sml_location_get_uri(status->sourceRef), error)) goto error; } Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 16:06:44 2009 (r1137) +++ trunk/libsyncml/parser/sml_xml_parse.c Wed Jul 1 15:31:13 2009 (r1138) @@ -26,6 +26,7 @@ #include <libsyncml/sml_command_internals.h> #include <libsyncml/sml_session_internals.h> #include "libsyncml/sml_error_internals.h" +#include "libsyncml/data_sync_api/sml_location_internals.h" #include "sml_xml_parse.h" #include "sml_xml_parse_internals.h" @@ -372,6 +373,7 @@ CHECK_ERROR_REF smlAssert(parser); smlAssert(location); + GError *gerror = NULL; if (*location) { smlErrorSet(error, SML_ERROR_GENERIC, "Location already set"); @@ -379,15 +381,16 @@ return FALSE; } - *location = smlTryMalloc0(sizeof(SmlLocation), error); - if (!location) + *location = sml_location_new(); + if (!location) { + smlErrorSet(error, SML_ERROR_GENERIC, "Cannot create new SmlLocation object - out of memory."); goto error; - (*location)->refCount = 1; + } while (1) { if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_location; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_TARGET) && \ @@ -406,33 +409,46 @@ smlErrorSet(error, SML_ERROR_GENERIC, "The element %s is not a start node in locations (Target, Source, SourceParent or TargetParent).", xmlTextReaderConstName(parser->reader)); - goto error_free_location; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_LOCURI)) { - if (!_smlXmlParserGetString(parser, &((*location)->locURI), SML_ELEMENT_LOCURI, error)) - goto error_free_location; + gchar *uri = NULL; + if (!_smlXmlParserGetString(parser, &uri, SML_ELEMENT_LOCURI, error)) + goto error; + if (!sml_location_set_uri(*location, uri, &gerror)) { + g_free(uri); + goto error; + } + g_free(uri); } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_LOCNAME)) { - if (!_smlXmlParserGetString(parser, &((*location)->locName), SML_ELEMENT_LOCNAME, error)) - goto error_free_location; + gchar *name = NULL; + if (!_smlXmlParserGetString(parser, &name, SML_ELEMENT_LOCNAME, error)) + goto error; + if (!sml_location_set_name(*location, name, &gerror)) { + g_free(name); + goto error; + } + g_free(name); } else { smlErrorSet(error, SML_ERROR_GENERIC, "wrong initial node. expected SyncHdr"); - goto error_free_location; + goto error; } } - if (!(*location)->locURI) { + if (!sml_location_get_uri(*location)) { smlErrorSet(error, SML_ERROR_GENERIC, "No locURI set"); - goto error_free_location; + goto error; } smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; -error_free_location: - smlLocationUnref(*location); error: + if (*location) + g_object_unref(*location); *location = NULL; + GERROR_TO_SML_ERROR(gerror,error) smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); return FALSE; } @@ -686,28 +702,28 @@ goto error_free_item; smlItemSetSource(item, source); - smlLocationUnref(source); + g_object_unref(source); } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_TARGET)) { SmlLocation *target = NULL; if (!_smlLocationParse(&target, parser, error)) goto error_free_item; smlItemSetTarget(item, target); - smlLocationUnref(target); + g_object_unref(target); } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_SOURCE_PARENT)) { SmlLocation *source = NULL; if (!_smlLocationParse(&source, parser, error)) goto error_free_item; smlItemSetSourceParent(item, source); - smlLocationUnref(source); + g_object_unref(source); } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_TARGET_PARENT)) { SmlLocation *target = NULL; if (!_smlLocationParse(&target, parser, error)) goto error_free_item; smlItemSetTargetParent(item, target); - smlLocationUnref(target); + g_object_unref(target); } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_META)) { switch (type) { case SML_COMMAND_TYPE_ALERT: @@ -994,6 +1010,7 @@ CHECK_ERROR_REF smlAssert(parser); smlAssert(name); + GError *gerror = NULL; char *contenttype = NULL; *cmd = smlCommandNew(type, error); @@ -1004,7 +1021,7 @@ while (1) { if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_cmd; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), name) && \ @@ -1014,41 +1031,41 @@ smlErrorSet(error, SML_ERROR_GENERIC, "The element %s is not a start node in %s.", xmlTextReaderConstName(parser->reader), name); - goto error_free_cmd; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMDID)) { if (!_smlXmlParserGetID(parser, &((*cmd)->cmdID), SML_ELEMENT_CMDID, error)) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_ITEM)) { SmlItem *item = _smlItemParse(parser, *cmd, type, error); if (!item) - goto error_free_cmd; + goto error; (*cmd)->private.change.items = g_list_append((*cmd)->private.change.items, item); if (!(*cmd)->private.change.items) { smlItemUnref(item); smlErrorSet(error, SML_ERROR_GENERIC, "g_list_append for item list of change command failed."); - goto error_free_cmd; + goto error; } } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_META)) { if (!_smlCommandMetaParse(parser, NULL, &contenttype, NULL, &(*cmd)->size, NULL, error)) - goto error_free_cmd; + goto error; } else { smlErrorSet(error, SML_ERROR_GENERIC, "wrong initial node"); - goto error_free_cmd; + goto error; } } if (!(*cmd)->cmdID) { smlErrorSet(error, SML_ERROR_GENERIC, "No cmdid set"); - goto error_free_cmd; + goto error; } if (!(*cmd)->private.change.items || !g_list_length((*cmd)->private.change.items)) { smlErrorSet(error, SML_ERROR_GENERIC, "No items set"); - goto error_free_cmd; + goto error; } /* some clients set the contentype in the item, don't overwrite it with NULL */ @@ -1082,16 +1099,16 @@ break; default: smlErrorSet(error, SML_ERROR_GENERIC, "Unknown change type set"); - goto error_free_cmd; + goto error; } if (!(*cmd)->source) { SmlItem *item = g_list_nth_data((*cmd)->private.change.items, 0); if (item->source) { - (*cmd)->source = smlLocationClone(item->source, error); + (*cmd)->source = sml_location_clone(item->source, &gerror); if (!(*cmd)->source) - goto error_free_cmd; + goto error; } } @@ -1099,27 +1116,28 @@ { SmlItem *item = g_list_nth_data((*cmd)->private.change.items, 0); if (item->target) { - (*cmd)->target = smlLocationClone(item->target, error); + (*cmd)->target = sml_location_clone(item->target, &gerror); if (!(*cmd)->target) - goto error_free_cmd; + goto error; } } /* Step once more */ if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_cmd; + goto error; } smlTrace(TRACE_EXIT, "%s: %p", __func__, *cmd); return TRUE; -error_free_cmd: - smlCommandUnref(*cmd); error: + if (*cmd) + smlCommandUnref(*cmd); + *cmd = NULL; if (contenttype) smlSafeCFree(&contenttype); - *cmd = NULL; + GERROR_TO_SML_ERROR(gerror,error) smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); return FALSE; } @@ -1535,6 +1553,7 @@ CHECK_ERROR_REF smlAssert(parser); smlAssert(cmd); + GError *gerror = NULL; char *contenttype = NULL; char *locURI = NULL; @@ -1553,7 +1572,7 @@ while (1) { if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_cmd; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_RESULTS) && \ @@ -1563,39 +1582,39 @@ smlErrorSet(error, SML_ERROR_GENERIC, "The element %s is not a start node in Results.", xmlTextReaderConstName(parser->reader)); - goto error_free_cmd; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMDID)) { if (!_smlXmlParserGetID(parser, &((*cmd)->cmdID), SML_ELEMENT_CMDID, error)) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_MSGREF)) { if (!_smlXmlParserGetID(parser, &((*cmd)->private.results.status->msgRef), SML_ELEMENT_MSGREF, error)) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMDREF)) { if (!_smlXmlParserGetID(parser, &((*cmd)->private.results.status->cmdRef), SML_ELEMENT_CMDREF, error)) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_SOURCEREF)) { if (!_smlXmlParserGetString(parser, &locURI, SML_ELEMENT_SOURCEREF, error)) - goto error_free_cmd; + goto error; - (*cmd)->private.results.status->sourceRef = smlLocationNew(locURI, NULL, error); + (*cmd)->private.results.status->sourceRef = sml_location_new_with_options(locURI, NULL, &gerror); smlSafeCFree(&locURI); if (!(*cmd)->private.results.status->sourceRef) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_TARGETREF)) { if (!_smlXmlParserGetString(parser, &locURI, SML_ELEMENT_TARGETREF, error)) - goto error_free_cmd; + goto error; - (*cmd)->private.results.status->targetRef = smlLocationNew(locURI, NULL, error); + (*cmd)->private.results.status->targetRef = sml_location_new_with_options(locURI, NULL, &gerror); smlSafeCFree(&locURI); if (!(*cmd)->private.results.status->targetRef) - goto error_free_cmd; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_ITEM)) { (*cmd)->private.results.status->item = _smlItemParse(parser, (*cmd), (*cmd)->type, error); if (!(*cmd)->private.results.status->item) - goto error_free_cmd; + goto error; (*cmd)->target = (*cmd)->private.results.status->item->target; (*cmd)->private.results.status->item->target = NULL; @@ -1605,17 +1624,17 @@ /* ignore format */ char *format = NULL; if (!_smlCommandMetaParse(parser, &format, &contenttype, NULL, NULL, NULL, error)) - goto error_free_cmd; + goto error; if (format) smlSafeCFree(&format); } else { smlErrorSet(error, SML_ERROR_GENERIC, "wrong initial node"); - goto error_free_cmd; + goto error; } } if (!(*cmd)->private.results.status->item) { smlErrorSet(error, SML_ERROR_GENERIC, "Result is missing item"); - goto error_free_cmd; + goto error; } /* We only use the content type of the put command if the item itself did not have @@ -1623,7 +1642,7 @@ if (!(*cmd)->private.results.status->item->contenttype) { if (!contenttype) { smlErrorSet(error, SML_ERROR_GENERIC, "Result is missing content type"); - goto error_free_cmd; + goto error; } (*cmd)->private.results.status->item->contenttype = g_strdup(contenttype); @@ -1635,18 +1654,19 @@ /* Step once more */ if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_cmd; + goto error; } smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; -error_free_cmd: - smlCommandUnref(*cmd); error: + if (*cmd) + smlCommandUnref(*cmd); *cmd = NULL; if (contenttype) smlSafeCFree(&contenttype); + GERROR_TO_SML_ERROR(gerror,error) smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); return FALSE; } @@ -2299,6 +2319,7 @@ smlAssert(parser); smlAssert(status); + GError *gerror = NULL; char *locURI = NULL; SmlItem *item = NULL; @@ -2362,7 +2383,7 @@ while (1) { if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_status; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_STATUS) && \ @@ -2372,15 +2393,15 @@ smlErrorSet(error, SML_ERROR_GENERIC, "The element %s is not a start node in Status.", xmlTextReaderConstName(parser->reader)); - goto error_free_status; + goto error; } if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMDID)) { //Errr... who cares? if (!_smlXmlParserExpectNode(parser, XML_NODE_TEXT, FALSE, NULL, error)) - goto error_free_status; + goto error; if (!_smlXmlParserExpectNode(parser, XML_NODE_CLOSE, FALSE, SML_ELEMENT_CMDID, error)) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_MSGREF)) { /* MsgRef is defined as parsed character data: OMA-SUP-DTD_SyncML_RepPro-V1_2-20070221-A.txt:<!ELEMENT MsgRef (#PCDATA)> @@ -2391,37 +2412,37 @@ So it could be something else then an unsigned integer. */ if (!_smlXmlParserGetID(parser, &((*status)->msgRef), SML_ELEMENT_MSGREF, error)) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMDREF)) { if (!_smlXmlParserGetID(parser, &((*status)->cmdRef), SML_ELEMENT_CMDREF, error)) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CMD)) { char *cmdname = NULL; if (!_smlXmlParserGetString(parser, &cmdname, SML_ELEMENT_CMD, error)) - goto error_free_status; + goto error; (*status)->type = smlCommandTypeFromString(cmdname, error); smlSafeCFree(&cmdname); if ((*status)->type == SML_COMMAND_TYPE_UNKNOWN) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_DATA)) { if (!_smlXmlParserGetString(parser, &((*status)->data), SML_ELEMENT_DATA, error)) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_SOURCEREF)) { if (!_smlXmlParserGetString(parser, &locURI, SML_ELEMENT_SOURCEREF, error)) - goto error_free_status; + goto error; - (*status)->sourceRef = smlLocationNew(locURI, NULL, error); + (*status)->sourceRef = sml_location_new_with_options(locURI, NULL, &gerror); smlSafeCFree(&locURI); if (!(*status)->sourceRef) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_TARGETREF)) { if (!_smlXmlParserGetString(parser, &locURI, SML_ELEMENT_TARGETREF, error)) - goto error_free_status; + goto error; - (*status)->targetRef = smlLocationNew(locURI, NULL, error); + (*status)->targetRef = sml_location_new_with_options(locURI, NULL, &gerror); smlSafeCFree(&locURI); if (!(*status)->targetRef) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_ITEM)) { /* Do not send SML_COMMAND_TYPE_ALERT * because this can give trouble. @@ -2429,11 +2450,11 @@ */ item = _smlItemParse(parser, NULL, (*status)->type, error); if (!item) - goto error_free_status; + goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CHAL)) { (*status)->chal = _smlChalParse(parser, error); if (!(*status)->chal) - goto error_free_status; + goto error; } else { smlErrorSet(error, SML_ERROR_GENERIC, "wrong initial node"); goto error; @@ -2443,7 +2464,7 @@ /* Step once more */ if (!_smlXmlParserStep(parser)) { smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); - goto error_free_status; + goto error; } if (item) @@ -2462,7 +2483,7 @@ } else { smlErrorSet(error, SML_ERROR_GENERIC, "Got wrong item"); smlItemUnref(item); - goto error_free_status; + ... [truncated message content] |
From: <svn...@op...> - 2009-06-29 14:13:54
|
Author: bellmich Date: Mon Jun 29 16:06:44 2009 New Revision: 1137 URL: http://libsyncml.opensync.org/changeset/1137 Log: incremented SO naming to libsyncml.so.3 to avoid conflicts with productive 0.5.x installations Modified: trunk/CMakeLists.txt Modified: trunk/CMakeLists.txt ============================================================================== --- trunk/CMakeLists.txt Mon Jun 29 16:05:51 2009 (r1136) +++ trunk/CMakeLists.txt Mon Jun 29 16:06:44 2009 (r1137) @@ -6,9 +6,11 @@ SET( LIBSYNCML_VERSION "${LIBSYNCML_VERSION_MAJOR}.${LIBSYNCML_VERSION_MINOR}.${LIBSYNCML_VERSION_PATCH}" ) # The most recent interface number that this library implements. -#UPDATE: If any interface have been added, removed or changed since +#UPDATE: If any interface have been added or changed since #UPDATE: the last update increment CURRENT. -SET( LIBSYNCML_LIBVERSION_CURRENT 6 ) +#UPDATE: If any interface have been removed since the last update +#UPDATE: then set CURRENT to AGE - CURRECT + 1. +SET( LIBSYNCML_LIBVERSION_CURRENT 3 ) # The implementation number of the CURRENT interface. # UPDATE: Increment only if the library code has changed at all, since @@ -22,7 +24,7 @@ # UPDATE: release, then increment. # UPDATE: If any interface have been removed since the last release # UPDATE: reset to 0. -SET( LIBSYNCML_LIBVERSION_AGE 4 ) +SET( LIBSYNCML_LIBVERSION_AGE 0 ) # The range of implemention CURRENT - AGE is the SOVERSION MATH( EXPR LIBSYNCML_LIBVERSION_SOVERSION "${LIBSYNCML_LIBVERSION_CURRENT} - ${LIBSYNCML_LIBVERSION_AGE}" ) |
From: <svn...@op...> - 2009-06-29 14:13:54
|
Author: bellmich Date: Mon Jun 29 16:05:51 2009 New Revision: 1136 URL: http://libsyncml.opensync.org/changeset/1136 Log: added missing DevInf header files Modified: trunk/tools/syncml-gir-scanner.sh.cmake Modified: trunk/tools/syncml-gir-scanner.sh.cmake ============================================================================== --- trunk/tools/syncml-gir-scanner.sh.cmake Mon Jun 29 14:09:12 2009 (r1135) +++ trunk/tools/syncml-gir-scanner.sh.cmake Mon Jun 29 16:05:51 2009 (r1136) @@ -4,6 +4,9 @@ SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf_prop_param.h" SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf_property.h" SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf_ctcap.h" +SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf_data_store.h" +SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf.h" +SML_HEADER="$SML_HEADER @LIBSYNCML_INCLUDE_DIR@/libsyncml/dev_inf_api/sml_dev_inf_enum_types.h" g-ir-scanner \ --namespace=Sml \ |
From: <svn...@op...> - 2009-06-29 12:09:19
|
Author: bellmich Date: Mon Jun 29 14:09:12 2009 New Revision: 1135 URL: http://libsyncml.opensync.org/changeset/1135 Log: removed sml_devinf.* finally Deleted: trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h Modified: trunk/libsyncml/CMakeLists.txt trunk/libsyncml/syncml.h Modified: trunk/libsyncml/CMakeLists.txt ============================================================================== --- trunk/libsyncml/CMakeLists.txt Mon Jun 29 14:03:35 2009 (r1134) +++ trunk/libsyncml/CMakeLists.txt Mon Jun 29 14:09:12 2009 (r1135) @@ -5,7 +5,6 @@ SET( libsyncml_LIB_SRCS sml_base64.c sml_command.c - sml_devinf.c sml_elements.c sml_error.c sml_manager.c @@ -75,7 +74,6 @@ sml_base64.h sml_command.h sml_defines.h - sml_devinf.h sml_elements.h sml_error.h sml_manager.h Modified: trunk/libsyncml/syncml.h ============================================================================== --- trunk/libsyncml/syncml.h Mon Jun 29 14:03:35 2009 (r1134) +++ trunk/libsyncml/syncml.h Mon Jun 29 14:09:12 2009 (r1135) @@ -94,7 +94,7 @@ #include <libsyncml/sml_transport.h> #include <libsyncml/sml_elements.h> #include <libsyncml/sml_command.h> -#include <libsyncml/sml_devinf.h> +#include <libsyncml/dev_inf_api/sml_dev_inf.h> #include <libsyncml/sml_notification.h> #include <libsyncml/sml_base64.h> #include <libsyncml/sml_md5.h> |
From: <svn...@op...> - 2009-06-29 12:03:43
|
Author: bellmich Date: Mon Jun 29 14:03:35 2009 New Revision: 1134 URL: http://libsyncml.opensync.org/changeset/1134 Log: - moved code from smlDevInfFromResult to sml_devinf_obj.c - removed function smlDevInfFromResult - fixed warning in check_xml_parser.c (missing include) Modified: trunk/libsyncml/objects/sml_devinf_obj.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h trunk/tests/check_xml_parser.c Modified: trunk/libsyncml/objects/sml_devinf_obj.c ============================================================================== --- trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 13:53:07 2009 (r1133) +++ trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 14:03:35 2009 (r1134) @@ -122,9 +122,27 @@ goto error; } - /* cache device information */ + /* verify that it is a real result with data */ - as->recvDevInf = smlDevInfFromResult(result, &error); + if (result->type != SML_COMMAND_TYPE_RESULTS) { + smlErrorSet(&error, SML_ERROR_GENERIC, "devinf command was not a result"); + goto error; + } + + SmlItem *item = result->private.results.status->item; + if (!item) { + smlErrorSet(&error, SML_ERROR_GENERIC, "devinf result did not have a item"); + goto error; + } + + char *data = NULL; + unsigned int size = 0; + if (!smlItemGetData(item, &data, &size, &error)) + goto error; + + /* parse and cache device information */ + + as->recvDevInf = smlXmlDevInfParse(data, size, &error); if (!as->recvDevInf) goto error; Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 13:53:07 2009 (r1133) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 14:03:35 2009 (r1134) @@ -29,37 +29,3 @@ #include "parser/sml_xml_parse.h" #include "sml_error_internals.h" -SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, result, error); - CHECK_ERROR_REF - smlAssert(result); - - if (result->type != SML_COMMAND_TYPE_RESULTS) { - smlErrorSet(error, SML_ERROR_GENERIC, "devinf command was not a result"); - goto error; - } - - SmlItem *item = result->private.results.status->item; - if (!item) { - smlErrorSet(error, SML_ERROR_GENERIC, "devinf result did not have a item"); - goto error; - } - - char *data = NULL; - unsigned int size = 0; - if (!smlItemGetData(item, &data, &size, error)) - goto error; - - SmlDevInf *devinf = smlXmlDevInfParse(data, size, error); - if (!devinf) - goto error; - - smlTrace(TRACE_EXIT, "%s", __func__); - return devinf; - -error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); - return NULL; -} - Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 13:53:07 2009 (r1133) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 14:03:35 2009 (r1134) @@ -37,7 +37,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf_data_store.h> #include <libsyncml/dev_inf_api/sml_dev_inf.h> -SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error); #endif //_SML_DEVINF_H_ Modified: trunk/tests/check_xml_parser.c ============================================================================== --- trunk/tests/check_xml_parser.c Mon Jun 29 13:53:07 2009 (r1133) +++ trunk/tests/check_xml_parser.c Mon Jun 29 14:03:35 2009 (r1134) @@ -21,6 +21,7 @@ #include "tests/support.h" +#include <libsyncml/parser/sml_xml_parse.h> #include <libsyncml/sml_command_internals.h> #include <libsyncml/sml_elements_internals.h> |
From: <svn...@op...> - 2009-06-29 11:53:18
|
Author: bellmich Date: Mon Jun 29 13:53:07 2009 New Revision: 1133 URL: http://libsyncml.opensync.org/changeset/1133 Log: remove useless function smlDevInfParse Modified: trunk/libsyncml/objects/sml_devinf_obj.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h trunk/tests/check_xml_parser.c Modified: trunk/libsyncml/objects/sml_devinf_obj.c ============================================================================== --- trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 13:34:21 2009 (r1132) +++ trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 13:53:07 2009 (r1133) @@ -28,6 +28,7 @@ #include <libsyncml/sml_elements_internals.h> #include <libsyncml/sml_command_internals.h> #include "libsyncml/sml_error_internals.h" +#include "libsyncml/parser/sml_xml_parse.h" #ifdef WIN32 #include <windef.h> @@ -315,7 +316,7 @@ goto error; } - as->recvDevInf = smlDevInfParse(data, size, &error); + as->recvDevInf = smlXmlDevInfParse(data, size, &error); if (!as->recvDevInf) goto error; Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 13:34:21 2009 (r1132) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 13:53:07 2009 (r1133) @@ -29,25 +29,6 @@ #include "parser/sml_xml_parse.h" #include "sml_error_internals.h" -SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, data, length, error); - CHECK_ERROR_REF - smlAssert(data); - smlAssert(length); - - SmlDevInf *devinf = smlXmlDevInfParse(data, length, error); - if (!devinf) - goto error; - - smlTrace(TRACE_EXIT, "%s", __func__); - return devinf; - -error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); - return NULL; -} - SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, result, error); @@ -70,7 +51,7 @@ if (!smlItemGetData(item, &data, &size, error)) goto error; - SmlDevInf *devinf = smlDevInfParse(data, size, error); + SmlDevInf *devinf = smlXmlDevInfParse(data, size, error); if (!devinf) goto error; Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 13:34:21 2009 (r1132) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 13:53:07 2009 (r1133) @@ -37,9 +37,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf_data_store.h> #include <libsyncml/dev_inf_api/sml_dev_inf.h> -void smlDevInfConfigureSession(SmlDevInf *devinf, SmlSession *session); - -SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error); SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error); #endif //_SML_DEVINF_H_ Modified: trunk/tests/check_xml_parser.c ============================================================================== --- trunk/tests/check_xml_parser.c Mon Jun 29 13:34:21 2009 (r1132) +++ trunk/tests/check_xml_parser.c Mon Jun 29 13:53:07 2009 (r1133) @@ -1270,7 +1270,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, "%s", smlErrorPrint(&error)); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); @@ -1330,7 +1330,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); @@ -1387,7 +1387,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); @@ -1453,7 +1453,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, "%s", smlErrorPrint(&error)); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); @@ -1616,7 +1616,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); @@ -1684,7 +1684,7 @@ sml_fail_unless(smlItemGetData(cmd->private.access.item, &buffer, &size, &error), NULL); sml_fail_unless(error == NULL, NULL); - SmlDevInf *devinf = smlDevInfParse(buffer, size, &error); + SmlDevInf *devinf = smlXmlDevInfParse(buffer, size, &error); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); g_object_unref(devinf); |
From: <svn...@op...> - 2009-06-29 11:34:33
|
Author: bellmich Date: Mon Jun 29 13:34:21 2009 New Revision: 1132 URL: http://libsyncml.opensync.org/changeset/1132 Log: removed unused function smlDevInfConfigureSession Modified: trunk/libsyncml/sml_devinf.c trunk/tests/check_sync.c Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 13:21:32 2009 (r1131) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 13:34:21 2009 (r1132) @@ -29,21 +29,6 @@ #include "parser/sml_xml_parse.h" #include "sml_error_internals.h" -void smlDevInfConfigureSession(SmlDevInf *devinf, SmlSession *session) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, devinf, session); - smlAssert(devinf); - smlAssert(session); - - if (!sml_dev_inf_get_support_number_of_changes(devinf)) - smlSessionUseNumberOfChanges(session, FALSE); - - if (!sml_dev_inf_get_support_large_objs(devinf)) - smlSessionUseLargeObjects(session, FALSE); - - smlTrace(TRACE_EXIT, "%s", __func__); -} - SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, data, length, error); Modified: trunk/tests/check_sync.c ============================================================================== --- trunk/tests/check_sync.c Mon Jun 29 13:21:32 2009 (r1131) +++ trunk/tests/check_sync.c Mon Jun 29 13:34:21 2009 (r1132) @@ -1239,8 +1239,11 @@ smlSessionSetLocalMaxObjSize(clienttracker->session, TEST_DEFAULT_MAX_OBJ_SIZE); sml_fail_unless(smlSessionGetLocalMaxObjSize(clienttracker->session) == TEST_DEFAULT_MAX_OBJ_SIZE, NULL); - smlDevInfConfigureSession(devinf, clienttracker->session); - + if (!sml_dev_inf_get_support_number_of_changes(devinf)) + smlSessionUseNumberOfChanges(clienttracker->session, FALSE); + if (!sml_dev_inf_get_support_large_objs(devinf)) + smlSessionUseLargeObjects(clienttracker->session, FALSE); + sml_fail_unless(smlManagerSessionAdd(clientmanager, clienttracker->session, NULL, &error), NULL); sml_fail_unless(error == NULL, NULL); |
From: <svn...@op...> - 2009-06-29 11:21:44
|
Author: bellmich Date: Mon Jun 29 13:21:32 2009 New Revision: 1131 URL: http://libsyncml.opensync.org/changeset/1131 Log: moved all smlDevInfNew* functions to smlCommandNewDevInf* Modified: trunk/libsyncml/objects/sml_devinf_obj.c trunk/libsyncml/sml_command.c trunk/libsyncml/sml_command.h trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h trunk/tests/check_xml_assembler.c Modified: trunk/libsyncml/objects/sml_devinf_obj.c ============================================================================== --- trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/libsyncml/objects/sml_devinf_obj.c Mon Jun 29 13:21:32 2009 (r1131) @@ -213,11 +213,11 @@ if (!as->devinfSent) { if (get) { if (smlSessionGetVersion(session) == SML_VERSION_10) - result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_10, error); + result = smlCommandNewDevInfResult(get, agent->devinf, SML_DEVINF_VERSION_10, error); else if (smlSessionGetVersion(session) == SML_VERSION_12) - result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_12, error); + result = smlCommandNewDevInfResult(get, agent->devinf, SML_DEVINF_VERSION_12, error); else - result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_11, error); + result = smlCommandNewDevInfResult(get, agent->devinf, SML_DEVINF_VERSION_11, error); if (!result) goto error; @@ -241,11 +241,11 @@ smlStatusUnref(reply); } else { if (smlSessionGetVersion(session) == SML_VERSION_10) - cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_10, error); + cmd = smlCommandNewDevInfPut(agent->devinf, SML_DEVINF_VERSION_10, error); else if (smlSessionGetVersion(session) == SML_VERSION_12) - cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_12, error); + cmd = smlCommandNewDevInfPut(agent->devinf, SML_DEVINF_VERSION_12, error); else - cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_11, error); + cmd = smlCommandNewDevInfPut(agent->devinf, SML_DEVINF_VERSION_11, error); if (!cmd) goto error; @@ -545,11 +545,11 @@ if (!as->devinfRequested) { if (smlSessionGetVersion(session) == SML_VERSION_10) - get = smlDevInfNewGet(SML_DEVINF_VERSION_10, error); + get = smlCommandNewDevInfGet(SML_DEVINF_VERSION_10, error); else if (smlSessionGetVersion(session) == SML_VERSION_12) - get = smlDevInfNewGet(SML_DEVINF_VERSION_12, error); + get = smlCommandNewDevInfGet(SML_DEVINF_VERSION_12, error); else - get = smlDevInfNewGet(SML_DEVINF_VERSION_11, error); + get = smlCommandNewDevInfGet(SML_DEVINF_VERSION_11, error); if (!get) goto error; Modified: trunk/libsyncml/sml_command.c ============================================================================== --- trunk/libsyncml/sml_command.c Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/libsyncml/sml_command.c Mon Jun 29 13:21:32 2009 (r1131) @@ -628,6 +628,131 @@ return NULL; } +SmlCommand *smlCommandNewDevInfResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error) +{ + smlTrace(TRACE_ENTRY, "%s(%p, %i, %p, %p)", __func__, cmd, devinf, version, error); + CHECK_ERROR_REF + smlAssert(cmd); + SmlLocation *source = NULL; + + char *data = NULL; + unsigned int size = 0; + if (!smlXmlDevInfAssemble(devinf, version, &data, &size, error)) + goto error; + + if (version == SML_DEVINF_VERSION_10) + source = smlLocationNew("./devinf10", NULL, error); + else if (version == SML_DEVINF_VERSION_12) + source = smlLocationNew("./devinf12", NULL, error); + else + source = smlLocationNew("./devinf11", NULL, error); + + if (!source) + goto error_free_data; + + SmlCommand *result = smlCommandNewResult(cmd, source, data, size, SML_ELEMENT_DEVINF_XML, error); + if (!result) { + smlLocationUnref(source); + goto error_free_data; + } + /* Since the devinf is xml, we want to send it "raw" (without cdata) */ + result->private.results.status->item->raw = TRUE; + + smlLocationUnref(source); + + smlTrace(TRACE_EXIT, "%s: %p", __func__, result); + return result; + +error_free_data: + smlSafeCFree(&data); +error: + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + return NULL; +} + +SmlCommand *smlCommandNewDevInfPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error) +{ + smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, devinf, version, error); + CHECK_ERROR_REF + smlAssert(devinf); + SmlLocation *source = NULL; + + // update version + if (sml_dev_inf_get_ver_dtd(devinf) == SML_DEVINF_VERSION_UNKNOWN) + sml_dev_inf_set_ver_dtd(devinf, version); + + if (version == SML_DEVINF_VERSION_10) + source = smlLocationNew("./devinf10", NULL, error); + else if (version == SML_DEVINF_VERSION_12) + source = smlLocationNew("./devinf12", NULL, error); + else + source = smlLocationNew("./devinf11", NULL, error); + + if (!source) + goto error; + + SmlCommand *cmd = smlCommandNewPut(NULL, source, NULL, 0, SML_ELEMENT_DEVINF_XML, error); + if (!cmd) + goto error_free_source; + + smlLocationUnref(source); + + char *data = NULL; + unsigned int size = 0; + if (!smlXmlDevInfAssemble(devinf, version, &data, &size, error)) + goto error_free_cmd; + + if (!smlItemAddData(cmd->private.access.item, data, size, error)) { + smlSafeCFree(&data); + goto error_free_cmd; + } + smlSafeCFree(&data); + smlItemSetRaw(cmd->private.access.item, TRUE); + + smlTrace(TRACE_EXIT, "%s: %p", __func__, cmd); + return cmd; + +error_free_cmd: + smlCommandUnref(cmd); +error_free_source: + smlLocationUnref(source); +error: + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + return NULL; +} + +SmlCommand *smlCommandNewDevInfGet(SmlDevInfVersion version, SmlError **error) +{ + smlTrace(TRACE_ENTRY, "%s(%i, %p)", __func__, version, error); + CHECK_ERROR_REF + SmlLocation *target = NULL; + + if (version == SML_DEVINF_VERSION_10) + target = smlLocationNew("./devinf10", NULL, error); + else if (version == SML_DEVINF_VERSION_12) + target = smlLocationNew("./devinf12", NULL, error); + else + target = smlLocationNew("./devinf11", NULL, error); + + if (!target) + goto error; + + SmlCommand *cmd = smlCommandNewGet(target, SML_ELEMENT_DEVINF_XML, error); + if (!cmd) + goto error_free_target; + + smlLocationUnref(target); + + smlTrace(TRACE_EXIT, "%s: %p", __func__, cmd); + return cmd; + +error_free_target: + smlLocationUnref(target); +error: + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + return NULL; +} + SmlCommand *smlCommandNewMap(SmlLocation *target, SmlLocation *source, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, target, source, error); Modified: trunk/libsyncml/sml_command.h ============================================================================== --- trunk/libsyncml/sml_command.h Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/libsyncml/sml_command.h Mon Jun 29 13:21:32 2009 (r1131) @@ -31,6 +31,7 @@ #define _SML_COMMAND_H_ #include <libsyncml/syncml.h> +#include <libsyncml/dev_inf_api/sml_dev_inf.h> SmlStatus *smlStatusNew(SmlErrorType data, unsigned int cmdref, unsigned int msgref, SmlLocation *sourceref, SmlLocation *targeref, SmlCommandType type, SmlError **error); SmlStatus *smlStatusRef(SmlStatus *status); @@ -53,6 +54,10 @@ SmlCommand *smlCommandNewPut(SmlLocation *target, SmlLocation *source, const char *data, unsigned int size, const char *contenttype, SmlError **error); SmlCommand *smlCommandNewGet(SmlLocation *target, const char *contenttype, SmlError **error); +SmlCommand *smlCommandNewDevInfResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); +SmlCommand *smlCommandNewDevInfPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); +SmlCommand *smlCommandNewDevInfGet(SmlDevInfVersion version, SmlError **error); + SmlCommand *smlCommandNewMap(SmlLocation *target, SmlLocation *source, SmlError **error); SmlBool smlCommandAddMapItem(SmlCommand *map, SmlMapItem *item, SmlError **error); Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 13:21:32 2009 (r1131) @@ -44,131 +44,6 @@ smlTrace(TRACE_EXIT, "%s", __func__); } -SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %p, %p)", __func__, cmd, devinf, version, error); - CHECK_ERROR_REF - smlAssert(cmd); - SmlLocation *source = NULL; - - char *data = NULL; - unsigned int size = 0; - if (!smlXmlDevInfAssemble(devinf, version, &data, &size, error)) - goto error; - - if (version == SML_DEVINF_VERSION_10) - source = smlLocationNew("./devinf10", NULL, error); - else if (version == SML_DEVINF_VERSION_12) - source = smlLocationNew("./devinf12", NULL, error); - else - source = smlLocationNew("./devinf11", NULL, error); - - if (!source) - goto error_free_data; - - SmlCommand *result = smlCommandNewResult(cmd, source, data, size, SML_ELEMENT_DEVINF_XML, error); - if (!result) { - smlLocationUnref(source); - goto error_free_data; - } - /* Since the devinf is xml, we want to send it "raw" (without cdata) */ - result->private.results.status->item->raw = TRUE; - - smlLocationUnref(source); - - smlTrace(TRACE_EXIT, "%s: %p", __func__, result); - return result; - -error_free_data: - smlSafeCFree(&data); -error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); - return NULL; -} - -SmlCommand *smlDevInfNewPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, devinf, version, error); - CHECK_ERROR_REF - smlAssert(devinf); - SmlLocation *source = NULL; - - // update version - if (sml_dev_inf_get_ver_dtd(devinf) == SML_DEVINF_VERSION_UNKNOWN) - sml_dev_inf_set_ver_dtd(devinf, version); - - if (version == SML_DEVINF_VERSION_10) - source = smlLocationNew("./devinf10", NULL, error); - else if (version == SML_DEVINF_VERSION_12) - source = smlLocationNew("./devinf12", NULL, error); - else - source = smlLocationNew("./devinf11", NULL, error); - - if (!source) - goto error; - - SmlCommand *cmd = smlCommandNewPut(NULL, source, NULL, 0, SML_ELEMENT_DEVINF_XML, error); - if (!cmd) - goto error_free_source; - - smlLocationUnref(source); - - char *data = NULL; - unsigned int size = 0; - if (!smlXmlDevInfAssemble(devinf, version, &data, &size, error)) - goto error_free_cmd; - - if (!smlItemAddData(cmd->private.access.item, data, size, error)) { - smlSafeCFree(&data); - goto error_free_cmd; - } - smlSafeCFree(&data); - smlItemSetRaw(cmd->private.access.item, TRUE); - - smlTrace(TRACE_EXIT, "%s: %p", __func__, cmd); - return cmd; - -error_free_cmd: - smlCommandUnref(cmd); -error_free_source: - smlLocationUnref(source); -error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); - return NULL; -} - -SmlCommand *smlDevInfNewGet(SmlDevInfVersion version, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%i, %p)", __func__, version, error); - CHECK_ERROR_REF - SmlLocation *target = NULL; - - if (version == SML_DEVINF_VERSION_10) - target = smlLocationNew("./devinf10", NULL, error); - else if (version == SML_DEVINF_VERSION_12) - target = smlLocationNew("./devinf12", NULL, error); - else - target = smlLocationNew("./devinf11", NULL, error); - - if (!target) - goto error; - - SmlCommand *cmd = smlCommandNewGet(target, SML_ELEMENT_DEVINF_XML, error); - if (!cmd) - goto error_free_target; - - smlLocationUnref(target); - - smlTrace(TRACE_EXIT, "%s: %p", __func__, cmd); - return cmd; - -error_free_target: - smlLocationUnref(target); -error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); - return NULL; -} - SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, data, length, error); Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 13:21:32 2009 (r1131) @@ -37,10 +37,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf_data_store.h> #include <libsyncml/dev_inf_api/sml_dev_inf.h> -SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); -SmlCommand *smlDevInfNewPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); -SmlCommand *smlDevInfNewGet(SmlDevInfVersion version, SmlError **error); - void smlDevInfConfigureSession(SmlDevInf *devinf, SmlSession *session); SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error); Modified: trunk/tests/check_xml_assembler.c ============================================================================== --- trunk/tests/check_xml_assembler.c Mon Jun 29 12:58:40 2009 (r1130) +++ trunk/tests/check_xml_assembler.c Mon Jun 29 13:21:32 2009 (r1131) @@ -898,7 +898,7 @@ sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(gerror == NULL, NULL); - SmlCommand *cmd = smlDevInfNewPut(devinf, SML_DEVINF_VERSION_11, &error); + SmlCommand *cmd = smlCommandNewDevInfPut(devinf, SML_DEVINF_VERSION_11, &error); sml_fail_unless(cmd != NULL, NULL); sml_fail_unless(error == NULL, NULL); cmd->cmdID = 1; @@ -972,7 +972,7 @@ sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); - SmlCommand *cmd = smlDevInfNewPut(devinf, SML_DEVINF_VERSION_12, &error); + SmlCommand *cmd = smlCommandNewDevInfPut(devinf, SML_DEVINF_VERSION_12, &error); sml_fail_unless(cmd != NULL, NULL); sml_fail_unless(error == NULL, NULL); cmd->cmdID = 1; |
From: <svn...@op...> - 2009-06-29 10:58:48
|
Author: bellmich Date: Mon Jun 29 12:58:40 2009 New Revision: 1130 URL: http://libsyncml.opensync.org/changeset/1130 Log: removed unused function smlDevInfAssemble Modified: trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:56:37 2009 (r1129) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:58:40 2009 (r1130) @@ -44,12 +44,6 @@ smlTrace(TRACE_EXIT, "%s", __func__); } -SmlBool smlDevInfAssemble(SmlDevInf *devinf, char **data, unsigned int *size, SmlError **error) -{ - CHECK_ERROR_REF - return smlXmlDevInfAssemble(devinf, sml_dev_inf_get_ver_dtd(devinf), data, size, error); -} - SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %p, %p)", __func__, cmd, devinf, version, error); Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 12:56:37 2009 (r1129) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 12:58:40 2009 (r1130) @@ -37,7 +37,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf_data_store.h> #include <libsyncml/dev_inf_api/sml_dev_inf.h> -SmlBool smlDevInfAssemble(SmlDevInf *devinf, char **data, unsigned int *size, SmlError **error); SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); SmlCommand *smlDevInfNewPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); SmlCommand *smlDevInfNewGet(SmlDevInfVersion version, SmlError **error); |
From: <svn...@op...> - 2009-06-29 10:56:45
|
Author: bellmich Date: Mon Jun 29 12:56:37 2009 New Revision: 1129 URL: http://libsyncml.opensync.org/changeset/1129 Log: moved smlDevInfCTCapTypeFromString to SmlXmlParser Modified: trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h trunk/tests/check_devinf.c Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:29:02 2009 (r1128) +++ trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:56:37 2009 (r1129) @@ -1970,6 +1970,44 @@ return result; } +SmlDevInfCTCapType _smlParseDevInfCTCapType(const char *name, SmlError **error) +{ + CHECK_ERROR_REF + + if (!strcmp(name, SML_ELEMENT_CTTYPE)) { + return SML_DEVINF_CTCAP_CTTYPE; + } else if (!strcmp(name, SML_ELEMENT_PROPNAME)) { + return SML_DEVINF_CTCAP_PROPNAME; + } else if (!strcmp(name, SML_ELEMENT_VALENUM)) { + return SML_DEVINF_CTCAP_VALENUM; + } else if (!strcmp(name, SML_ELEMENT_DATATYPE)) { + return SML_DEVINF_CTCAP_DATATYPE; + } else if (!strcmp(name, SML_ELEMENT_SIZE)) { + return SML_DEVINF_CTCAP_SIZE; + } else if (!strcmp(name, SML_ELEMENT_DISPLAYNAME)) { + return SML_DEVINF_CTCAP_DISPLAYNAME; + } else if (!strcmp(name, SML_ELEMENT_PARAMNAME)) { + return SML_DEVINF_CTCAP_PARAMNAME; + } else if (!strcmp(name, SML_ELEMENT_VERCT)) { + return SML_DEVINF_CTCAP_VERCT; + } else if (!strcmp(name, SML_ELEMENT_PROPERTY)) { + return SML_DEVINF_CTCAP_PROPERTY; + } else if (!strcmp(name, SML_ELEMENT_PROPPARAM)) { + return SML_DEVINF_CTCAP_PROPPARAM; + } else if (!strcmp(name, SML_ELEMENT_NOTRUNCATE)) { + return SML_DEVINF_CTCAP_NOTRUNCATE; + } else if (!strcmp(name, SML_ELEMENT_MAXOCCUR)) { + return SML_DEVINF_CTCAP_MAXOCCUR; + } else if (!strcmp(name, SML_ELEMENT_MAXSIZE)) { + return SML_DEVINF_CTCAP_MAXSIZE; + } + + smlErrorSet(error, SML_ERROR_GENERIC, "Unknown ctcap type name \"%s\"", name); + smlTrace(TRACE_ERROR, "%s - %s", __func__, smlErrorPrint(error)); + return SML_DEVINF_CTCAP_UNKNOWN; +} + + /** @brief Start the parsing * * This will set everything up and parse until the SyncHdr @@ -2759,7 +2797,7 @@ /* determine list item type */ SmlDevInfCTCapType type; - type = smlDevInfCTCapTypeFromString(elem_name, error); + type = _smlParseDevInfCTCapType(elem_name, error); value = NULL; if (type != SML_DEVINF_CTCAP_UNKNOWN) { @@ -2972,7 +3010,7 @@ /* determine item type */ SmlDevInfCTCapType type; - type = smlDevInfCTCapTypeFromString(elem_name, error); + type = _smlParseDevInfCTCapType(elem_name, error); value = NULL; if (type != SML_DEVINF_CTCAP_UNKNOWN) { @@ -3061,7 +3099,7 @@ /* determine item type */ SmlDevInfCTCapType type; - type = smlDevInfCTCapTypeFromString(elem_name, error); + type = _smlParseDevInfCTCapType(elem_name, error); value = NULL; if (type != SML_DEVINF_CTCAP_UNKNOWN && type != SML_DEVINF_CTCAP_PROPPARAM) @@ -3187,7 +3225,7 @@ /* determine item type */ SmlDevInfCTCapType type; - type = smlDevInfCTCapTypeFromString(elem_name, error); + type = _smlParseDevInfCTCapType(elem_name, error); value = NULL; if (type != SML_DEVINF_CTCAP_UNKNOWN && type != SML_DEVINF_CTCAP_PROPERTY) Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:29:02 2009 (r1128) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:56:37 2009 (r1129) @@ -228,41 +228,3 @@ return NULL; } -SmlDevInfCTCapType smlDevInfCTCapTypeFromString(const char *name, SmlError **error) -{ - CHECK_ERROR_REF - - if (!strcmp(name, SML_ELEMENT_CTTYPE)) { - return SML_DEVINF_CTCAP_CTTYPE; - } else if (!strcmp(name, SML_ELEMENT_PROPNAME)) { - return SML_DEVINF_CTCAP_PROPNAME; - } else if (!strcmp(name, SML_ELEMENT_VALENUM)) { - return SML_DEVINF_CTCAP_VALENUM; - } else if (!strcmp(name, SML_ELEMENT_DATATYPE)) { - return SML_DEVINF_CTCAP_DATATYPE; - } else if (!strcmp(name, SML_ELEMENT_SIZE)) { - return SML_DEVINF_CTCAP_SIZE; - } else if (!strcmp(name, SML_ELEMENT_DISPLAYNAME)) { - return SML_DEVINF_CTCAP_DISPLAYNAME; - } else if (!strcmp(name, SML_ELEMENT_PARAMNAME)) { - return SML_DEVINF_CTCAP_PARAMNAME; - } else if (!strcmp(name, SML_ELEMENT_VERCT)) { - return SML_DEVINF_CTCAP_VERCT; - } else if (!strcmp(name, SML_ELEMENT_PROPERTY)) { - return SML_DEVINF_CTCAP_PROPERTY; - } else if (!strcmp(name, SML_ELEMENT_PROPPARAM)) { - return SML_DEVINF_CTCAP_PROPPARAM; - } else if (!strcmp(name, SML_ELEMENT_NOTRUNCATE)) { - return SML_DEVINF_CTCAP_NOTRUNCATE; - } else if (!strcmp(name, SML_ELEMENT_MAXOCCUR)) { - return SML_DEVINF_CTCAP_MAXOCCUR; - } else if (!strcmp(name, SML_ELEMENT_MAXSIZE)) { - return SML_DEVINF_CTCAP_MAXSIZE; - } - - smlErrorSet(error, SML_ERROR_GENERIC, "Unknown ctcap type name \"%s\"", name); - smlTrace(TRACE_ERROR, "%s - %s", __func__, smlErrorPrint(error)); - return SML_DEVINF_CTCAP_UNKNOWN; -} - - Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 12:29:02 2009 (r1128) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 12:56:37 2009 (r1129) @@ -47,8 +47,6 @@ SmlDevInf *smlDevInfParse(const char *data, unsigned int length, SmlError **error); SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error); -SmlDevInfCTCapType smlDevInfCTCapTypeFromString(const char *name, SmlError **error); - #endif //_SML_DEVINF_H_ /*@}*/ Modified: trunk/tests/check_devinf.c ============================================================================== --- trunk/tests/check_devinf.c Mon Jun 29 12:29:02 2009 (r1128) +++ trunk/tests/check_devinf.c Mon Jun 29 12:56:37 2009 (r1129) @@ -401,11 +401,11 @@ SmlDevInfCTCapType type; /* SyncML 1.1 */ - type = smlDevInfCTCapTypeFromString(SML_ELEMENT_SIZE, &error); + type = _smlParseDevInfCTCapType(SML_ELEMENT_SIZE, &error); sml_fail_unless(type == SML_DEVINF_CTCAP_SIZE, NULL); /* SyncML 1.1 and 1.2 */ - type = smlDevInfCTCapTypeFromString(SML_ELEMENT_MAXSIZE, &error); + type = _smlParseDevInfCTCapType(SML_ELEMENT_MAXSIZE, &error); sml_fail_unless(type == SML_DEVINF_CTCAP_MAXSIZE, NULL); } END_TEST |
From: <svn...@op...> - 2009-06-29 10:29:11
|
Author: bellmich Date: Mon Jun 29 12:29:02 2009 New Revision: 1128 URL: http://libsyncml.opensync.org/changeset/1128 Log: removed file sml_devinf_internals.h Deleted: trunk/libsyncml/sml_devinf_internals.h Modified: trunk/libsyncml/parser/sml_xml_assm.c trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_devinf.c Modified: trunk/libsyncml/parser/sml_xml_assm.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_assm.c Mon Jun 29 12:26:40 2009 (r1127) +++ trunk/libsyncml/parser/sml_xml_assm.c Mon Jun 29 12:29:02 2009 (r1128) @@ -24,7 +24,6 @@ #include <libsyncml/syncml_internals.h> #include <libsyncml/sml_elements_internals.h> #include <libsyncml/sml_command_internals.h> -#include <libsyncml/sml_devinf_internals.h> #include <libsyncml/sml_session_internals.h> #include "libsyncml/sml_error_internals.h" Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:26:40 2009 (r1127) +++ trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:29:02 2009 (r1128) @@ -24,7 +24,6 @@ #include <libsyncml/syncml_internals.h> #include <libsyncml/sml_elements_internals.h> #include <libsyncml/sml_command_internals.h> -#include <libsyncml/sml_devinf_internals.h> #include <libsyncml/sml_session_internals.h> #include "libsyncml/sml_error_internals.h" Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:26:40 2009 (r1127) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:29:02 2009 (r1128) @@ -22,7 +22,6 @@ #include "syncml.h" #include "syncml_internals.h" -#include "sml_devinf_internals.h" #include "sml_command_internals.h" #include "sml_elements_internals.h" #include "sml_parse_internals.h" |
From: <svn...@op...> - 2009-06-29 10:26:54
|
Author: bellmich Date: Mon Jun 29 12:26:40 2009 New Revision: 1127 URL: http://libsyncml.opensync.org/changeset/1127 Log: moved smlDevInfSyncCapConvert to SmlXmlParser Modified: trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf_internals.h Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:19:28 2009 (r1126) +++ trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:26:40 2009 (r1127) @@ -1931,6 +1931,46 @@ } } +SmlDevInfSyncCap _smlParseDevInfSyncCap(unsigned int id, SmlError **error) +{ + smlTrace(TRACE_ENTRY, "%s(%u, %p)", __func__, id, error); + CHECK_ERROR_REF + SmlDevInfSyncCap result = SML_DEVINF_SYNCTYPE_UNKNOWN; + + switch (id) + { + case SML_DEVINF_SYNCTYPE_TWO_WAY: + result = SML_DEVINF_SYNCTYPE_TWO_WAY; + break; + case SML_DEVINF_SYNCTYPE_SLOW_SYNC: + result = SML_DEVINF_SYNCTYPE_SLOW_SYNC; + break; + case SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_CLIENT: + result = SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_CLIENT; + break; + case SML_DEVINF_SYNCTYPE_REFRESH_FROM_CLIENT: + result = SML_DEVINF_SYNCTYPE_REFRESH_FROM_CLIENT; + break; + case SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_SERVER: + result = SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_SERVER; + break; + case SML_DEVINF_SYNCTYPE_REFRESH_FROM_SERVER: + result = SML_DEVINF_SYNCTYPE_REFRESH_FROM_SERVER; + break; + case SML_DEVINF_SYNCTYPE_SERVER_ALERTED_SYNC: + result = SML_DEVINF_SYNCTYPE_SERVER_ALERTED_SYNC; + break; + default: + smlErrorSet(error, SML_ERROR_GENERIC, + "The synchronization type %u is unknwon.", id); + smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); + return SML_DEVINF_SYNCTYPE_UNKNOWN; + break; + } + smlTrace(TRACE_EXIT, "%s - %u", __func__, result); + return result; +} + /** @brief Start the parsing * * This will set everything up and parse until the SyncHdr @@ -2651,7 +2691,7 @@ if (!_smlXmlParserGetID(parser, &id, SML_ELEMENT_SYNCTYPE, error)) goto error; id = 1 << (id - 1); - SmlDevInfSyncCap synccap = smlDevInfSyncCapConvert(id, error); + SmlDevInfSyncCap synccap = _smlParseDevInfSyncCap(id, error); if (synccap == SML_DEVINF_SYNCTYPE_UNKNOWN && error != NULL) goto error; Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:19:28 2009 (r1126) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:26:40 2009 (r1127) @@ -267,43 +267,3 @@ } -SmlDevInfSyncCap smlDevInfSyncCapConvert(unsigned int id, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%u, %p)", __func__, id, error); - CHECK_ERROR_REF - SmlDevInfSyncCap result = SML_DEVINF_SYNCTYPE_UNKNOWN; - - switch (id) - { - case SML_DEVINF_SYNCTYPE_TWO_WAY: - result = SML_DEVINF_SYNCTYPE_TWO_WAY; - break; - case SML_DEVINF_SYNCTYPE_SLOW_SYNC: - result = SML_DEVINF_SYNCTYPE_SLOW_SYNC; - break; - case SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_CLIENT: - result = SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_CLIENT; - break; - case SML_DEVINF_SYNCTYPE_REFRESH_FROM_CLIENT: - result = SML_DEVINF_SYNCTYPE_REFRESH_FROM_CLIENT; - break; - case SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_SERVER: - result = SML_DEVINF_SYNCTYPE_ONE_WAY_FROM_SERVER; - break; - case SML_DEVINF_SYNCTYPE_REFRESH_FROM_SERVER: - result = SML_DEVINF_SYNCTYPE_REFRESH_FROM_SERVER; - break; - case SML_DEVINF_SYNCTYPE_SERVER_ALERTED_SYNC: - result = SML_DEVINF_SYNCTYPE_SERVER_ALERTED_SYNC; - break; - default: - smlErrorSet(error, SML_ERROR_GENERIC, - "The synchronization type %u is unknwon.", id); - smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); - return SML_DEVINF_SYNCTYPE_UNKNOWN; - break; - } - smlTrace(TRACE_EXIT, "%s - %u", __func__, result); - return result; -} - Modified: trunk/libsyncml/sml_devinf_internals.h ============================================================================== --- trunk/libsyncml/sml_devinf_internals.h Mon Jun 29 12:19:28 2009 (r1126) +++ trunk/libsyncml/sml_devinf_internals.h Mon Jun 29 12:26:40 2009 (r1127) @@ -30,7 +30,6 @@ #ifndef _SML_DEVINF_INTERNALS_H_ #define _SML_DEVINF_INTERNALS_H_ -SmlDevInfSyncCap smlDevInfSyncCapConvert(unsigned int id, SmlError **error); #endif //_SML_DEVINF_INTERNALS_H_ |
From: <svn...@op...> - 2009-06-29 10:19:37
|
Author: bellmich Date: Mon Jun 29 12:19:28 2009 New Revision: 1126 URL: http://libsyncml.opensync.org/changeset/1126 Log: moved smlDevInfDevTypeFromString to SmlXmlParser Modified: trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:14:25 2009 (r1125) +++ trunk/libsyncml/parser/sml_xml_parse.c Mon Jun 29 12:19:28 2009 (r1126) @@ -1907,6 +1907,30 @@ return TRUE; } +SmlDevInfDevTyp _smlParseDevInfDevType(const char *name, SmlError **error) +{ + CHECK_ERROR_REF + + if (!strcmp(name, SML_ELEMENT_DEVTYP_PAGER)) { + return SML_DEVINF_DEVTYP_PAGER; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_HANDHELD)) { + return SML_DEVINF_DEVTYP_HANDHELD; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PDA)) { + return SML_DEVINF_DEVTYP_PDA; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PHONE)) { + return SML_DEVINF_DEVTYP_PHONE; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SMARTPHONE)) { + return SML_DEVINF_DEVTYP_SMARTPHONE; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SERVER)) { + return SML_DEVINF_DEVTYP_SERVER; + } else if (!strcmp(name, SML_ELEMENT_DEVTYP_WORKSTATION)) { + return SML_DEVINF_DEVTYP_WORKSTATION; + } else { + smlErrorSet(error, SML_ERROR_GENERIC, "The device information DevTyp \"%s\" is unknown.", name); + return SML_DEVINF_DEVTYP_UNKNOWN; + } +} + /** @brief Start the parsing * * This will set everything up and parse until the SyncHdr @@ -3549,7 +3573,7 @@ if (!_smlXmlParserGetString(parser, &devtype, SML_ELEMENT_DEVTYP, error)) goto error; - sml_dev_inf_set_dev_typ(devinf, smlDevInfDevTypeFromString(devtype, error)); + sml_dev_inf_set_dev_typ(devinf, _smlParseDevInfDevType(devtype, error)); smlSafeCFree(&devtype); if (sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_UNKNOWN) Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:14:25 2009 (r1125) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:19:28 2009 (r1126) @@ -30,30 +30,6 @@ #include "parser/sml_xml_parse.h" #include "sml_error_internals.h" -SmlDevInfDevTyp smlDevInfDevTypeFromString(const char *name, SmlError **error) -{ - CHECK_ERROR_REF - - if (!strcmp(name, SML_ELEMENT_DEVTYP_PAGER)) { - return SML_DEVINF_DEVTYP_PAGER; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_HANDHELD)) { - return SML_DEVINF_DEVTYP_HANDHELD; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PDA)) { - return SML_DEVINF_DEVTYP_PDA; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PHONE)) { - return SML_DEVINF_DEVTYP_PHONE; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SMARTPHONE)) { - return SML_DEVINF_DEVTYP_SMARTPHONE; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SERVER)) { - return SML_DEVINF_DEVTYP_SERVER; - } else if (!strcmp(name, SML_ELEMENT_DEVTYP_WORKSTATION)) { - return SML_DEVINF_DEVTYP_WORKSTATION; - } - - smlErrorSet(error, SML_ERROR_GENERIC, "Unknown devinf type name \"%s\"", name); - return SML_DEVINF_DEVTYP_UNKNOWN; -} - void smlDevInfConfigureSession(SmlDevInf *devinf, SmlSession *session) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, devinf, session); Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 12:14:25 2009 (r1125) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 12:19:28 2009 (r1126) @@ -37,8 +37,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf_data_store.h> #include <libsyncml/dev_inf_api/sml_dev_inf.h> -SmlDevInfDevTyp smlDevInfDevTypeFromString(const char *name, SmlError **error); - SmlBool smlDevInfAssemble(SmlDevInf *devinf, char **data, unsigned int *size, SmlError **error); SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); SmlCommand *smlDevInfNewPut(SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); |
From: <svn...@op...> - 2009-06-29 10:14:34
|
Author: bellmich Date: Mon Jun 29 12:14:25 2009 New Revision: 1125 URL: http://libsyncml.opensync.org/changeset/1125 Log: moved smlDevInfDevTypeToString to SmlXmlParser Modified: trunk/libsyncml/parser/sml_xml_assm.c trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h Modified: trunk/libsyncml/parser/sml_xml_assm.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_assm.c Mon Jun 29 12:05:07 2009 (r1124) +++ trunk/libsyncml/parser/sml_xml_assm.c Mon Jun 29 12:14:25 2009 (r1125) @@ -207,6 +207,33 @@ return FALSE; } +static const char *_smlAssembleDevInfDevType(SmlDevInfDevTyp type, SmlError **error) +{ + CHECK_ERROR_REF + + switch (type) { + case SML_DEVINF_DEVTYP_PAGER: + return SML_ELEMENT_DEVTYP_PAGER; + case SML_DEVINF_DEVTYP_HANDHELD: + return SML_ELEMENT_DEVTYP_HANDHELD; + case SML_DEVINF_DEVTYP_PDA: + return SML_ELEMENT_DEVTYP_PDA; + case SML_DEVINF_DEVTYP_PHONE: + return SML_ELEMENT_DEVTYP_PHONE; + case SML_DEVINF_DEVTYP_SMARTPHONE: + return SML_ELEMENT_DEVTYP_SMARTPHONE; + case SML_DEVINF_DEVTYP_SERVER: + return SML_ELEMENT_DEVTYP_SERVER; + case SML_DEVINF_DEVTYP_WORKSTATION: + return SML_ELEMENT_DEVTYP_WORKSTATION; + default: + smlErrorSet(error, SML_ERROR_GENERIC, "The devince information DevTyp \"%i\" is unknown.", type); + /* fall through! */ + } + + return NULL; +} + SmlBool smlLocationAssemble(SmlLocation *location, SmlXmlAssembler *assm, const char *name, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %s, %p)", __func__, location, assm, VA_STRING(name), error); @@ -2515,7 +2542,7 @@ goto error_free_writer; //Devtyp - const char *devtype = smlDevInfDevTypeToString(sml_dev_inf_get_dev_typ(devinf), error); + const char *devtype = _smlAssembleDevInfDevType(sml_dev_inf_get_dev_typ(devinf), error); if (!devtype) goto error_free_writer; Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 12:05:07 2009 (r1124) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:14:25 2009 (r1125) @@ -54,33 +54,6 @@ return SML_DEVINF_DEVTYP_UNKNOWN; } -const char *smlDevInfDevTypeToString(SmlDevInfDevTyp type, SmlError **error) -{ - CHECK_ERROR_REF - - switch (type) { - case SML_DEVINF_DEVTYP_PAGER: - return SML_ELEMENT_DEVTYP_PAGER; - case SML_DEVINF_DEVTYP_HANDHELD: - return SML_ELEMENT_DEVTYP_HANDHELD; - case SML_DEVINF_DEVTYP_PDA: - return SML_ELEMENT_DEVTYP_PDA; - case SML_DEVINF_DEVTYP_PHONE: - return SML_ELEMENT_DEVTYP_PHONE; - case SML_DEVINF_DEVTYP_SMARTPHONE: - return SML_ELEMENT_DEVTYP_SMARTPHONE; - case SML_DEVINF_DEVTYP_SERVER: - return SML_ELEMENT_DEVTYP_SERVER; - case SML_DEVINF_DEVTYP_WORKSTATION: - return SML_ELEMENT_DEVTYP_WORKSTATION; - case SML_DEVINF_DEVTYP_UNKNOWN: - smlErrorSet(error, SML_ERROR_GENERIC, "Unknown devinf type \"%i\"", type); - /* fall through! */ - } - - return NULL; -} - void smlDevInfConfigureSession(SmlDevInf *devinf, SmlSession *session) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, devinf, session); Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 12:05:07 2009 (r1124) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 12:14:25 2009 (r1125) @@ -38,7 +38,6 @@ #include <libsyncml/dev_inf_api/sml_dev_inf.h> SmlDevInfDevTyp smlDevInfDevTypeFromString(const char *name, SmlError **error); -const char *smlDevInfDevTypeToString(SmlDevInfDevTyp type, SmlError **error); SmlBool smlDevInfAssemble(SmlDevInf *devinf, char **data, unsigned int *size, SmlError **error); SmlCommand *smlDevInfNewResult(SmlCommand *cmd, SmlDevInf *devinf, SmlDevInfVersion version, SmlError **error); |
From: <svn...@op...> - 2009-06-29 10:05:23
|
Author: bellmich Date: Mon Jun 29 12:05:07 2009 New Revision: 1124 URL: http://libsyncml.opensync.org/changeset/1124 Log: removed unused function smlDevInfCTCapTypeToString Modified: trunk/libsyncml/sml_devinf.c trunk/libsyncml/sml_devinf.h Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Mon Jun 29 11:49:22 2009 (r1123) +++ trunk/libsyncml/sml_devinf.c Mon Jun 29 12:05:07 2009 (r1124) @@ -318,45 +318,6 @@ } -const char *smlDevInfCTCapTypeToString(SmlDevInfCTCapType type, SmlError **error) -{ - CHECK_ERROR_REF - - switch (type) { - case SML_DEVINF_CTCAP_CTTYPE: - return SML_ELEMENT_CTTYPE; - case SML_DEVINF_CTCAP_PROPNAME: - return SML_ELEMENT_PROPNAME; - case SML_DEVINF_CTCAP_VALENUM: - return SML_ELEMENT_VALENUM; - case SML_DEVINF_CTCAP_DATATYPE: - return SML_ELEMENT_DATATYPE; - case SML_DEVINF_CTCAP_SIZE: - return SML_ELEMENT_SIZE; - case SML_DEVINF_CTCAP_DISPLAYNAME: - return SML_ELEMENT_DISPLAYNAME; - case SML_DEVINF_CTCAP_PARAMNAME: - return SML_ELEMENT_PARAMNAME; - case SML_DEVINF_CTCAP_NOTRUNCATE: - return SML_ELEMENT_NOTRUNCATE; - case SML_DEVINF_CTCAP_MAXOCCUR: - return SML_ELEMENT_MAXOCCUR; - case SML_DEVINF_CTCAP_VERCT: - return SML_ELEMENT_VERCT; - case SML_DEVINF_CTCAP_PROPERTY: - return SML_ELEMENT_PROPERTY; - case SML_DEVINF_CTCAP_PROPPARAM: - return SML_ELEMENT_PROPPARAM; - case SML_DEVINF_CTCAP_MAXSIZE: - return SML_ELEMENT_MAXSIZE; - case SML_DEVINF_CTCAP_UNKNOWN: - smlErrorSet(error, SML_ERROR_GENERIC, "Unknown ctcap type \"%i\"", type); - /* fall through! */ - } - - return NULL; -} - SmlDevInfSyncCap smlDevInfSyncCapConvert(unsigned int id, SmlError **error) { smlTrace(TRACE_ENTRY, "%s(%u, %p)", __func__, id, error); Modified: trunk/libsyncml/sml_devinf.h ============================================================================== --- trunk/libsyncml/sml_devinf.h Mon Jun 29 11:49:22 2009 (r1123) +++ trunk/libsyncml/sml_devinf.h Mon Jun 29 12:05:07 2009 (r1124) @@ -51,7 +51,6 @@ SmlDevInf *smlDevInfFromResult(SmlCommand *result, SmlError **error); SmlDevInfCTCapType smlDevInfCTCapTypeFromString(const char *name, SmlError **error); -const char *smlDevInfCTCapTypeToString(SmlDevInfCTCapType type, SmlError **error); #endif //_SML_DEVINF_H_ |
From: <svn...@op...> - 2009-06-29 09:49:33
|
Author: bellmich Date: Mon Jun 29 11:49:22 2009 New Revision: 1123 URL: http://libsyncml.opensync.org/changeset/1123 Log: - added missing tests for the SmlDevInf object - fixed found bugs in the SmlDevInf object Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.c trunk/tests/CMakeLists.txt trunk/tests/check_dev_inf.c Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.c ============================================================================== --- trunk/libsyncml/dev_inf_api/sml_dev_inf.c Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/libsyncml/dev_inf_api/sml_dev_inf.c Mon Jun 29 11:49:22 2009 (r1123) @@ -781,6 +781,11 @@ sml_dev_inf_get_support_utc (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_utc; } @@ -811,6 +816,11 @@ sml_dev_inf_get_support_large_objs (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_large_objs; } @@ -841,6 +851,11 @@ sml_dev_inf_get_support_number_of_changes (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_number_of_changes; } @@ -1014,11 +1029,10 @@ /* SyncML 1.0 requirements */ - if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) { - sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify UTC support."); - sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify large object support."); - sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify number of changes support."); - } + /* SyncML 1.0 does not support UTC, SupportLargeObjs and SupportNumberOfChanges. + * Nevertheless this is no problem because the getter functions of these + * properties simply return FALSE if SyncML 1.0 is used. + */ /* SyncML 1.2 requirements */ @@ -1030,12 +1044,13 @@ sml_return_val_error_if_fail (self->priv->hwv != NULL, FALSE, error, SML_ERROR_GENERIC, "The hardware version must be set."); } - /* SyncML server requirements */ + /* SyncML server requirements (except of SyncML 1.0) */ - if (self->priv->dev_typ == SML_DEVINF_DEVTYP_SERVER) { - sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "A server must support UTC."); - sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "A server must support large objects."); - sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "A server must support number of changes."); + if (self->priv->dev_typ == SML_DEVINF_DEVTYP_SERVER && + self->priv->ver_dtd >= SML_DEVINF_VERSION_11) { + sml_return_val_error_if_fail (self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "A server must support UTC."); + sml_return_val_error_if_fail (self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "A server must support large objects."); + sml_return_val_error_if_fail (self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "A server must support number of changes."); } return TRUE; Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/tests/CMakeLists.txt Mon Jun 29 11:49:22 2009 (r1123) @@ -310,10 +310,20 @@ SML_ADD_TESTCASE( dev_inf_option_fwv ) SML_ADD_TESTCASE( dev_inf_option_swv ) SML_ADD_TESTCASE( dev_inf_option_hwv ) + SML_ADD_TESTCASE( dev_inf_option_support_utc ) + SML_ADD_TESTCASE( dev_inf_option_support_large_objs ) + SML_ADD_TESTCASE( dev_inf_option_support_number_of_changes ) SML_ADD_TESTCASE( dev_inf_enforce_data_stores ) SML_ADD_TESTCASE( dev_inf_enforce_ctcaps ) SML_ADD_TESTCASE( dev_inf_compliance_error ) SML_ADD_TESTCASE( dev_inf_compliance_1_0 ) + SML_ADD_TESTCASE( dev_inf_compliance_1_1 ) + SML_ADD_TESTCASE( dev_inf_compliance_1_2 ) + SML_ADD_TESTCASE( dev_inf_overdefined_1_0 ) + SML_ADD_TESTCASE( dev_inf_filtered_1_0 ) + SML_ADD_TESTCASE( dev_inf_server_1_0 ) + SML_ADD_TESTCASE( dev_inf_server_1_1 ) + SML_ADD_TESTCASE( dev_inf_server_1_2 ) SML_END_TEST() SML_START_TEST( "DevInfHelper" devinf check_devinf.c ${TEST_TARGET_LIBRARIES} ) Modified: trunk/tests/check_dev_inf.c ============================================================================== --- trunk/tests/check_dev_inf.c Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/tests/check_dev_inf.c Mon Jun 29 11:49:22 2009 (r1123) @@ -340,6 +340,57 @@ } END_TEST +START_TEST (dev_inf_option_support_utc) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be FALSE by default."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == TRUE, "The UTC support must be set to TRUE."); + sml_dev_inf_set_support_utc(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + +START_TEST (dev_inf_option_support_large_objs) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be FALSE by default."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == TRUE, "The large objects support must be set to TRUE."); + sml_dev_inf_set_support_large_objs(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + +START_TEST (dev_inf_option_support_number_of_changes) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be FALSE by default."); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == TRUE, "The number of changes support must be set to TRUE."); + sml_dev_inf_set_support_number_of_changes(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + START_TEST (dev_inf_enforce_data_stores) { g_type_init(); @@ -486,8 +537,8 @@ sml_fail_unless(devinf != NULL, NULL); #define CHECK_COMPLIANCE_ERROR \ - sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, NULL); \ - sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, NULL); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, "missing expected error (&error == NULL)"); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, "missing expected error (&error != NULL)"); \ sml_fail_unless(error != NULL, "The error must be set if an error appears."); \ g_error_free(error); \ error = NULL; \ @@ -566,14 +617,424 @@ } END_TEST -/* +START_TEST (dev_inf_compliance_1_1) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing VerDTD, DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + CHECK_COMPLIANCE_ERROR + + /* missing DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* missing DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing data store */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_compliance_1_2) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing VerDTD */ + INIT_DEV_INF_OBJECT + CHECK_COMPLIANCE_ERROR + + /* missing Man */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + CHECK_COMPLIANCE_ERROR + + /* missing Mod */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing FwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing SwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing HwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevID */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevTyp */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DataStore */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_overdefined_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + /* set elements which are unknown to SyncML 1.0 */ - basic 1.0 profile with validation - basic 1.1 profile with validation - basic 1.2 profile with validation - overfilled 1.0 profile with validation - get with overfilled 1.0 profile (filtered information) -*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_filtered_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* set elements which are unknown to SyncML 1.0 */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + + /* check the filtering mechanism for unknown elements */ + + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be filtered."); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be filtered."); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be filtered."); + + /* compliant */ + + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* compliant - without UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_1) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing UTC */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportLargeObjs */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_2) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing UTC */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportLargeObjs */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST @SML_TESTCASE_CODE@ |
From: <svn...@op...> - 2009-06-27 21:00:15
|
Author: scriptor Date: Sat Jun 27 22:58:43 2009 New Revision: 5688 URL: http://www.opensync.org/changeset/5688 Log: Added checks for directories that are required by the file-sync plugin as used by this test suite. Modified: plugins/ldap-sync/tests/check_osynctool_common.inc Modified: plugins/ldap-sync/tests/check_osynctool_common.inc ============================================================================== --- plugins/ldap-sync/tests/check_osynctool_common.inc Fri Jun 26 17:44:51 2009 (r5687) +++ plugins/ldap-sync/tests/check_osynctool_common.inc Sat Jun 27 22:58:43 2009 (r5688) @@ -231,6 +231,8 @@ exit 1; fi + check_file_directories; + to_be_found="" if test "$DN" == "$CONTACT1_DN" -o "$DN2" == "$CONTACT1_DN"; then @@ -577,6 +579,43 @@ } +do_check_file_directories() +{ + target_file="$1"; + + if test -n "$target_file"; then + if test ! -d `dirname ${target_file}`; then + mkdir -p `dirname ${target_file}` + if test ! -d `dirname ${target_file}`; then + echo "${FUNCNAME}(): ERROR: Creating directory for \${target_file} has failed. Returning 1." + return 1; + fi + fi + else + echo "${FUNCNAME}(): WARNING: \${target_file} is empty."; + return 1; + fi + + return 0; +} + + + +check_file_directories() +{ + for f in "$CONTACT1_FILE" "$CONTACT2_FILE" "$EVENT1_FILE" "$TODO1_FILE" "$NOTE1_FILE" "$NOTE2_FILE"; do + do_check_file_directories $f; + rv=$?; + if test $rv -ne 0; then + echo "${FUNCNAME}(): ERROR with \$f = \"$f\". Exiting." + exit 1; + fi; + done +} + + + + configure_plugin() { @@ -1030,6 +1069,8 @@ remove_contact_files() { + check_file_directories; + if test -z "$CONTACT1_FILE"; then echo "${FUNCNAME}(): ERROR: \$CONTACT1_FILE is empty. Ignoring." elif test -f "$CONTACT1_FILE"; then @@ -1165,6 +1206,7 @@ fi + check_file_directories; if test "$objtype" == "contact"; then @@ -1237,6 +1279,8 @@ fi + check_file_directories; + if test "$objtype" == "contact"; then if test ! -f "$CONTACT1_FILE"; then @@ -1340,7 +1384,7 @@ fi - + check_file_directories; if test "$objtype" == "contact"; then |
From: <svn...@op...> - 2009-06-27 21:00:15
|
Author: scriptor Date: Sat Jun 27 22:58:53 2009 New Revision: 5689 URL: http://www.opensync.org/changeset/5689 Log: Adjusted arguments list with calls to osync_format_env_register_converter() according to http://opensync.org/changeset/5671 See also http://opensync.org/ticket/1087 Modified: plugins/ldap-sync/src/ldap_format.c Modified: plugins/ldap-sync/src/ldap_format.c ============================================================================== --- plugins/ldap-sync/src/ldap_format.c Sat Jun 27 22:58:43 2009 (r5688) +++ plugins/ldap-sync/src/ldap_format.c Sat Jun 27 22:58:53 2009 (r5689) @@ -7014,7 +7014,7 @@ } #ifdef ENABLE_DETECTOR_FUNCTIONS - osync_format_env_register_converter(env, conv); + osync_format_env_register_converter(env, conv, error); #endif osync_converter_unref(conv); @@ -7055,7 +7055,7 @@ } /* register converter */ - osync_format_env_register_converter(env, conv); + osync_format_env_register_converter(env, conv, error); osync_converter_unref(conv); osync_trace(TRACE_INTERNAL, "%s:%i:%s(): Registering conversion from \"%s\" to \"%s\" for objtype \"%s\" with the converter function being located at address %p\n", __FILE__, __LINE__, __func__, format_name, other_format_name, objtype, converter1); @@ -7071,7 +7071,7 @@ } /* register converter */ - osync_format_env_register_converter(env, conv); + osync_format_env_register_converter(env, conv, error); osync_converter_unref(conv); osync_trace(TRACE_INTERNAL, "%s:%i:%s(): Registering conversion from \"%s\" to \"%s\" for objtype \"%s\" with the converter function being located at address %p\n", __FILE__, __LINE__, __func__, other_format_name, format_name, objtype, converter2); |
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; |
From: <svn...@op...> - 2009-06-26 15:42:41
|
Author: dgollub Date: Fri Jun 26 17:42:37 2009 New Revision: 5686 URL: http://www.opensync.org/changeset/5686 Log: evo2-sync branch for #1084 Added: branches/ticket1084/evo2-sync/ - copied from r5685, plugins/evolution2/ |
From: <svn...@op...> - 2009-06-26 15:41:45
|
Author: dgollub Date: Fri Jun 26 17:41:41 2009 New Revision: 5685 URL: http://www.opensync.org/changeset/5685 Log: osynctool branch #1084 Added: branches/ticket1084/osynctool/ - copied from r5684, osynctool/trunk/ |
From: <svn...@op...> - 2009-06-26 15:40:36
|
Author: dgollub Date: Fri Jun 26 17:40:27 2009 New Revision: 5684 URL: http://www.opensync.org/changeset/5684 Log: Branch for #1084 incluedes temp. plugins and osynctool Added: branches/ticket1084/ |
From: <svn...@op...> - 2009-06-26 13:08:58
|
Author: bellmich Date: Fri Jun 26 14:31:29 2009 New Revision: 1120 URL: http://libsyncml.opensync.org/changeset/1120 Log: - SmlDevInfDevTyp values were changed from _DEVTYPE_ to _DEVTYP_ because the SyncML element is DevTyp - SML_ELEMENT_DEVTYPE => SML_ELEMENT_DEVTYP (please see above) - fixed the checks of unknown SyncML 1.0 fields - added a test for compliance error handling - added a test for SyncML 1.0 compliance testing Modified: trunk/libsyncml/data_sync_api/data_sync_client.c trunk/libsyncml/data_sync_api/data_sync_devinf.c trunk/libsyncml/data_sync_api/data_sync_server.c trunk/libsyncml/dev_inf_api/sml_dev_inf.c trunk/libsyncml/dev_inf_api/sml_dev_inf.h trunk/libsyncml/dev_inf_api/sml_dev_inf_enum_types.c trunk/libsyncml/parser/sml_xml_assm.c trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_defines.h trunk/libsyncml/sml_devinf.c trunk/tests/CMakeLists.txt trunk/tests/check_dev_inf.c trunk/tests/check_devinf.c trunk/tests/check_sync.c trunk/tests/check_xml_assembler.c trunk/tools/syncml-obex-client.c Modified: trunk/libsyncml/data_sync_api/data_sync_client.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_client.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/data_sync_api/data_sync_client.c Fri Jun 26 14:31:29 2009 (r1120) @@ -316,7 +316,7 @@ dsObject->funcDatastoreAlert = smlDataSyncClientAlertCallback; /* prepare device info */ - if (!smlDataSyncDevInfInit(dsObject, SML_DEVINF_DEVTYPE_WORKSTATION, error)) + if (!smlDataSyncDevInfInit(dsObject, SML_DEVINF_DEVTYP_WORKSTATION, error)) goto error; /* prepare datastore server */ Modified: trunk/libsyncml/data_sync_api/data_sync_devinf.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_devinf.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/data_sync_api/data_sync_devinf.c Fri Jun 26 14:31:29 2009 (r1120) @@ -769,7 +769,7 @@ } if (!sml_dev_inf_set_dev_id(devinf, dsObject->identifier, &gerror)) goto error; - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_SMARTPHONE); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SMARTPHONE); if (!sml_dev_inf_set_man(devinf, dsObject->fakeManufacturer, &gerror)) goto error; Modified: trunk/libsyncml/data_sync_api/data_sync_server.c ============================================================================== --- trunk/libsyncml/data_sync_api/data_sync_server.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/data_sync_api/data_sync_server.c Fri Jun 26 14:31:29 2009 (r1120) @@ -238,7 +238,7 @@ goto error; /* prepare device info */ - if (!smlDataSyncDevInfInit(dsObject, SML_DEVINF_DEVTYPE_SERVER, error)) + if (!smlDataSyncDevInfInit(dsObject, SML_DEVINF_DEVTYP_SERVER, error)) goto error; /* prepare datastore server */ Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.c ============================================================================== --- trunk/libsyncml/dev_inf_api/sml_dev_inf.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/dev_inf_api/sml_dev_inf.c Fri Jun 26 14:31:29 2009 (r1120) @@ -328,7 +328,7 @@ "DeviceType", "This is the type of the device", SML_DEV_INF_TYPE_DEV_INF_DEV_TYP, - SML_DEVINF_DEVTYPE_UNKNOWN, + SML_DEVINF_DEVTYP_UNKNOWN, G_PARAM_READWRITE)); /** * SmlDevInf:SupportUTC: @@ -744,7 +744,7 @@ SmlDevInfDevTyp sml_dev_inf_get_dev_typ (SmlDevInf *self) { - g_return_val_if_fail (SML_IS_DEV_INF (self), SML_DEVINF_DEVTYPE_UNKNOWN); + g_return_val_if_fail (SML_IS_DEV_INF (self), SML_DEVINF_DEVTYP_UNKNOWN); return self->priv->dev_typ; } @@ -764,7 +764,7 @@ /* The device ID is a minimum requirement. * It is not optional. */ - g_return_if_fail (dev_typ != SML_DEVINF_DEVTYPE_UNKNOWN); + g_return_if_fail (dev_typ != SML_DEVINF_DEVTYP_UNKNOWN); self->priv->dev_typ = dev_typ; } @@ -1007,17 +1007,17 @@ /* Common SyncML requirements */ - sml_return_val_error_if_fail (self->priv->ver_dtd == SML_DEVINF_VERSION_UNKNOWN, FALSE, error, SML_ERROR_GENERIC, "The VerDTD must be set."); + sml_return_val_error_if_fail (self->priv->ver_dtd != SML_DEVINF_VERSION_UNKNOWN, FALSE, error, SML_ERROR_GENERIC, "The VerDTD must be set."); sml_return_val_error_if_fail (self->priv->dev_id != NULL, FALSE, error, SML_ERROR_GENERIC, "The device ID must be set."); - sml_return_val_error_if_fail (self->priv->dev_typ != SML_DEVINF_DEVTYPE_UNKNOWN, FALSE, error, SML_ERROR_GENERIC, "The device type must be set."); + sml_return_val_error_if_fail (self->priv->dev_typ != SML_DEVINF_DEVTYP_UNKNOWN, FALSE, error, SML_ERROR_GENERIC, "The device type must be set."); sml_return_val_error_if_fail (self->priv->data_stores != NULL, FALSE, error, SML_ERROR_GENERIC, "There must be at minimum one data store."); /* SyncML 1.0 requirements */ if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) { - sml_return_val_error_if_fail (self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify UTC support."); - sml_return_val_error_if_fail (self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify large object support."); - sml_return_val_error_if_fail (self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify number of changes support."); + sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify UTC support."); + sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify large object support."); + sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify number of changes support."); } /* SyncML 1.2 requirements */ @@ -1032,7 +1032,7 @@ /* SyncML server requirements */ - if (self->priv->dev_typ == SML_DEVINF_DEVTYPE_SERVER) { + if (self->priv->dev_typ == SML_DEVINF_DEVTYP_SERVER) { sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "A server must support UTC."); sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "A server must support large objects."); sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "A server must support number of changes."); Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.h ============================================================================== --- trunk/libsyncml/dev_inf_api/sml_dev_inf.h Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/dev_inf_api/sml_dev_inf.h Fri Jun 26 14:31:29 2009 (r1120) @@ -46,14 +46,14 @@ } SmlDevInfVersion; typedef enum { - SML_DEVINF_DEVTYPE_UNKNOWN = 0, - SML_DEVINF_DEVTYPE_PAGER = 1, - SML_DEVINF_DEVTYPE_HANDHELD = 2, - SML_DEVINF_DEVTYPE_PDA = 3, - SML_DEVINF_DEVTYPE_PHONE = 4, - SML_DEVINF_DEVTYPE_SMARTPHONE = 5, - SML_DEVINF_DEVTYPE_SERVER = 6, - SML_DEVINF_DEVTYPE_WORKSTATION = 7 + SML_DEVINF_DEVTYP_UNKNOWN = 0, + SML_DEVINF_DEVTYP_PAGER = 1, + SML_DEVINF_DEVTYP_HANDHELD = 2, + SML_DEVINF_DEVTYP_PDA = 3, + SML_DEVINF_DEVTYP_PHONE = 4, + SML_DEVINF_DEVTYP_SMARTPHONE = 5, + SML_DEVINF_DEVTYP_SERVER = 6, + SML_DEVINF_DEVTYP_WORKSTATION = 7 } SmlDevInfDevTyp; typedef struct _SmlDevInf SmlDevInf; Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf_enum_types.c ============================================================================== --- trunk/libsyncml/dev_inf_api/sml_dev_inf_enum_types.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/dev_inf_api/sml_dev_inf_enum_types.c Fri Jun 26 14:31:29 2009 (r1120) @@ -37,14 +37,14 @@ static GType etype = 0; if (G_UNLIKELY (etype == 0)) { static const GEnumValue values[] = { - { SML_DEVINF_DEVTYPE_UNKNOWN, "SML_DEVINF_DEVTYPE_UNKNOWN", "unknown" }, - { SML_DEVINF_DEVTYPE_PAGER, "SML_DEVINF_DEVTYPE_PAGER", "pager" }, - { SML_DEVINF_DEVTYPE_HANDHELD, "SML_DEVINF_DEVTYPE_HANDHELD", "handheld" }, - { SML_DEVINF_DEVTYPE_PDA, "SML_DEVINF_DEVTYPE_PDA", "pda" }, - { SML_DEVINF_DEVTYPE_PHONE, "SML_DEVINF_DEVTYPE_PHONE", "phone" }, - { SML_DEVINF_DEVTYPE_SMARTPHONE, "SML_DEVINF_DEVTYPE_SMARTPHONE", "smartphone" }, - { SML_DEVINF_DEVTYPE_SERVER, "SML_DEVINF_DEVTYPE_SERVER", "server" }, - { SML_DEVINF_DEVTYPE_WORKSTATION, "SML_DEVINF_DEVTYPE_WORKSTATION", "workstation" }, + { SML_DEVINF_DEVTYP_UNKNOWN, "SML_DEVINF_DEVTYP_UNKNOWN", "unknown" }, + { SML_DEVINF_DEVTYP_PAGER, "SML_DEVINF_DEVTYP_PAGER", "pager" }, + { SML_DEVINF_DEVTYP_HANDHELD, "SML_DEVINF_DEVTYP_HANDHELD", "handheld" }, + { SML_DEVINF_DEVTYP_PDA, "SML_DEVINF_DEVTYP_PDA", "pda" }, + { SML_DEVINF_DEVTYP_PHONE, "SML_DEVINF_DEVTYP_PHONE", "phone" }, + { SML_DEVINF_DEVTYP_SMARTPHONE, "SML_DEVINF_DEVTYP_SMARTPHONE", "smartphone" }, + { SML_DEVINF_DEVTYP_SERVER, "SML_DEVINF_DEVTYP_SERVER", "server" }, + { SML_DEVINF_DEVTYP_WORKSTATION, "SML_DEVINF_DEVTYP_WORKSTATION", "workstation" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("SmlDevInfDevTyp"), values); Modified: trunk/libsyncml/parser/sml_xml_assm.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_assm.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/parser/sml_xml_assm.c Fri Jun 26 14:31:29 2009 (r1120) @@ -2519,7 +2519,7 @@ if (!devtype) goto error_free_writer; - if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_DEVTYPE, devtype, error)) + if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_DEVTYP, devtype, error)) goto error_free_writer; //UTC (>= 1.1) Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/parser/sml_xml_parse.c Fri Jun 26 14:31:29 2009 (r1120) @@ -3544,15 +3544,15 @@ if (!sml_dev_inf_set_dev_id(devinf, devid, &gerror)) goto error; smlSafeCFree(&devid); - } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_DEVTYPE)) { + } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_DEVTYP)) { char *devtype = NULL; - if (!_smlXmlParserGetString(parser, &devtype, SML_ELEMENT_DEVTYPE, error)) + if (!_smlXmlParserGetString(parser, &devtype, SML_ELEMENT_DEVTYP, error)) goto error; sml_dev_inf_set_dev_typ(devinf, smlDevInfDevTypeFromString(devtype, error)); smlSafeCFree(&devtype); - if (sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYPE_UNKNOWN) + if (sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_UNKNOWN) goto error; } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_UTC)) { if (sml_dev_inf_get_ver_dtd(devinf) == SML_DEVINF_VERSION_10) { Modified: trunk/libsyncml/sml_defines.h ============================================================================== --- trunk/libsyncml/sml_defines.h Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/sml_defines.h Fri Jun 26 14:31:29 2009 (r1120) @@ -92,7 +92,7 @@ #define SML_ELEMENT_DATATYPE "DataType" #define SML_ELEMENT_DEVID "DevID" #define SML_ELEMENT_DEVINF "DevInf" -#define SML_ELEMENT_DEVTYPE "DevTyp" +#define SML_ELEMENT_DEVTYP "DevTyp" #define SML_ELEMENT_DISPLAYNAME "DisplayName" #define SML_ELEMENT_DSMEM "DSMem" #define SML_ELEMENT_EXT "Ext" Modified: trunk/libsyncml/sml_devinf.c ============================================================================== --- trunk/libsyncml/sml_devinf.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/libsyncml/sml_devinf.c Fri Jun 26 14:31:29 2009 (r1120) @@ -35,23 +35,23 @@ CHECK_ERROR_REF if (!strcmp(name, SML_ELEMENT_DEVTYP_PAGER)) { - return SML_DEVINF_DEVTYPE_PAGER; + return SML_DEVINF_DEVTYP_PAGER; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_HANDHELD)) { - return SML_DEVINF_DEVTYPE_HANDHELD; + return SML_DEVINF_DEVTYP_HANDHELD; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PDA)) { - return SML_DEVINF_DEVTYPE_PDA; + return SML_DEVINF_DEVTYP_PDA; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_PHONE)) { - return SML_DEVINF_DEVTYPE_PHONE; + return SML_DEVINF_DEVTYP_PHONE; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SMARTPHONE)) { - return SML_DEVINF_DEVTYPE_SMARTPHONE; + return SML_DEVINF_DEVTYP_SMARTPHONE; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_SERVER)) { - return SML_DEVINF_DEVTYPE_SERVER; + return SML_DEVINF_DEVTYP_SERVER; } else if (!strcmp(name, SML_ELEMENT_DEVTYP_WORKSTATION)) { - return SML_DEVINF_DEVTYPE_WORKSTATION; + return SML_DEVINF_DEVTYP_WORKSTATION; } smlErrorSet(error, SML_ERROR_GENERIC, "Unknown devinf type name \"%s\"", name); - return SML_DEVINF_DEVTYPE_UNKNOWN; + return SML_DEVINF_DEVTYP_UNKNOWN; } const char *smlDevInfDevTypeToString(SmlDevInfDevTyp type, SmlError **error) @@ -59,21 +59,21 @@ CHECK_ERROR_REF switch (type) { - case SML_DEVINF_DEVTYPE_PAGER: + case SML_DEVINF_DEVTYP_PAGER: return SML_ELEMENT_DEVTYP_PAGER; - case SML_DEVINF_DEVTYPE_HANDHELD: + case SML_DEVINF_DEVTYP_HANDHELD: return SML_ELEMENT_DEVTYP_HANDHELD; - case SML_DEVINF_DEVTYPE_PDA: + case SML_DEVINF_DEVTYP_PDA: return SML_ELEMENT_DEVTYP_PDA; - case SML_DEVINF_DEVTYPE_PHONE: + case SML_DEVINF_DEVTYP_PHONE: return SML_ELEMENT_DEVTYP_PHONE; - case SML_DEVINF_DEVTYPE_SMARTPHONE: + case SML_DEVINF_DEVTYP_SMARTPHONE: return SML_ELEMENT_DEVTYP_SMARTPHONE; - case SML_DEVINF_DEVTYPE_SERVER: + case SML_DEVINF_DEVTYP_SERVER: return SML_ELEMENT_DEVTYP_SERVER; - case SML_DEVINF_DEVTYPE_WORKSTATION: + case SML_DEVINF_DEVTYP_WORKSTATION: return SML_ELEMENT_DEVTYP_WORKSTATION; - case SML_DEVINF_DEVTYPE_UNKNOWN: + case SML_DEVINF_DEVTYP_UNKNOWN: smlErrorSet(error, SML_ERROR_GENERIC, "Unknown devinf type \"%i\"", type); /* fall through! */ } Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tests/CMakeLists.txt Fri Jun 26 14:31:29 2009 (r1120) @@ -312,6 +312,8 @@ SML_ADD_TESTCASE( dev_inf_option_hwv ) SML_ADD_TESTCASE( dev_inf_enforce_data_stores ) SML_ADD_TESTCASE( dev_inf_enforce_ctcaps ) + SML_ADD_TESTCASE( dev_inf_compliance_error ) + SML_ADD_TESTCASE( dev_inf_compliance_1_0 ) SML_END_TEST() SML_START_TEST( "DevInfHelper" devinf check_devinf.c ${TEST_TARGET_LIBRARIES} ) Modified: trunk/tests/check_dev_inf.c ============================================================================== --- trunk/tests/check_dev_inf.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tests/check_dev_inf.c Fri Jun 26 14:31:29 2009 (r1120) @@ -133,19 +133,19 @@ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYPE_UNKNOWN, "The default DevTyp must be SML_DEVINF_DEVTYPE_UNKNOWN."); + sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_UNKNOWN, "The default DevTyp must be SML_DEVINF_DEVTYP_UNKNOWN."); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_UNKNOWN); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_UNKNOWN); - sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYPE_UNKNOWN, "The default DevTyp must be still set."); + sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_UNKNOWN, "The default DevTyp must be still set."); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_SERVER); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); - sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYPE_SERVER, "The DevTyp was already set."); + sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_SERVER, "The DevTyp was already set."); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_UNKNOWN); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_UNKNOWN); - sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYPE_SERVER, "The DevTyp must be still set."); + sml_fail_unless(sml_dev_inf_get_dev_typ(devinf) == SML_DEVINF_DEVTYP_SERVER, "The DevTyp must be still set."); g_object_unref(devinf); } @@ -456,8 +456,117 @@ } END_TEST +START_TEST (dev_inf_compliance_error) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + /* The actual object is not compliant and there is no error pointer + * but the function should return NULL and should not throw an assertion. + */ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, NULL); + + /* This is the usual case. + * The object is not compliant and the error pointer is available. + */ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, NULL); + sml_fail_unless(error != NULL, "The error must be set if an error appears."); + g_error_free(error); + error = NULL; + + g_object_unref(devinf); +} +END_TEST + +#define INIT_DEV_INF_OBJECT \ + devinf = sml_dev_inf_new(); \ + sml_fail_unless(devinf != NULL, NULL); + +#define CHECK_COMPLIANCE_ERROR \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, NULL); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, NULL); \ + sml_fail_unless(error != NULL, "The error must be set if an error appears."); \ + g_error_free(error); \ + error = NULL; \ + g_object_unref(devinf); \ + devinf = NULL; + +#define CHECK_COMPLIANCE_SUCCESS \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == TRUE, "%s", error?error->message:"No GError set."); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == TRUE, NULL); \ + g_object_unref(devinf); \ + devinf = NULL; + +START_TEST (dev_inf_compliance_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing VerDTD, DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + CHECK_COMPLIANCE_ERROR + + /* missing DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + CHECK_COMPLIANCE_ERROR + + /* missing DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing data store */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + /* - test validation with and without error basic 1.0 profile with validation basic 1.1 profile with validation Modified: trunk/tests/check_devinf.c ============================================================================== --- trunk/tests/check_devinf.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tests/check_devinf.c Fri Jun 26 14:31:29 2009 (r1120) @@ -131,7 +131,7 @@ /* The devinf obj for the server */ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_WORKSTATION); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_WORKSTATION); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "LibSyncML", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_dev_inf_set_support_large_objs(devinf, TRUE); SmlDevInfAgent *agent = smlDevInfAgentNew(devinf, &error); @@ -259,7 +259,7 @@ /* The devinf obj */ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_WORKSTATION); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_WORKSTATION); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "LibSyncML", &gerror), "%s", gerror?gerror->message:"No GError set."); SmlDevInfAgent *clientagent = smlDevInfAgentNew(devinf, &error); smlDevInfAgentRegister(clientagent, clientmanager, &error); @@ -276,7 +276,7 @@ devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_SERVER); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "LibSyncML", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_dev_inf_set_support_large_objs(devinf, TRUE); SmlDevInfAgent *serveragent = smlDevInfAgentNew(devinf, &error); Modified: trunk/tests/check_sync.c ============================================================================== --- trunk/tests/check_sync.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tests/check_sync.c Fri Jun 26 14:31:29 2009 (r1120) @@ -1152,7 +1152,7 @@ /* The devinf obj */ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_WORKSTATION); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_WORKSTATION); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "LibSyncML", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_dev_inf_set_support_number_of_changes(devinf, TRUE); sml_dev_inf_set_support_large_objs(devinf, FALSE); @@ -1187,7 +1187,7 @@ devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_SERVER); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "LibSyncML", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_dev_inf_set_support_number_of_changes(devinf, TRUE); sml_dev_inf_set_support_large_objs(devinf, TRUE); Modified: trunk/tests/check_xml_assembler.c ============================================================================== --- trunk/tests/check_xml_assembler.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tests/check_xml_assembler.c Fri Jun 26 14:31:29 2009 (r1120) @@ -893,7 +893,7 @@ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_WORKSTATION); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_WORKSTATION); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "mydevice", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(gerror == NULL, NULL); @@ -967,7 +967,7 @@ SmlDevInf *devinf = sml_dev_inf_new(); sml_fail_unless(devinf != NULL, NULL); - sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYPE_WORKSTATION); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_WORKSTATION); sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "mydevice", &gerror), "%s", gerror?gerror->message:"No GError set."); sml_fail_unless(devinf != NULL, NULL); sml_fail_unless(error == NULL, NULL); Modified: trunk/tools/syncml-obex-client.c ============================================================================== --- trunk/tools/syncml-obex-client.c Thu Jun 25 16:25:55 2009 (r1119) +++ trunk/tools/syncml-obex-client.c Fri Jun 26 14:31:29 2009 (r1120) @@ -650,7 +650,7 @@ /* Now create the devinf handler */ - devinf = smlDevInfNew("LibSyncmML", SML_DEVINF_DEVTYPE_WORKSTATION, &error); + devinf = smlDevInfNew("LibSyncmML", SML_DEVINF_DEVTYP_WORKSTATION, &error); if (!devinf) goto error_free_manager; smlDevInfSetSupportsNumberOfChanges(devinf, useNumberOfChanges); |
From: <svn...@op...> - 2009-06-26 13:04:16
|
Author: saschpe Date: Fri Jun 26 14:55:04 2009 New Revision: 1121 URL: http://libsyncml.opensync.org/changeset/1121 Log: Added a check in smlDataSyncAbort to prevent segfault when no session is running. Modified: branches/libsyncml-0.5.x/libsyncml/data_sync_api/data_sync_abort.c Modified: branches/libsyncml-0.5.x/libsyncml/data_sync_api/data_sync_abort.c ============================================================================== --- branches/libsyncml-0.5.x/libsyncml/data_sync_api/data_sync_abort.c Fri Jun 26 14:31:29 2009 (r1120) +++ branches/libsyncml-0.5.x/libsyncml/data_sync_api/data_sync_abort.c Fri Jun 26 14:55:04 2009 (r1121) @@ -44,6 +44,9 @@ { smlTrace(TRACE_ENTRY, "%s", __func__); + if (!dsObject || !dsObject->session) + return FALSE; + /* determine the state of the session */ if (!dsObject->session->sending && !dsObject->session->waiting) { |