Add a commit query parameter
authorChristian Thaeter <ct@pipapo.org>
Thu, 7 Feb 2008 06:10:25 +0000 (07:10 +0100)
committerChristian Thaeter <ct@pipapo.org>
Thu, 7 Feb 2008 06:10:25 +0000 (07:10 +0100)
This takes the commit we are operating on, later on we can deduce
the object from a repo/head/commit/path tuple which is important when
editing code will be supported.

src/query.c
src/query.h
src/webgit.h

index 0a06404..096412d 100644 (file)
@@ -52,6 +52,7 @@ webgit_query_init (struct webgit_query* q)
   q->action = NULL;
   q->object = NULL;
   q->head = NULL;
+  q->commit = NULL;
   q->path = NULL;
   q->blob = NULL;
   q->blob_size = 0;
@@ -85,6 +86,7 @@ webgit_query_destroy (struct webgit_query* q)
   free (q->action);
   free (q->object);
   free (q->head);
+  free (q->commit);
   free (q->path);
   free (q->user);
   free (q->name);
@@ -194,6 +196,21 @@ webgit_ref_param (const Cgi self, const char* v, size_t v_sz, void* u_dat)
 }
 
 
+static void
+webgit_commit_param (const Cgi self, const char* v, size_t v_sz, void* u_dat)
+{
+  (void) self;
+  struct webgit_query* q = (struct webgit_query*) u_dat;
+
+  /* TODO validate that v is a probably legal reference (alnum() || one of '_/.') */
+  if (webgit_validate_string (v, v_sz))
+    {
+      free (q->commit);
+      q->commit = cwa_strndup (v, v_sz);
+    }
+}
+
+
 static void
 webgit_path_param (const Cgi self, const char* v, size_t v_sz, void* u_dat)
 {
index e21c8a0..d695ccf 100644 (file)
@@ -32,6 +32,7 @@
  WEBGIT_PARAM(repo, "Repository to be queried")                         \
  WEBGIT_PARAM(action, "Action to be performed")                         \
  WEBGIT_PARAM(ref, "Selected ref (branch, tag, ..) for query")          \
+ WEBGIT_PARAM(commit, "Root of the current view")                       \
  WEBGIT_PARAM(path, "Path and filename for the queried object")         \
  WEBGIT_PARAM(object, "Object to perform on")                           \
  WEBGIT_PARAM(blob, "Data recieved from an edit")                       \
index e42ee1f..d8f5ee4 100644 (file)
@@ -68,6 +68,7 @@ struct webgit_query
   char* action;
   char* object;
   char* head;
+  char* commit;
   char* path;
   char* blob;
   size_t blob_size;