add stylesheet and rxpd option / config
authorChristian Thaeter <ct@pipapo.org>
Sun, 20 Jan 2008 15:56:18 +0000 (16:56 +0100)
committerChristian Thaeter <ct@pipapo.org>
Sun, 20 Jan 2008 15:56:18 +0000 (16:56 +0100)
stylesheet can be used in the webgit.conf to set a default stylesheet
and in withing [web] to set repository specific stylesheets

rxpd needs to be set to host:port to enable rxpd policy support

src/options.c
src/options.h
src/query.c
src/repo.c
src/repo.h
src/webgit.h

index cd3f582..547ea30 100644 (file)
@@ -24,7 +24,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
-
+#include <stdint.h>
 
 static int
 conf_query_opt (struct webgit_query* query, char* arg)
@@ -55,6 +55,13 @@ conf_repo_opt (struct webgit_query* query, char* arg)
   return 0;
 }
 
+static int
+conf_stylesheet_opt (struct webgit_query* query, char* arg)
+{
+  query->stylesheet = cwa_strndup (arg, SIZE_MAX);
+  return 0;
+}
+
 static int
 conf_conf_opt (struct webgit_query* query, char* arg)
 {
@@ -63,6 +70,30 @@ conf_conf_opt (struct webgit_query* query, char* arg)
   return 0;
 }
 
+static int
+conf_rxpd_opt (struct webgit_query* query, char* arg)
+{
+  char* delim = strchr (arg, ':');
+
+  if (delim)
+    {
+      query->rxpd_name = cwa_strndup (arg, delim-arg-1);
+      query->rxpd_port = atoi (delim+1);
+    }
+  else if (strchr (arg, '/'))
+    {
+      query->rxpd_name = cwa_strndup (arg, SIZE_MAX);
+      query->rxpd_port = 0;
+      return -1; /* rxpd doesnt yet support unix domain sockets */
+    }
+  else
+    {
+      return -1;
+    }
+
+  return 0;
+}
+
 static int
 conf_count_opt (struct webgit_query* query, char* arg)
 {
index 4688cc4..00c1a99 100644 (file)
 /*
   config options
 */
-#define CONF_OPTS                                       \
- CONF_OPT(query, "Set the QUERY_STRING [diag]")         \
- CONF_OPT(method, "Set REQUEST_METHOD [diag]")          \
- CONF_OPT(conf, "Set config file, may be empty")        \
- CONF_OPT(repo, "Add a repository")                     \
+#define CONF_OPTS                                               \
+ CONF_OPT(query, "Set the QUERY_STRING [diag]")                 \
+ CONF_OPT(method, "Set REQUEST_METHOD [diag]")                  \
+ CONF_OPT(stylesheet, "Set default stylesheet")                 \
+ CONF_OPT(conf, "Set config file, may be empty")                \
+ CONF_OPT(repo, "Add a repository")                             \
+ CONF_OPT(rxpd, "Set host:port or /path/to/socket for rxpd")    \
  CONF_OPT(count, "Set default for 'items per page'")
 
 // CONF_OPT(conffile) CONF_OPT(include)
index a2a4059..603c9ef 100644 (file)
@@ -37,7 +37,10 @@ webgit_query_init (struct webgit_query* q)
   q->deref_to_tree = 0;
   q->content_type = cwa_strndup ("text/html", SIZE_MAX);
 
+  q->stylesheet = NULL;
   q->count_def = 100;
+  q->rxpd_name = NULL;
+  q->rxpd_port = 0;
 
   q->repo = NULL;
   q->action = NULL;
@@ -55,6 +58,9 @@ webgit_query_destroy (struct webgit_query* q)
   cgi_free (q->request);
 
   free (q->content_type);
+  free (q->stylesheet);
+  free (q->rxpd_name);
+
   free (q->repo);
   free (q->action);
   free (q->object);
index 94faf22..b2dafb7 100644 (file)
@@ -95,6 +95,14 @@ webgit_readme_conf (struct webgit_repo_info* self, const char *value)
 }
 
 
+static void
+webgit_stylesheet_conf (struct webgit_repo_info* self, const char *value)
+{
+  free (self->query->stylesheet);
+  self->query->stylesheet = cwa_strndup (value, SIZE_MAX);
+}
+
+
 static void
 webgit_owner_conf (struct webgit_repo_info* self, const char *value)
 {
index 40ef73f..f6b5212 100644 (file)
@@ -31,6 +31,7 @@
  WEBGIT_CONF(description, "Set the short description for the repository")       \
  WEBGIT_CONF(url, "Set public access url")                                      \
  WEBGIT_CONF(owner, "Set owner name of the repository")                         \
+ WEBGIT_CONF(stylesheet, "Set repository specific stylesheet")                  \
  WEBGIT_CONF(readme, "Set a readme.html file to display")
 
 #define WEBGIT_CONF_PREFIX "web."
index 08858fc..5c0f601 100644 (file)
@@ -37,7 +37,10 @@ struct webgit_query
   char* content_type;
 
   /* confiuration parameters */
+  char* stylesheet;
   int count_def;
+  char* rxpd_name;
+  unsigned rxpd_port;
   //int cache_read;
   //int cache_write;
   //int cache_expire;