aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lars Hjemli <hjemli@gmail.com>2007-05-16 07:14:51 (JST)
committerGravatar Lars Hjemli <hjemli@gmail.com>2007-05-16 07:16:00 (JST)
commitb28b105ec172b258ae5d629381a5890697c2f938 (patch)
tree0673dc5ed94c8ce99c714d1204b6582f9ba96fc5
parent47a81c77fdd017227632c4df9a0b7b135b8a738d (diff)
downloadcgit-b28b105ec172b258ae5d629381a5890697c2f938.zip
cgit-b28b105ec172b258ae5d629381a5890697c2f938.tar.gz
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>
-rw-r--r--cgit.c3
-rw-r--r--cgit.h1
-rw-r--r--shared.c17
3 files changed, 7 insertions, 14 deletions
diff --git a/cgit.c b/cgit.c
index 3c11ff0..b282a67 100644
--- a/cgit.c
+++ b/cgit.c
@@ -65,6 +65,9 @@ static void cgit_print_repo_page(struct cacheitem *item)
65 char *title; 65 char *title;
66 int show_search; 66 int show_search;
67 67
68 if (!cgit_query_head)
69 cgit_query_head = cgit_repo->defbranch;
70
68 if (chdir(cgit_repo->path)) { 71 if (chdir(cgit_repo->path)) {
69 title = fmt("%s - %s", cgit_root_title, "Bad request"); 72 title = fmt("%s - %s", cgit_root_title, "Bad request");
70 cgit_print_docstart(title, item); 73 cgit_print_docstart(title, item);
diff --git a/cgit.h b/cgit.h
index f5906ad..ac710a6 100644
--- a/cgit.h
+++ b/cgit.h
@@ -35,6 +35,7 @@ struct repoinfo {
35 char *path; 35 char *path;
36 char *desc; 36 char *desc;
37 char *owner; 37 char *owner;
38 char *defbranch;
38 char *module_link; 39 char *module_link;
39 int snapshots; 40 int snapshots;
40}; 41};
diff --git a/shared.c b/shared.c
index 8505397..a1e1acd 100644
--- a/shared.c
+++ b/shared.c
@@ -32,10 +32,6 @@ int cgit_cache_max_create_time = 5;
32int cgit_max_msg_len = 60; 32int cgit_max_msg_len = 60;
33int cgit_max_commit_count = 50; 33int cgit_max_commit_count = 50;
34 34
35char *cgit_repo_name = NULL;
36char *cgit_repo_desc = NULL;
37char *cgit_repo_owner = NULL;
38
39int cgit_query_has_symref = 0; 35int cgit_query_has_symref = 0;
40int cgit_query_has_sha1 = 0; 36int cgit_query_has_sha1 = 0;
41 37
@@ -86,6 +82,7 @@ struct repoinfo *add_repo(const char *url)
86 ret->path = NULL; 82 ret->path = NULL;
87 ret->desc = NULL; 83 ret->desc = NULL;
88 ret->owner = NULL; 84 ret->owner = NULL;
85 ret->defbranch = "master";
89 ret->snapshots = cgit_snapshots; 86 ret->snapshots = cgit_snapshots;
90 ret->module_link = cgit_module_link; 87 ret->module_link = cgit_module_link;
91 return ret; 88 return ret;
@@ -133,6 +130,8 @@ void cgit_global_config_cb(const char *name, const char *value)
133 cgit_repo->desc = xstrdup(value); 130 cgit_repo->desc = xstrdup(value);
134 else if (cgit_repo && !strcmp(name, "repo.owner")) 131 else if (cgit_repo && !strcmp(name, "repo.owner"))
135 cgit_repo->owner = xstrdup(value); 132 cgit_repo->owner = xstrdup(value);
133 else if (cgit_repo && !strcmp(name, "repo.defbranch"))
134 cgit_repo->defbranch = xstrdup(value);
136 else if (cgit_repo && !strcmp(name, "repo.snapshots")) 135 else if (cgit_repo && !strcmp(name, "repo.snapshots"))
137 cgit_repo->snapshots = atoi(value); 136 cgit_repo->snapshots = atoi(value);
138 else if (cgit_repo && !strcmp(name, "repo.module-link")) 137 else if (cgit_repo && !strcmp(name, "repo.module-link"))
@@ -141,16 +140,6 @@ void cgit_global_config_cb(const char *name, const char *value)
141 cgit_read_config(value, cgit_global_config_cb); 140 cgit_read_config(value, cgit_global_config_cb);
142} 141}
143 142
144void cgit_repo_config_cb(const char *name, const char *value)
145{
146 if (!strcmp(name, "name"))
147 cgit_repo_name = xstrdup(value);
148 else if (!strcmp(name, "desc"))
149 cgit_repo_desc = xstrdup(value);
150 else if (!strcmp(name, "owner"))
151 cgit_repo_owner = xstrdup(value);
152}
153
154void cgit_querystring_cb(const char *name, const char *value) 143void cgit_querystring_cb(const char *name, const char *value)
155{ 144{
156 if (!strcmp(name,"r")) { 145 if (!strcmp(name,"r")) {