command/commit
Added running a SPARQL query
author | Jan Wielemaker |
---|---|
Thu Mar 10 17:15:02 2011 +0100 | |
committer | Jan Wielemaker |
Thu Mar 10 17:15:02 2011 +0100 | |
commit | e6dd4baf9bbab111516642c55ce0457940253f14 |
tree | b5a42c2e0903d25205b5170d02919f3ea9795572 |
parent | 72e89013e976e2c23d34a2d5f03303f2b2b9ea95 |
Diff style: patch stat
diff --git a/script/cp-client.c b/script/cp-client.c index 4832718..4d36da4 100644 --- a/script/cp-client.c +++ b/script/cp-client.c @@ -82,6 +82,7 @@ usage(int code) fprintf(stderr, "Commands:\n"); fprintf(stderr, " ping Check that server is alive\n"); fprintf(stderr, " load file|url Load data from file or URL\n"); + fprintf(stderr, " sparql query Run a SPARQL query\n"); exit(code); } @@ -93,16 +94,16 @@ typedef enum argtype } argtype; const char * -cmd_url(const char *cmd, ...) +cmd_url(const char *path, ...) { static char url[10240]; char *end = &url[sizeof(url)]; char *o = url; va_list args; int an = 0; - va_start(args, cmd); + va_start(args, path); o += snprintf(o, end-o, - "http://%s:%d%s/cmd/%s", host, port, prefix, cmd); + "http://%s:%d%s%s", host, port, prefix, path); for(;; an++) { argtype t = va_arg(args, argtype); @@ -147,7 +148,7 @@ static int ping() { CURLcode rc; - curl_easy_setopt(curl, CURLOPT_URL, cmd_url("ping", A_END)); + curl_easy_setopt(curl, CURLOPT_URL, cmd_url("/cmd/ping", A_END)); rc = curl_easy_perform(curl); if ( rc ) @@ -164,7 +165,7 @@ ping() static int load_one(const char *data) { CURLcode rc; - const char *url = cmd_url("load", A_STRING, "url", data, A_END); + const char *url = cmd_url("/cmd/load", A_STRING, "url", data, A_END); if ( debug > 0 ) fprintf(stderr, "URL=%s\n", url); @@ -186,6 +187,26 @@ load(int ac, const char **av) for(i=0; rc == 0 && i<ac; i++) rc = load_one(av[i]); + return rc; +} + + /******************************* + * SPARQL * + *******************************/ + +static int +sparql(const char *query) +{ CURLcode rc; + const char *url = cmd_url("/sparql/", A_STRING, "query", query, A_END); + + if ( debug > 0 ) + fprintf(stderr, "URL=%s\n", url); + curl_easy_setopt(curl, CURLOPT_URL, url); + rc = curl_easy_perform(curl); + + if ( rc ) + fprintf(stderr, "%s: %s\n", program, curl_easy_strerror(rc)); + return rc; } @@ -247,6 +268,8 @@ main(int argc, char **argv) rc = ping(); else if ( strcmp(command, "load") == 0 ) rc = load(cmdac, cmdav); + else if ( strcmp(command, "sparql") == 0 && cmdac == 1 ) + rc = sparql(cmdav[0]); else usage(1);