commit - e9e0377f452e9d3f600011e0714cc6c779f10bab
commit + f9b5f5fbdf2ae49a4e217212d261d89d83dacd7e
blob - d7c46fec7c87d40438428eec977f6b44df1daed1
blob + 532cb2f0f6b9415c1433f00e174bb0fd10c72992
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
struct server *srv = NULL;
struct querystring *qs = NULL;
struct repo_dir *repo_dir = NULL;
+ const char *rss_ctype = "application/rss+xml;charset=utf-8";
+ const uint8_t *buf;
+ size_t len;
+ int r, binary = 0;
/* init the transport */
error = gotweb_init_transport(&c->t);
goto err;
}
- if (qs->action == BLOBRAW) {
- const uint8_t *buf;
- size_t len;
- int binary, r;
-
+ if (qs->action == BLOBRAW || qs->action == BLOB) {
error = got_get_repo_commits(c, 1);
if (error)
goto err;
&binary, c);
if (error)
goto err;
+ }
+
+ switch(qs->action) {
+ case BLAME:
+ error = got_get_repo_commits(c, 1);
+ if (error) {
+ log_warnx("%s: %s", __func__, error->msg);
+ goto err;
+ }
+ if (gotweb_reply(c, 200, "text/html", NULL) == -1)
+ return;
+ gotweb_render_page(c->tp, gotweb_render_blame);
+ return;
+ case BLOB:
+ if (binary) {
+ struct gotweb_url url = {
+ .index_page = -1,
+ .page = -1,
+ .action = BLOBRAW,
+ .path = qs->path,
+ .commit = qs->commit,
+ .folder = qs->folder,
+ .file = qs->file,
+ };
+ gotweb_reply(c, 302, NULL, &url);
+ return;
+ }
+
+ if (gotweb_reply(c, 200, "text/html", NULL) == -1)
+ return;
+ gotweb_render_page(c->tp, gotweb_render_blob);
+ return;
+ case BLOBRAW:
if (binary)
r = gotweb_reply_file(c, "application/octet-stream",
qs->file, NULL);
buf = got_object_blob_get_read_buf(c->t->blob);
if (fcgi_gen_binary_response(c, buf, len) == -1)
break;
- }
-
- return;
- }
-
- if (qs->action == BLOB) {
- int binary;
- struct gotweb_url url = {
- .index_page = -1,
- .page = -1,
- .action = BLOBRAW,
- .path = qs->path,
- .commit = qs->commit,
- .folder = qs->folder,
- .file = qs->file,
- };
-
- error = got_get_repo_commits(c, 1);
- if (error)
- goto err;
-
- error = got_open_blob_for_output(&c->t->blob, &c->t->fd,
- &binary, c);
- if (error)
- goto err;
- if (binary) {
- gotweb_reply(c, 302, NULL, &url);
- return;
}
- }
-
- if (qs->action == RSS) {
- const char *ctype = "application/rss+xml;charset=utf-8";
-
- if (gotweb_reply_file(c, ctype, repo_dir->name, ".rss") == -1)
- return;
-
- error = got_get_repo_tags(c, D_MAXSLCOMMDISP);
- if (error) {
- log_warnx("%s: %s", __func__, error->msg);
- return;
- }
- gotweb_render_rss(c->tp);
return;
- }
-
- switch(qs->action) {
- case BLAME:
- error = got_get_repo_commits(c, 1);
- if (error) {
- log_warnx("%s: %s", __func__, error->msg);
- goto err;
- }
- if (gotweb_reply(c, 200, "text/html", NULL) == -1)
- return;
- gotweb_render_page(c->tp, gotweb_render_blame);
- return;
- case BLOB:
- if (gotweb_reply(c, 200, "text/html", NULL) == -1)
- return;
- gotweb_render_page(c->tp, gotweb_render_blob);
- return;
case BRIEFS:
if (gotweb_reply(c, 200, "text/html", NULL) == -1)
return;
return;
gotweb_render_page(c->tp, gotweb_render_index);
return;
+ case RSS:
+ error = got_get_repo_tags(c, D_MAXSLCOMMDISP);
+ if (error)
+ goto err;
+ if (gotweb_reply_file(c, rss_ctype, repo_dir->name, ".rss")
+ == -1)
+ return;
+ gotweb_render_rss(c->tp);
+ return;
case SUMMARY:
error = got_ref_list(&c->t->refs, c->t->repo, "refs/heads",
got_ref_cmp_by_name, NULL);