-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgitrc.5.txt | 2 |
2 files changed, 2 insertions, 2 deletions
@@ -167,129 +167,129 @@ void config_cb(const char *name, const char *value) | |||
167 | else if (ctx.repo && !strcmp(name, "repo.source-filter")) | 167 | else if (ctx.repo && !strcmp(name, "repo.source-filter")) |
168 | ctx.repo->source_filter = new_filter(value, 1); | 168 | ctx.repo->source_filter = new_filter(value, 1); |
169 | else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { | 169 | else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { |
170 | if (*value == '/') | 170 | if (*value == '/') |
171 | ctx.repo->readme = xstrdup(value); | 171 | ctx.repo->readme = xstrdup(value); |
172 | else | 172 | else |
173 | ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); | 173 | ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); |
174 | } else if (!strcmp(name, "include")) | 174 | } else if (!strcmp(name, "include")) |
175 | parse_configfile(value, config_cb); | 175 | parse_configfile(value, config_cb); |
176 | } | 176 | } |
177 | 177 | ||
178 | static void querystring_cb(const char *name, const char *value) | 178 | static void querystring_cb(const char *name, const char *value) |
179 | { | 179 | { |
180 | if (!strcmp(name,"r")) { | 180 | if (!strcmp(name,"r")) { |
181 | ctx.qry.repo = xstrdup(value); | 181 | ctx.qry.repo = xstrdup(value); |
182 | ctx.repo = cgit_get_repoinfo(value); | 182 | ctx.repo = cgit_get_repoinfo(value); |
183 | } else if (!strcmp(name, "p")) { | 183 | } else if (!strcmp(name, "p")) { |
184 | ctx.qry.page = xstrdup(value); | 184 | ctx.qry.page = xstrdup(value); |
185 | } else if (!strcmp(name, "url")) { | 185 | } else if (!strcmp(name, "url")) { |
186 | ctx.qry.url = xstrdup(value); | 186 | ctx.qry.url = xstrdup(value); |
187 | cgit_parse_url(value); | 187 | cgit_parse_url(value); |
188 | } else if (!strcmp(name, "qt")) { | 188 | } else if (!strcmp(name, "qt")) { |
189 | ctx.qry.grep = xstrdup(value); | 189 | ctx.qry.grep = xstrdup(value); |
190 | } else if (!strcmp(name, "q")) { | 190 | } else if (!strcmp(name, "q")) { |
191 | ctx.qry.search = xstrdup(value); | 191 | ctx.qry.search = xstrdup(value); |
192 | } else if (!strcmp(name, "h")) { | 192 | } else if (!strcmp(name, "h")) { |
193 | ctx.qry.head = xstrdup(value); | 193 | ctx.qry.head = xstrdup(value); |
194 | ctx.qry.has_symref = 1; | 194 | ctx.qry.has_symref = 1; |
195 | } else if (!strcmp(name, "id")) { | 195 | } else if (!strcmp(name, "id")) { |
196 | ctx.qry.sha1 = xstrdup(value); | 196 | ctx.qry.sha1 = xstrdup(value); |
197 | ctx.qry.has_sha1 = 1; | 197 | ctx.qry.has_sha1 = 1; |
198 | } else if (!strcmp(name, "id2")) { | 198 | } else if (!strcmp(name, "id2")) { |
199 | ctx.qry.sha2 = xstrdup(value); | 199 | ctx.qry.sha2 = xstrdup(value); |
200 | ctx.qry.has_sha1 = 1; | 200 | ctx.qry.has_sha1 = 1; |
201 | } else if (!strcmp(name, "ofs")) { | 201 | } else if (!strcmp(name, "ofs")) { |
202 | ctx.qry.ofs = atoi(value); | 202 | ctx.qry.ofs = atoi(value); |
203 | } else if (!strcmp(name, "path")) { | 203 | } else if (!strcmp(name, "path")) { |
204 | ctx.qry.path = trim_end(value, '/'); | 204 | ctx.qry.path = trim_end(value, '/'); |
205 | } else if (!strcmp(name, "name")) { | 205 | } else if (!strcmp(name, "name")) { |
206 | ctx.qry.name = xstrdup(value); | 206 | ctx.qry.name = xstrdup(value); |
207 | } else if (!strcmp(name, "mimetype")) { | 207 | } else if (!strcmp(name, "mimetype")) { |
208 | ctx.qry.mimetype = xstrdup(value); | 208 | ctx.qry.mimetype = xstrdup(value); |
209 | } else if (!strcmp(name, "s")){ | 209 | } else if (!strcmp(name, "s")){ |
210 | ctx.qry.sort = xstrdup(value); | 210 | ctx.qry.sort = xstrdup(value); |
211 | } else if (!strcmp(name, "showmsg")) { | 211 | } else if (!strcmp(name, "showmsg")) { |
212 | ctx.qry.showmsg = atoi(value); | 212 | ctx.qry.showmsg = atoi(value); |
213 | } else if (!strcmp(name, "period")) { | 213 | } else if (!strcmp(name, "period")) { |
214 | ctx.qry.period = xstrdup(value); | 214 | ctx.qry.period = xstrdup(value); |
215 | } | 215 | } |
216 | } | 216 | } |
217 | 217 | ||
218 | static void prepare_context(struct cgit_context *ctx) | 218 | static void prepare_context(struct cgit_context *ctx) |
219 | { | 219 | { |
220 | memset(ctx, 0, sizeof(ctx)); | 220 | memset(ctx, 0, sizeof(ctx)); |
221 | ctx->cfg.agefile = "info/web/last-modified"; | 221 | ctx->cfg.agefile = "info/web/last-modified"; |
222 | ctx->cfg.nocache = 0; | 222 | ctx->cfg.nocache = 0; |
223 | ctx->cfg.cache_size = 0; | 223 | ctx->cfg.cache_size = 0; |
224 | ctx->cfg.cache_dynamic_ttl = 5; | 224 | ctx->cfg.cache_dynamic_ttl = 5; |
225 | ctx->cfg.cache_max_create_time = 5; | 225 | ctx->cfg.cache_max_create_time = 5; |
226 | ctx->cfg.cache_repo_ttl = 5; | 226 | ctx->cfg.cache_repo_ttl = 5; |
227 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; | 227 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; |
228 | ctx->cfg.cache_root_ttl = 5; | 228 | ctx->cfg.cache_root_ttl = 5; |
229 | ctx->cfg.cache_static_ttl = -1; | 229 | ctx->cfg.cache_static_ttl = -1; |
230 | ctx->cfg.css = "/cgit.css"; | 230 | ctx->cfg.css = "/cgit.css"; |
231 | ctx->cfg.logo = "/git-logo.png"; | 231 | ctx->cfg.logo = "/cgit.png"; |
232 | ctx->cfg.local_time = 0; | 232 | ctx->cfg.local_time = 0; |
233 | ctx->cfg.max_repo_count = 50; | 233 | ctx->cfg.max_repo_count = 50; |
234 | ctx->cfg.max_commit_count = 50; | 234 | ctx->cfg.max_commit_count = 50; |
235 | ctx->cfg.max_lock_attempts = 5; | 235 | ctx->cfg.max_lock_attempts = 5; |
236 | ctx->cfg.max_msg_len = 80; | 236 | ctx->cfg.max_msg_len = 80; |
237 | ctx->cfg.max_repodesc_len = 80; | 237 | ctx->cfg.max_repodesc_len = 80; |
238 | ctx->cfg.max_stats = 0; | 238 | ctx->cfg.max_stats = 0; |
239 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; | 239 | ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; |
240 | ctx->cfg.renamelimit = -1; | 240 | ctx->cfg.renamelimit = -1; |
241 | ctx->cfg.robots = "index, nofollow"; | 241 | ctx->cfg.robots = "index, nofollow"; |
242 | ctx->cfg.root_title = "Git repository browser"; | 242 | ctx->cfg.root_title = "Git repository browser"; |
243 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; | 243 | ctx->cfg.root_desc = "a fast webinterface for the git dscm"; |
244 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; | 244 | ctx->cfg.script_name = CGIT_SCRIPT_NAME; |
245 | ctx->cfg.summary_branches = 10; | 245 | ctx->cfg.summary_branches = 10; |
246 | ctx->cfg.summary_log = 10; | 246 | ctx->cfg.summary_log = 10; |
247 | ctx->cfg.summary_tags = 10; | 247 | ctx->cfg.summary_tags = 10; |
248 | ctx->page.mimetype = "text/html"; | 248 | ctx->page.mimetype = "text/html"; |
249 | ctx->page.charset = PAGE_ENCODING; | 249 | ctx->page.charset = PAGE_ENCODING; |
250 | ctx->page.filename = NULL; | 250 | ctx->page.filename = NULL; |
251 | ctx->page.size = 0; | 251 | ctx->page.size = 0; |
252 | ctx->page.modified = time(NULL); | 252 | ctx->page.modified = time(NULL); |
253 | ctx->page.expires = ctx->page.modified; | 253 | ctx->page.expires = ctx->page.modified; |
254 | ctx->page.etag = NULL; | 254 | ctx->page.etag = NULL; |
255 | memset(&ctx->cfg.mimetypes, 0, sizeof(struct string_list)); | 255 | memset(&ctx->cfg.mimetypes, 0, sizeof(struct string_list)); |
256 | } | 256 | } |
257 | 257 | ||
258 | struct refmatch { | 258 | struct refmatch { |
259 | char *req_ref; | 259 | char *req_ref; |
260 | char *first_ref; | 260 | char *first_ref; |
261 | int match; | 261 | int match; |
262 | }; | 262 | }; |
263 | 263 | ||
264 | int find_current_ref(const char *refname, const unsigned char *sha1, | 264 | int find_current_ref(const char *refname, const unsigned char *sha1, |
265 | int flags, void *cb_data) | 265 | int flags, void *cb_data) |
266 | { | 266 | { |
267 | struct refmatch *info; | 267 | struct refmatch *info; |
268 | 268 | ||
269 | info = (struct refmatch *)cb_data; | 269 | info = (struct refmatch *)cb_data; |
270 | if (!strcmp(refname, info->req_ref)) | 270 | if (!strcmp(refname, info->req_ref)) |
271 | info->match = 1; | 271 | info->match = 1; |
272 | if (!info->first_ref) | 272 | if (!info->first_ref) |
273 | info->first_ref = xstrdup(refname); | 273 | info->first_ref = xstrdup(refname); |
274 | return info->match; | 274 | return info->match; |
275 | } | 275 | } |
276 | 276 | ||
277 | char *find_default_branch(struct cgit_repo *repo) | 277 | char *find_default_branch(struct cgit_repo *repo) |
278 | { | 278 | { |
279 | struct refmatch info; | 279 | struct refmatch info; |
280 | char *ref; | 280 | char *ref; |
281 | 281 | ||
282 | info.req_ref = repo->defbranch; | 282 | info.req_ref = repo->defbranch; |
283 | info.first_ref = NULL; | 283 | info.first_ref = NULL; |
284 | info.match = 0; | 284 | info.match = 0; |
285 | for_each_branch_ref(find_current_ref, &info); | 285 | for_each_branch_ref(find_current_ref, &info); |
286 | if (info.match) | 286 | if (info.match) |
287 | ref = info.req_ref; | 287 | ref = info.req_ref; |
288 | else | 288 | else |
289 | ref = info.first_ref; | 289 | ref = info.first_ref; |
290 | if (ref) | 290 | if (ref) |
291 | ref = xstrdup(ref); | 291 | ref = xstrdup(ref); |
292 | return ref; | 292 | return ref; |
293 | } | 293 | } |
294 | 294 | ||
295 | static int prepare_repo_cmd(struct cgit_context *ctx) | 295 | static int prepare_repo_cmd(struct cgit_context *ctx) |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 4d656fe..54490eb 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -71,129 +71,129 @@ commit-filter:: | |||
71 | css:: | 71 | css:: |
72 | Url which specifies the css document to include in all cgit pages. | 72 | Url which specifies the css document to include in all cgit pages. |
73 | Default value: "/cgit.css". | 73 | Default value: "/cgit.css". |
74 | 74 | ||
75 | embedded:: | 75 | embedded:: |
76 | Flag which, when set to "1", will make cgit generate a html fragment | 76 | Flag which, when set to "1", will make cgit generate a html fragment |
77 | suitable for embedding in other html pages. Default value: none. See | 77 | suitable for embedding in other html pages. Default value: none. See |
78 | also: "noheader". | 78 | also: "noheader". |
79 | 79 | ||
80 | enable-index-links:: | 80 | enable-index-links:: |
81 | Flag which, when set to "1", will make cgit generate extra links for | 81 | Flag which, when set to "1", will make cgit generate extra links for |
82 | each repo in the repository index (specifically, to the "summary", | 82 | each repo in the repository index (specifically, to the "summary", |
83 | "commit" and "tree" pages). Default value: "0". | 83 | "commit" and "tree" pages). Default value: "0". |
84 | 84 | ||
85 | enable-log-filecount:: | 85 | enable-log-filecount:: |
86 | Flag which, when set to "1", will make cgit print the number of | 86 | Flag which, when set to "1", will make cgit print the number of |
87 | modified files for each commit on the repository log page. Default | 87 | modified files for each commit on the repository log page. Default |
88 | value: "0". | 88 | value: "0". |
89 | 89 | ||
90 | enable-log-linecount:: | 90 | enable-log-linecount:: |
91 | Flag which, when set to "1", will make cgit print the number of added | 91 | Flag which, when set to "1", will make cgit print the number of added |
92 | and removed lines for each commit on the repository log page. Default | 92 | and removed lines for each commit on the repository log page. Default |
93 | value: "0". | 93 | value: "0". |
94 | 94 | ||
95 | favicon:: | 95 | favicon:: |
96 | Url used as link to a shortcut icon for cgit. If specified, it is | 96 | Url used as link to a shortcut icon for cgit. If specified, it is |
97 | suggested to use the value "/favicon.ico" since certain browsers will | 97 | suggested to use the value "/favicon.ico" since certain browsers will |
98 | ignore other values. Default value: none. | 98 | ignore other values. Default value: none. |
99 | 99 | ||
100 | footer:: | 100 | footer:: |
101 | The content of the file specified with this option will be included | 101 | The content of the file specified with this option will be included |
102 | verbatim at the bottom of all pages (i.e. it replaces the standard | 102 | verbatim at the bottom of all pages (i.e. it replaces the standard |
103 | "generated by..." message. Default value: none. | 103 | "generated by..." message. Default value: none. |
104 | 104 | ||
105 | head-include:: | 105 | head-include:: |
106 | The content of the file specified with this option will be included | 106 | The content of the file specified with this option will be included |
107 | verbatim in the html HEAD section on all pages. Default value: none. | 107 | verbatim in the html HEAD section on all pages. Default value: none. |
108 | 108 | ||
109 | header:: | 109 | header:: |
110 | The content of the file specified with this option will be included | 110 | The content of the file specified with this option will be included |
111 | verbatim at the top of all pages. Default value: none. | 111 | verbatim at the top of all pages. Default value: none. |
112 | 112 | ||
113 | include:: | 113 | include:: |
114 | Name of a configfile to include before the rest of the current config- | 114 | Name of a configfile to include before the rest of the current config- |
115 | file is parsed. Default value: none. | 115 | file is parsed. Default value: none. |
116 | 116 | ||
117 | index-header:: | 117 | index-header:: |
118 | The content of the file specified with this option will be included | 118 | The content of the file specified with this option will be included |
119 | verbatim above the repository index. This setting is deprecated, and | 119 | verbatim above the repository index. This setting is deprecated, and |
120 | will not be supported by cgit-1.0 (use root-readme instead). Default | 120 | will not be supported by cgit-1.0 (use root-readme instead). Default |
121 | value: none. | 121 | value: none. |
122 | 122 | ||
123 | index-info:: | 123 | index-info:: |
124 | The content of the file specified with this option will be included | 124 | The content of the file specified with this option will be included |
125 | verbatim below the heading on the repository index page. This setting | 125 | verbatim below the heading on the repository index page. This setting |
126 | is deprecated, and will not be supported by cgit-1.0 (use root-desc | 126 | is deprecated, and will not be supported by cgit-1.0 (use root-desc |
127 | instead). Default value: none. | 127 | instead). Default value: none. |
128 | 128 | ||
129 | local-time:: | 129 | local-time:: |
130 | Flag which, if set to "1", makes cgit print commit and tag times in the | 130 | Flag which, if set to "1", makes cgit print commit and tag times in the |
131 | servers timezone. Default value: "0". | 131 | servers timezone. Default value: "0". |
132 | 132 | ||
133 | logo:: | 133 | logo:: |
134 | Url which specifies the source of an image which will be used as a logo | 134 | Url which specifies the source of an image which will be used as a logo |
135 | on all cgit pages. | 135 | on all cgit pages. Default value: "/cgit.png". |
136 | 136 | ||
137 | logo-link:: | 137 | logo-link:: |
138 | Url loaded when clicking on the cgit logo image. If unspecified the | 138 | Url loaded when clicking on the cgit logo image. If unspecified the |
139 | calculated url of the repository index page will be used. Default | 139 | calculated url of the repository index page will be used. Default |
140 | value: none. | 140 | value: none. |
141 | 141 | ||
142 | max-commit-count:: | 142 | max-commit-count:: |
143 | Specifies the number of entries to list per page in "log" view. Default | 143 | Specifies the number of entries to list per page in "log" view. Default |
144 | value: "50". | 144 | value: "50". |
145 | 145 | ||
146 | max-message-length:: | 146 | max-message-length:: |
147 | Specifies the maximum number of commit message characters to display in | 147 | Specifies the maximum number of commit message characters to display in |
148 | "log" view. Default value: "80". | 148 | "log" view. Default value: "80". |
149 | 149 | ||
150 | max-repo-count:: | 150 | max-repo-count:: |
151 | Specifies the number of entries to list per page on therepository | 151 | Specifies the number of entries to list per page on therepository |
152 | index page. Default value: "50". | 152 | index page. Default value: "50". |
153 | 153 | ||
154 | max-repodesc-length:: | 154 | max-repodesc-length:: |
155 | Specifies the maximum number of repo description characters to display | 155 | Specifies the maximum number of repo description characters to display |
156 | on the repository index page. Default value: "80". | 156 | on the repository index page. Default value: "80". |
157 | 157 | ||
158 | max-stats:: | 158 | max-stats:: |
159 | Set the default maximum statistics period. Valid values are "week", | 159 | Set the default maximum statistics period. Valid values are "week", |
160 | "month", "quarter" and "year". If unspecified, statistics are | 160 | "month", "quarter" and "year". If unspecified, statistics are |
161 | disabled. Default value: none. See also: "repo.max-stats". | 161 | disabled. Default value: none. See also: "repo.max-stats". |
162 | 162 | ||
163 | mimetype.<ext>:: | 163 | mimetype.<ext>:: |
164 | Set the mimetype for the specified filename extension. This is used | 164 | Set the mimetype for the specified filename extension. This is used |
165 | by the `plain` command when returning blob content. | 165 | by the `plain` command when returning blob content. |
166 | 166 | ||
167 | module-link:: | 167 | module-link:: |
168 | Text which will be used as the formatstring for a hyperlink when a | 168 | Text which will be used as the formatstring for a hyperlink when a |
169 | submodule is printed in a directory listing. The arguments for the | 169 | submodule is printed in a directory listing. The arguments for the |
170 | formatstring are the path and SHA1 of the submodule commit. Default | 170 | formatstring are the path and SHA1 of the submodule commit. Default |
171 | value: "./?repo=%s&page=commit&id=%s" | 171 | value: "./?repo=%s&page=commit&id=%s" |
172 | 172 | ||
173 | nocache:: | 173 | nocache:: |
174 | If set to the value "1" caching will be disabled. This settings is | 174 | If set to the value "1" caching will be disabled. This settings is |
175 | deprecated, and will not be honored starting with cgit-1.0. Default | 175 | deprecated, and will not be honored starting with cgit-1.0. Default |
176 | value: "0". | 176 | value: "0". |
177 | 177 | ||
178 | noplainemail:: | 178 | noplainemail:: |
179 | If set to "1" showing full author email adresses will be disabled. | 179 | If set to "1" showing full author email adresses will be disabled. |
180 | Default value: "0". | 180 | Default value: "0". |
181 | 181 | ||
182 | noheader:: | 182 | noheader:: |
183 | Flag which, when set to "1", will make cgit omit the standard header | 183 | Flag which, when set to "1", will make cgit omit the standard header |
184 | on all pages. Default value: none. See also: "embedded". | 184 | on all pages. Default value: none. See also: "embedded". |
185 | 185 | ||
186 | renamelimit:: | 186 | renamelimit:: |
187 | Maximum number of files to consider when detecting renames. The value | 187 | Maximum number of files to consider when detecting renames. The value |
188 | "-1" uses the compiletime value in git (for further info, look at | 188 | "-1" uses the compiletime value in git (for further info, look at |
189 | `man git-diff`). Default value: "-1". | 189 | `man git-diff`). Default value: "-1". |
190 | 190 | ||
191 | repo.group:: | 191 | repo.group:: |
192 | A value for the current repository group, which all repositories | 192 | A value for the current repository group, which all repositories |
193 | specified after this setting will inherit. Default value: none. | 193 | specified after this setting will inherit. Default value: none. |
194 | 194 | ||
195 | robots:: | 195 | robots:: |
196 | Text used as content for the "robots" meta-tag. Default value: | 196 | Text used as content for the "robots" meta-tag. Default value: |
197 | "index, nofollow". | 197 | "index, nofollow". |
198 | 198 | ||
199 | root-desc:: | 199 | root-desc:: |