cgit

commit b28b105ec172b258ae5d629381a5890697c2f938

Author: Lars Hjemli <hjemli@gmail.com>

Enable default value for head parameter

Pages which expect head to be specified in the querystring can now be
given a default value, configurable per repository (via repo.defbranch,
which defaults to "master").

Currently, only the log page actually works without parameters, but the
defbranch is bound to be exploited.

This also removes some dead code from shared.c

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 cgit.c | 3 +++
 cgit.h | 1 +
 shared.c | 17 +++--------------


diff --git a/cgit.c b/cgit.c
index 3c11ff0a8f9021a20bf20771a617c7c53ebe6aac..b282a67d17bd24e7bf16610e5c7ce48b775c7e70 100644
--- a/cgit.c
+++ b/cgit.c
@@ -65,6 +65,9 @@ {
 	char *title;
 	int show_search;
 
+	if (!cgit_query_head)
+		cgit_query_head = cgit_repo->defbranch;
+
 	if (chdir(cgit_repo->path)) {
 		title = fmt("%s - %s", cgit_root_title, "Bad request");
 		cgit_print_docstart(title, item);




diff --git a/cgit.h b/cgit.h
index f5906ad5ba8762de364caa6ced99810a6f8bd170..ac710a6d2a74fa6feb20d8cff918070ac38a4464 100644
--- a/cgit.h
+++ b/cgit.h
@@ -35,6 +35,7 @@ 	char *name;
 	char *path;
 	char *desc;
 	char *owner;
+	char *defbranch;
 	char *module_link;
 	int snapshots;
 };




diff --git a/shared.c b/shared.c
index 8505397a60c63e0f67f6ba4763f56d12f261459e..a1e1acd7dda0bc5f254a9c1d0a5e21848003a71a 100644
--- a/shared.c
+++ b/shared.c
@@ -32,10 +32,6 @@
 int cgit_max_msg_len = 60;
 int cgit_max_commit_count = 50;
 
-char *cgit_repo_name    = NULL;
-char *cgit_repo_desc    = NULL;
-char *cgit_repo_owner   = NULL;
-
 int cgit_query_has_symref = 0;
 int cgit_query_has_sha1   = 0;
 
@@ -86,6 +82,7 @@ 	ret->name = ret->url;
 	ret->path = NULL;
 	ret->desc = NULL;
 	ret->owner = NULL;
+	ret->defbranch = "master";
 	ret->snapshots = cgit_snapshots;
 	ret->module_link = cgit_module_link;
 	return ret;
@@ -133,22 +130,14 @@ 	else if (cgit_repo && !strcmp(name, "repo.desc"))
 		cgit_repo->desc = xstrdup(value);
 	else if (cgit_repo && !strcmp(name, "repo.owner"))
 		cgit_repo->owner = xstrdup(value);
+	else if (cgit_repo && !strcmp(name, "repo.defbranch"))
+		cgit_repo->defbranch = xstrdup(value);
 	else if (cgit_repo && !strcmp(name, "repo.snapshots"))
 		cgit_repo->snapshots = atoi(value);
 	else if (cgit_repo && !strcmp(name, "repo.module-link"))
 		cgit_repo->module_link= xstrdup(value);
 	else if (!strcmp(name, "include"))
 		cgit_read_config(value, cgit_global_config_cb);
-}
-
-void cgit_repo_config_cb(const char *name, const char *value)
-{
-	if (!strcmp(name, "name"))
-		cgit_repo_name = xstrdup(value);
-	else if (!strcmp(name, "desc"))
-		cgit_repo_desc = xstrdup(value);
-	else if (!strcmp(name, "owner"))
-		cgit_repo_owner = xstrdup(value);
 }
 
 void cgit_querystring_cb(const char *name, const char *value)