Fixed query problems on 64-bit
git-svn-id: http://svn.drobilla.net/lad@23 a436a847-0d15-0410-975c-d299462d15a1
This commit is contained in:
parent
7a27988dc9
commit
1c19a572bf
Binary file not shown.
|
@ -1,4 +1,4 @@
|
||||||
CFLAGS = -Wall -I../../../include
|
CFLAGS = -Wall -I../../../include -fPIC
|
||||||
|
|
||||||
all: amp.so
|
all: amp.so
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -60,7 +60,7 @@ const unsigned char*
|
||||||
slv2_plugin_get_data_path(const SLV2Plugin* p)
|
slv2_plugin_get_data_path(const SLV2Plugin* p)
|
||||||
{
|
{
|
||||||
assert(p);
|
assert(p);
|
||||||
if (!strncmp((char*)p->data_url, "file://", 7))
|
if (!strncmp((char*)p->data_url, "file://", (size_t)7))
|
||||||
return (p->data_url) + 7;
|
return (p->data_url) + 7;
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -79,7 +79,7 @@ const unsigned char*
|
||||||
slv2_plugin_get_library_path(const SLV2Plugin* p)
|
slv2_plugin_get_library_path(const SLV2Plugin* p)
|
||||||
{
|
{
|
||||||
assert(p);
|
assert(p);
|
||||||
if (!strncmp((char*)p->lib_url, "file://", 7))
|
if (!strncmp((char*)p->lib_url, "file://", (size_t)7))
|
||||||
return (p->lib_url) + 7;
|
return (p->lib_url) + 7;
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -152,7 +152,7 @@ slv2_plugin_get_property(const SLV2Plugin* p,
|
||||||
rasqal_query_results* results = slv2_plugin_run_query(p,
|
rasqal_query_results* results = slv2_plugin_run_query(p,
|
||||||
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
||||||
"plugin: "), property, U(" ?value . \n"
|
"plugin: "), property, U(" ?value . \n"
|
||||||
"} \n"), 0);
|
"} \n"), NULL);
|
||||||
|
|
||||||
struct _Property* result = slv2_query_get_results(results);
|
struct _Property* result = slv2_query_get_results(results);
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ slv2_plugin_get_num_ports(const SLV2Plugin* p)
|
||||||
rasqal_query_results* results = slv2_plugin_run_query(p,
|
rasqal_query_results* results = slv2_plugin_run_query(p,
|
||||||
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
||||||
"plugin: lv2:port ?value . \n"
|
"plugin: lv2:port ?value . \n"
|
||||||
"} \n"), 0);
|
"} \n"), NULL);
|
||||||
|
|
||||||
while (!rasqal_query_results_finished(results)) {
|
while (!rasqal_query_results_finished(results)) {
|
||||||
++result;
|
++result;
|
||||||
|
|
|
@ -138,9 +138,12 @@ slv2_list_load_bundle(SLV2List list,
|
||||||
rasqal_query_results_next(results);
|
rasqal_query_results_next(results);
|
||||||
}
|
}
|
||||||
|
|
||||||
rasqal_free_query_results(results);
|
// FIXME: leaks? rasqal really doesn't handle missing files well..
|
||||||
rasqal_free_query(rq);
|
if (results) {
|
||||||
raptor_free_uri(base_uri);
|
rasqal_free_query_results(results);
|
||||||
|
rasqal_free_query(rq);
|
||||||
|
raptor_free_uri(base_uri); // FIXME: leak?
|
||||||
|
}
|
||||||
rasqal_finish();
|
rasqal_finish();
|
||||||
|
|
||||||
free(manifest_uri);
|
free(manifest_uri);
|
||||||
|
@ -162,8 +165,8 @@ add_plugins_from_dir(SLV2List list, const char* dir)
|
||||||
if (!strcmp(pfile->d_name, ".") || !strcmp(pfile->d_name, ".."))
|
if (!strcmp(pfile->d_name, ".") || !strcmp(pfile->d_name, ".."))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
char* bundle_path = (char*)ustrjoin(U(dir), U("/"), U(pfile->d_name), 0);
|
char* bundle_path = (char*)ustrjoin(U(dir), U("/"), U(pfile->d_name), NULL);
|
||||||
char* bundle_url = (char*)ustrjoin(U("file://"), U(dir), U("/"), U(pfile->d_name), 0);
|
char* bundle_url = (char*)ustrjoin(U("file://"), U(dir), U("/"), U(pfile->d_name), NULL);
|
||||||
DIR* bundle_dir = opendir(bundle_path);
|
DIR* bundle_dir = opendir(bundle_path);
|
||||||
|
|
||||||
if (bundle_dir != NULL) {
|
if (bundle_dir != NULL) {
|
||||||
|
@ -185,7 +188,7 @@ slv2_list_load_path(SLV2List list,
|
||||||
const char* slv2_path)
|
const char* slv2_path)
|
||||||
{
|
{
|
||||||
|
|
||||||
char* path = (char*)ustrjoin(U(slv2_path), U(":"), 0);
|
char* path = (char*)ustrjoin(U(slv2_path), U(":"), NULL);
|
||||||
|
|
||||||
char* dir = path; // Pointer into path
|
char* dir = path; // Pointer into path
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ slv2_port_get_property(SLV2Plugin* p,
|
||||||
assert(property);
|
assert(property);
|
||||||
|
|
||||||
char index_str[4];
|
char index_str[4];
|
||||||
snprintf(index_str, 4, "%ld", index);
|
snprintf(index_str, (size_t)4, "%lu", index);
|
||||||
|
|
||||||
rasqal_init();
|
rasqal_init();
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ slv2_port_get_property(SLV2Plugin* p,
|
||||||
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
U("SELECT DISTINCT ?value FROM data: WHERE { \n"
|
||||||
"plugin: lv2:port ?port \n"
|
"plugin: lv2:port ?port \n"
|
||||||
"?port lv2:index "), index_str, U(" \n"
|
"?port lv2:index "), index_str, U(" \n"
|
||||||
"?port "), property, U(" ?value . \n}\n"), 0);
|
"?port "), property, U(" ?value . \n}\n"), NULL);
|
||||||
|
|
||||||
SLV2Property result = slv2_query_get_results(results);
|
SLV2Property result = slv2_query_get_results(results);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ slv2_query_header(const SLV2Plugin* p)
|
||||||
"PREFIX doap: <http://usefulinc.com/ns/doap#> \n"
|
"PREFIX doap: <http://usefulinc.com/ns/doap#> \n"
|
||||||
"PREFIX lv2: <http://lv2plug.in/ontology#> \n"
|
"PREFIX lv2: <http://lv2plug.in/ontology#> \n"
|
||||||
"PREFIX plugin: <"), plugin_uri, U("> \n"),
|
"PREFIX plugin: <"), plugin_uri, U("> \n"),
|
||||||
U("PREFIX data: <"), data_file_url, U("> \n\n"), 0);
|
U("PREFIX data: <"), data_file_url, U("> \n\n"), NULL);
|
||||||
|
|
||||||
return query_string;
|
return query_string;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ slv2_query_lang_filter(const uchar* variable)
|
||||||
result = ustrjoin(
|
result = ustrjoin(
|
||||||
//U("FILTER (lang(?value) = \""), lang, U("\")\n"), 0);
|
//U("FILTER (lang(?value) = \""), lang, U("\")\n"), 0);
|
||||||
U("FILTER( lang(?value) = \""), lang,
|
U("FILTER( lang(?value) = \""), lang,
|
||||||
U("\" || lang(?value) = \"\" )\n"), 0);
|
U("\" || lang(?value) = \"\" )\n"), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -62,16 +62,17 @@ rasqal_query_results*
|
||||||
slv2_plugin_run_query(const SLV2Plugin* p,
|
slv2_plugin_run_query(const SLV2Plugin* p,
|
||||||
const uchar* first, ...)
|
const uchar* first, ...)
|
||||||
{
|
{
|
||||||
va_list args_list;
|
|
||||||
va_start(args_list, first);
|
|
||||||
va_list args_copy;
|
|
||||||
va_copy(args_copy, args_list);
|
|
||||||
|
|
||||||
/* FIXME: Too much unecessary allocation */
|
/* FIXME: Too much unecessary allocation */
|
||||||
uchar* header = slv2_query_header(p);
|
uchar* header = slv2_query_header(p);
|
||||||
uchar* args_str = vstrjoin(first, args_copy);
|
|
||||||
uchar* query_str = ustrjoin(header, args_str, 0);
|
|
||||||
|
|
||||||
|
va_list args_list;
|
||||||
|
va_start(args_list, first);
|
||||||
|
|
||||||
|
uchar* args_str = vstrjoin(first, args_list);
|
||||||
|
uchar* query_str = ustrjoin(header, args_str, NULL);
|
||||||
|
va_end(args_list);
|
||||||
|
|
||||||
assert(p);
|
assert(p);
|
||||||
assert(query_str);
|
assert(query_str);
|
||||||
|
|
||||||
|
|
|
@ -50,49 +50,30 @@ ustrdup(const uchar* src)
|
||||||
uchar*
|
uchar*
|
||||||
ustrjoin(const uchar* first, ...)
|
ustrjoin(const uchar* first, ...)
|
||||||
{
|
{
|
||||||
// FIXME: this is horribly, awfully, disgracefully slow
|
|
||||||
|
|
||||||
va_list args_list;
|
va_list args_list;
|
||||||
va_start(args_list, first);
|
va_start(args_list, first);
|
||||||
|
|
||||||
va_list args_copy;
|
uchar* result = vstrjoin(first, args_list);
|
||||||
va_copy(args_copy, args_list);
|
|
||||||
|
|
||||||
uchar* result = vstrjoin(first, args_copy);
|
|
||||||
|
|
||||||
//va_end(args_copy);
|
|
||||||
va_end(args_list);
|
va_end(args_list);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
/*
|
|
||||||
va_list args_list;
|
|
||||||
uchar* arg = NULL;
|
|
||||||
uchar* result = ustrdup(first);
|
|
||||||
|
|
||||||
va_start(args_list, first);
|
|
||||||
|
|
||||||
while ((arg = va_arg(args_list, uchar*)) != (uchar*)0)
|
|
||||||
ustrappend(&result, arg);
|
|
||||||
|
|
||||||
va_end(args_list);
|
|
||||||
|
|
||||||
return result;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uchar*
|
uchar*
|
||||||
vstrjoin(const uchar* first, va_list args_list)
|
vstrjoin(const uchar* first, va_list args_list)
|
||||||
{
|
{
|
||||||
// FIXME: this is horribly, awfully, disgracefully slow
|
// FIXME: this is horribly, awfully, disgracefully slow.
|
||||||
|
// so I'm lazy.
|
||||||
|
|
||||||
uchar* arg = NULL;
|
uchar* arg = NULL;
|
||||||
uchar* result = ustrdup(first);
|
uchar* result = ustrdup(first);
|
||||||
|
|
||||||
while ((arg = va_arg(args_list, uchar*)) != NULL)
|
while ((arg = va_arg(args_list, const uchar*)) != NULL)
|
||||||
ustrappend(&result, arg);
|
ustrappend(&result, arg);
|
||||||
|
|
||||||
va_end(args_list);
|
//va_end(args_list);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +93,7 @@ url2path(const uchar* const url)
|
||||||
char* result = calloc(strlen((char*)url)-7+1, sizeof(char));
|
char* result = calloc(strlen((char*)url)-7+1, sizeof(char));
|
||||||
strcpy(result, (char*)url+7);
|
strcpy(result, (char*)url+7);
|
||||||
return result;*/
|
return result;*/
|
||||||
if (!strncmp((char*)url, "file://", 7))
|
if (!strncmp((char*)url, "file://", (size_t)7))
|
||||||
return (char*)url + 7;
|
return (char*)url + 7;
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue