summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-05-16 19:10:44 +0000
committerDavid Robillard <d@drobilla.net>2008-05-16 19:10:44 +0000
commitcce33e218de8177de79dfd64f84d928985d040ad (patch)
treed31c53af7b37e467295384cff82f7d381b09b7ac /src
parent8dd358d47b5455f6ef432fcb115dce062be48239 (diff)
downloadlilv-cce33e218de8177de79dfd64f84d928985d040ad.tar.gz
lilv-cce33e218de8177de79dfd64f84d928985d040ad.tar.bz2
lilv-cce33e218de8177de79dfd64f84d928985d040ad.zip
Fix support for plugins where binary is not mentioned in manifest.
git-svn-id: http://svn.drobilla.net/lad/slv2@1210 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/world.c45
1 files changed, 20 insertions, 25 deletions
diff --git a/src/world.c b/src/world.c
index 2efcc40..82edbad 100644
--- a/src/world.c
+++ b/src/world.c
@@ -520,7 +520,7 @@ slv2_world_load_all(SLV2World world)
librdf_query_results* results = librdf_query_execute(q, world->model);
while (!librdf_query_results_finished(results)) {
-
+
librdf_node* plugin_node = librdf_query_results_get_binding_value(results, 0);
librdf_uri* plugin_uri = librdf_node_get_uri(plugin_node);
librdf_node* data_node = librdf_query_results_get_binding_value(results, 1);
@@ -528,35 +528,30 @@ slv2_world_load_all(SLV2World world)
librdf_node* bundle_node = librdf_query_results_get_binding_value(results, 2);
librdf_uri* bundle_uri = librdf_node_get_uri(bundle_node);
librdf_node* binary_node = librdf_query_results_get_binding_value(results, 3);
-
+
assert(plugin_uri);
assert(data_uri);
- if (binary_node) {
- librdf_uri* binary_uri = librdf_node_get_uri(binary_node);
- SLV2Value uri = slv2_value_new_librdf_uri(world, plugin_uri);
- SLV2Plugin plugin = slv2_plugins_get_by_uri(world->plugins, uri);
-
- // Create a new SLV2Plugin
- if (!plugin) {
- plugin = slv2_plugin_new(world, uri, bundle_uri, binary_uri);
- raptor_sequence_push(world->plugins, plugin);
- // FIXME: Slow! ORDER BY broken in certain versions of redland?
- raptor_sequence_sort(world->plugins, slv2_plugin_compare_by_uri);
- } else {
- slv2_value_free(uri);
- }
-
- plugin->world = world;
-
- // FIXME: check for duplicates
- raptor_sequence_push(plugin->data_uris,
- slv2_value_new_librdf_uri(plugin->world, data_uri));
+ librdf_uri* binary_uri = binary_node ? librdf_node_get_uri(binary_node) : NULL;
+ SLV2Value uri = slv2_value_new_librdf_uri(world, plugin_uri);
+ SLV2Plugin plugin = slv2_plugins_get_by_uri(world->plugins, uri);
+
+ // Create a new SLV2Plugin
+ if (!plugin) {
+ plugin = slv2_plugin_new(world, uri, bundle_uri, binary_uri);
+ raptor_sequence_push(world->plugins, plugin);
+ // FIXME: Slow! ORDER BY broken in certain versions of redland?
+ raptor_sequence_sort(world->plugins, slv2_plugin_compare_by_uri);
} else {
- fprintf(stderr, "Warning: plugin %s has no binary; ignored.\n",
- librdf_uri_as_string(plugin_uri));
+ slv2_value_free(uri);
}
-
+
+ plugin->world = world;
+
+ // FIXME: check for duplicates
+ raptor_sequence_push(plugin->data_uris,
+ slv2_value_new_librdf_uri(plugin->world, data_uri));
+
librdf_free_node(plugin_node);
librdf_free_node(data_node);
librdf_free_node(bundle_node);