summaryrefslogtreecommitdiffabout
path: root/shared.c
authorLars Hjemli <hjemli@gmail.com>2008-02-16 12:56:09 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-02-16 12:56:09 (UTC)
commitd1f3bbe9d22029f45a77bb938c176ccc0c827d46 (patch) (unidiff)
tree3f1741c012763cbc5485f31377abdd9241fbac6b /shared.c
parentb228d4ff82a65fdcd4a7364759fe36a0bdda5978 (diff)
downloadcgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.zip
cgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.tar.gz
cgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.tar.bz2
Move cgit_repo into cgit_context
This removes the global variable which is used to keep track of the currently selected repository, and adds a new variable in the cgit_context structure. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--shared.c61
1 files changed, 30 insertions, 31 deletions
diff --git a/shared.c b/shared.c
index 8dd2b00..808e674 100644
--- a/shared.c
+++ b/shared.c
@@ -5,14 +5,13 @@
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11struct repolist cgit_repolist; 11struct cgit_repolist cgit_repolist;
12struct repoinfo *cgit_repo;
13struct cgit_context ctx; 12struct cgit_context ctx;
14int cgit_cmd; 13int cgit_cmd;
15 14
16const char *cgit_version = CGIT_VERSION; 15const char *cgit_version = CGIT_VERSION;
17 16
18int htmlfd = 0; 17int htmlfd = 0;
@@ -70,24 +69,24 @@ int chk_non_negative(int result, char *msg)
70{ 69{
71 if (result < 0) 70 if (result < 0)
72 die("%s: %s",msg, strerror(errno)); 71 die("%s: %s",msg, strerror(errno));
73 return result; 72 return result;
74} 73}
75 74
76struct repoinfo *add_repo(const char *url) 75struct cgit_repo *add_repo(const char *url)
77{ 76{
78 struct repoinfo *ret; 77 struct cgit_repo *ret;
79 78
80 if (++cgit_repolist.count > cgit_repolist.length) { 79 if (++cgit_repolist.count > cgit_repolist.length) {
81 if (cgit_repolist.length == 0) 80 if (cgit_repolist.length == 0)
82 cgit_repolist.length = 8; 81 cgit_repolist.length = 8;
83 else 82 else
84 cgit_repolist.length *= 2; 83 cgit_repolist.length *= 2;
85 cgit_repolist.repos = xrealloc(cgit_repolist.repos, 84 cgit_repolist.repos = xrealloc(cgit_repolist.repos,
86 cgit_repolist.length * 85 cgit_repolist.length *
87 sizeof(struct repoinfo)); 86 sizeof(struct cgit_repo));
88 } 87 }
89 88
90 ret = &cgit_repolist.repos[cgit_repolist.count-1]; 89 ret = &cgit_repolist.repos[cgit_repolist.count-1];
91 ret->url = trim_end(url, '/'); 90 ret->url = trim_end(url, '/');
92 ret->name = ret->url; 91 ret->name = ret->url;
93 ret->path = NULL; 92 ret->path = NULL;
@@ -100,16 +99,16 @@ struct repoinfo *add_repo(const char *url)
100 ret->enable_log_linecount = ctx.cfg.enable_log_linecount; 99 ret->enable_log_linecount = ctx.cfg.enable_log_linecount;
101 ret->module_link = ctx.cfg.module_link; 100 ret->module_link = ctx.cfg.module_link;
102 ret->readme = NULL; 101 ret->readme = NULL;
103 return ret; 102 return ret;
104} 103}
105 104
106struct repoinfo *cgit_get_repoinfo(const char *url) 105struct cgit_repo *cgit_get_repoinfo(const char *url)
107{ 106{
108 int i; 107 int i;
109 struct repoinfo *repo; 108 struct cgit_repo *repo;
110 109
111 for (i=0; i<cgit_repolist.count; i++) { 110 for (i=0; i<cgit_repolist.count; i++) {
112 repo = &cgit_repolist.repos[i]; 111 repo = &cgit_repolist.repos[i];
113 if (!strcmp(repo->url, url)) 112 if (!strcmp(repo->url, url))
114 return repo; 113 return repo;
115 } 114 }
@@ -176,47 +175,47 @@ void cgit_global_config_cb(const char *name, const char *value)
176 ctx.cfg.robots = xstrdup(value); 175 ctx.cfg.robots = xstrdup(value);
177 else if (!strcmp(name, "clone-prefix")) 176 else if (!strcmp(name, "clone-prefix"))
178 ctx.cfg.clone_prefix = xstrdup(value); 177 ctx.cfg.clone_prefix = xstrdup(value);
179 else if (!strcmp(name, "repo.group")) 178 else if (!strcmp(name, "repo.group"))
180 ctx.cfg.repo_group = xstrdup(value); 179 ctx.cfg.repo_group = xstrdup(value);
181 else if (!strcmp(name, "repo.url")) 180 else if (!strcmp(name, "repo.url"))
182 cgit_repo = add_repo(value); 181 ctx.repo = add_repo(value);
183 else if (!strcmp(name, "repo.name")) 182 else if (!strcmp(name, "repo.name"))
184 cgit_repo->name = xstrdup(value); 183 ctx.repo->name = xstrdup(value);
185 else if (cgit_repo && !strcmp(name, "repo.path")) 184 else if (ctx.repo && !strcmp(name, "repo.path"))
186 cgit_repo->path = trim_end(value, '/'); 185 ctx.repo->path = trim_end(value, '/');
187 else if (cgit_repo && !strcmp(name, "repo.clone-url")) 186 else if (ctx.repo && !strcmp(name, "repo.clone-url"))
188 cgit_repo->clone_url = xstrdup(value); 187 ctx.repo->clone_url = xstrdup(value);
189 else if (cgit_repo && !strcmp(name, "repo.desc")) 188 else if (ctx.repo && !strcmp(name, "repo.desc"))
190 cgit_repo->desc = xstrdup(value); 189 ctx.repo->desc = xstrdup(value);
191 else if (cgit_repo && !strcmp(name, "repo.owner")) 190 else if (ctx.repo && !strcmp(name, "repo.owner"))
192 cgit_repo->owner = xstrdup(value); 191 ctx.repo->owner = xstrdup(value);
193 else if (cgit_repo && !strcmp(name, "repo.defbranch")) 192 else if (ctx.repo && !strcmp(name, "repo.defbranch"))
194 cgit_repo->defbranch = xstrdup(value); 193 ctx.repo->defbranch = xstrdup(value);
195 else if (cgit_repo && !strcmp(name, "repo.snapshots")) 194 else if (ctx.repo && !strcmp(name, "repo.snapshots"))
196 cgit_repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ 195 ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */
197 else if (cgit_repo && !strcmp(name, "repo.enable-log-filecount")) 196 else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount"))
198 cgit_repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); 197 ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value);
199 else if (cgit_repo && !strcmp(name, "repo.enable-log-linecount")) 198 else if (ctx.repo && !strcmp(name, "repo.enable-log-linecount"))
200 cgit_repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value); 199 ctx.repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value);
201 else if (cgit_repo && !strcmp(name, "repo.module-link")) 200 else if (ctx.repo && !strcmp(name, "repo.module-link"))
202 cgit_repo->module_link= xstrdup(value); 201 ctx.repo->module_link= xstrdup(value);
203 else if (cgit_repo && !strcmp(name, "repo.readme") && value != NULL) { 202 else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) {
204 if (*value == '/') 203 if (*value == '/')
205 cgit_repo->readme = xstrdup(value); 204 ctx.repo->readme = xstrdup(value);
206 else 205 else
207 cgit_repo->readme = xstrdup(fmt("%s/%s", cgit_repo->path, value)); 206 ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value));
208 } else if (!strcmp(name, "include")) 207 } else if (!strcmp(name, "include"))
209 cgit_read_config(value, cgit_global_config_cb); 208 cgit_read_config(value, cgit_global_config_cb);
210} 209}
211 210
212void cgit_querystring_cb(const char *name, const char *value) 211void cgit_querystring_cb(const char *name, const char *value)
213{ 212{
214 if (!strcmp(name,"r")) { 213 if (!strcmp(name,"r")) {
215 ctx.qry.repo = xstrdup(value); 214 ctx.qry.repo = xstrdup(value);
216 cgit_repo = cgit_get_repoinfo(value); 215 ctx.repo = cgit_get_repoinfo(value);
217 } else if (!strcmp(name, "p")) { 216 } else if (!strcmp(name, "p")) {
218 ctx.qry.page = xstrdup(value); 217 ctx.qry.page = xstrdup(value);
219 cgit_cmd = cgit_get_cmd_index(value); 218 cgit_cmd = cgit_get_cmd_index(value);
220 } else if (!strcmp(name, "url")) { 219 } else if (!strcmp(name, "url")) {
221 cgit_parse_url(value); 220 cgit_parse_url(value);
222 } else if (!strcmp(name, "qt")) { 221 } else if (!strcmp(name, "qt")) {