remove 'deref_to_tree', not needed anymore
[webgit] / src / query.c
index 09e896d..dd54503 100644 (file)
@@ -33,7 +33,6 @@ webgit_query_init (struct webgit_query* q)
   q->request = NULL;
   q->now = time (NULL);
 
-  q->deref_to_tree = 0;
   q->content_type = cwa_strndup ("application/xhtml+xml", SIZE_MAX);
 
   q->login_cookie = NULL;
@@ -52,6 +51,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 +85,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 +195,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)
 {