command/commit

Added running a SPARQL query

authorJan Wielemaker
Thu Mar 10 17:15:02 2011 +0100
committerJan Wielemaker
Thu Mar 10 17:15:02 2011 +0100
commite6dd4baf9bbab111516642c55ce0457940253f14
treeb5a42c2e0903d25205b5170d02919f3ea9795572
parent72e89013e976e2c23d34a2d5f03303f2b2b9ea95
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);