void sim_xml_config_set_config_datasource (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigDS *ds; gchar *value; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DATASOURCE)) { g_message ("Invalid config datasource node %s", node->name); return; } ds = sim_config_ds_new (); if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { ds->name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PROVIDER))) { ds->provider = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_DSN))) { ds->dsn = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_LOCAL_DB))) { if (!g_ascii_strncasecmp (value, "true", 4)) ds->local_DB = TRUE; else if (!g_ascii_strncasecmp (value, "false", 4)) ds->local_DB = FALSE; else { g_message ("Error: Please put a valid value (true/false) in the Local_DB Parameter"); xmlFree(value); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_RSERVER_NAME))) { ds->rserver_name = g_strdup (value); xmlFree(value); } config->datasources = g_list_append (config->datasources, ds); }
void sim_xml_config_set_config_datasource (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigDS *ds; gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DATASOURCE)) { g_message ("Invalid config datasource node %s", node->name); return; } ds = sim_config_ds_new (); if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { ds->name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PROVIDER))) { ds->provider = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_DSN))) { GString *dsn_new = g_string_new (""); gchar **key_value, **split; gchar **i; /* Adapt the data source name from GDA 2 to GDA 4 */ key_value = g_strsplit (value, ";", 0); for (i = key_value; *i; i++) { split = g_strsplit (*i, "=", 2); if (!strcmp(*split, "USER")) g_string_append_printf (dsn_new, "USERNAME=%s;", *(split+1)); else if (!strcmp(*split, "DATABASE")) g_string_append_printf (dsn_new, "DB_NAME=%s;", *(split+1)); else g_string_append_printf (dsn_new, "%s=%s;", *split, *(split+1)); g_strfreev(split); } g_strfreev(key_value); sim_config_ds_set_dsn_string (ds, g_string_free (dsn_new, FALSE)); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_LOCAL_DB))) { if (!g_ascii_strncasecmp (value, "true", 4)) ds->local_DB = TRUE; else if (!g_ascii_strncasecmp (value, "false", 4)) ds->local_DB = FALSE; else { g_message ("Error: Please put a valid value (true/false) in the Local_DB Parameter"); xmlFree(value); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_RSERVER_NAME))) { ds->rserver_name = g_strdup (value); xmlFree(value); } config->datasources = g_list_append (config->datasources, ds); }