summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2008-06-24 21:42:32 (UTC)
committer Michael Krelin <hacker@klever.net>2008-06-24 21:42:32 (UTC)
commit42effc939090b2fbf1b2b76cd1d9c30fabcd230e (patch) (unidiff)
treeba75a2bc400a2a1dab6417b33b97a0d020fabf0f
parent01d2dce7e73e3f022d186de27dd5d15574144ca8 (diff)
downloadcgit-42effc939090b2fbf1b2b76cd1d9c30fabcd230e.zip
cgit-42effc939090b2fbf1b2b76cd1d9c30fabcd230e.tar.gz
cgit-42effc939090b2fbf1b2b76cd1d9c30fabcd230e.tar.bz2
allow specification of directly linked blobs mimetypes
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c2
-rw-r--r--cgit.h1
-rw-r--r--ui-blob.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index ac882c3..0deae12 100644
--- a/cgit.c
+++ b/cgit.c
@@ -131,32 +131,34 @@ static void querystring_cb(const char *name, const char *value)
131 ctx.qry.search = xstrdup(value); 131 ctx.qry.search = xstrdup(value);
132 } else if (!strcmp(name, "h")) { 132 } else if (!strcmp(name, "h")) {
133 ctx.qry.head = xstrdup(value); 133 ctx.qry.head = xstrdup(value);
134 ctx.qry.has_symref = 1; 134 ctx.qry.has_symref = 1;
135 } else if (!strcmp(name, "id")) { 135 } else if (!strcmp(name, "id")) {
136 ctx.qry.sha1 = xstrdup(value); 136 ctx.qry.sha1 = xstrdup(value);
137 ctx.qry.has_sha1 = 1; 137 ctx.qry.has_sha1 = 1;
138 } else if (!strcmp(name, "id2")) { 138 } else if (!strcmp(name, "id2")) {
139 ctx.qry.sha2 = xstrdup(value); 139 ctx.qry.sha2 = xstrdup(value);
140 ctx.qry.has_sha1 = 1; 140 ctx.qry.has_sha1 = 1;
141 } else if (!strcmp(name, "ofs")) { 141 } else if (!strcmp(name, "ofs")) {
142 ctx.qry.ofs = atoi(value); 142 ctx.qry.ofs = atoi(value);
143 } else if (!strcmp(name, "path")) { 143 } else if (!strcmp(name, "path")) {
144 ctx.qry.path = trim_end(value, '/'); 144 ctx.qry.path = trim_end(value, '/');
145 } else if (!strcmp(name, "name")) { 145 } else if (!strcmp(name, "name")) {
146 ctx.qry.name = xstrdup(value); 146 ctx.qry.name = xstrdup(value);
147 } else if (!strcmp(name, "mimetype")) {
148 ctx.qry.mimetype = xstrdup(value);
147 } 149 }
148} 150}
149 151
150static void prepare_context(struct cgit_context *ctx) 152static void prepare_context(struct cgit_context *ctx)
151{ 153{
152 memset(ctx, 0, sizeof(ctx)); 154 memset(ctx, 0, sizeof(ctx));
153 ctx->cfg.agefile = "info/web/last-modified"; 155 ctx->cfg.agefile = "info/web/last-modified";
154 ctx->cfg.nocache = 0; 156 ctx->cfg.nocache = 0;
155 ctx->cfg.cache_size = 0; 157 ctx->cfg.cache_size = 0;
156 ctx->cfg.cache_dynamic_ttl = 5; 158 ctx->cfg.cache_dynamic_ttl = 5;
157 ctx->cfg.cache_max_create_time = 5; 159 ctx->cfg.cache_max_create_time = 5;
158 ctx->cfg.cache_repo_ttl = 5; 160 ctx->cfg.cache_repo_ttl = 5;
159 ctx->cfg.cache_root = CGIT_CACHE_ROOT; 161 ctx->cfg.cache_root = CGIT_CACHE_ROOT;
160 ctx->cfg.cache_root_ttl = 5; 162 ctx->cfg.cache_root_ttl = 5;
161 ctx->cfg.cache_static_ttl = -1; 163 ctx->cfg.cache_static_ttl = -1;
162 ctx->cfg.css = "/cgit.css"; 164 ctx->cfg.css = "/cgit.css";
diff --git a/cgit.h b/cgit.h
index 4fa5cf2..1972d75 100644
--- a/cgit.h
+++ b/cgit.h
@@ -103,32 +103,33 @@ struct reflist {
103 int count; 103 int count;
104}; 104};
105 105
106struct cgit_query { 106struct cgit_query {
107 int has_symref; 107 int has_symref;
108 int has_sha1; 108 int has_sha1;
109 char *raw; 109 char *raw;
110 char *repo; 110 char *repo;
111 char *page; 111 char *page;
112 char *search; 112 char *search;
113 char *grep; 113 char *grep;
114 char *head; 114 char *head;
115 char *sha1; 115 char *sha1;
116 char *sha2; 116 char *sha2;
117 char *path; 117 char *path;
118 char *name; 118 char *name;
119 char *mimetype;
119 int ofs; 120 int ofs;
120}; 121};
121 122
122struct cgit_config { 123struct cgit_config {
123 char *agefile; 124 char *agefile;
124 char *cache_root; 125 char *cache_root;
125 char *clone_prefix; 126 char *clone_prefix;
126 char *css; 127 char *css;
127 char *index_header; 128 char *index_header;
128 char *index_info; 129 char *index_info;
129 char *logo; 130 char *logo;
130 char *logo_link; 131 char *logo_link;
131 char *module_link; 132 char *module_link;
132 char *repo_group; 133 char *repo_group;
133 char *robots; 134 char *robots;
134 char *root_title; 135 char *root_title;
diff --git a/ui-blob.c b/ui-blob.c
index dd1bbce..73a8c1d 100644
--- a/ui-blob.c
+++ b/ui-blob.c
@@ -52,21 +52,21 @@ void cgit_print_blob(const char *hex, char *path, const char *head)
52 read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree); 52 read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree);
53 type = sha1_object_info(sha1,&size); 53 type = sha1_object_info(sha1,&size);
54 } 54 }
55 55
56 if (type == OBJ_BAD) { 56 if (type == OBJ_BAD) {
57 cgit_print_error(fmt("Bad object name: %s", hex)); 57 cgit_print_error(fmt("Bad object name: %s", hex));
58 return; 58 return;
59 } 59 }
60 60
61 buf = read_sha1_file(sha1, &type, &size); 61 buf = read_sha1_file(sha1, &type, &size);
62 if (!buf) { 62 if (!buf) {
63 cgit_print_error(fmt("Error reading object %s", hex)); 63 cgit_print_error(fmt("Error reading object %s", hex));
64 return; 64 return;
65 } 65 }
66 66
67 buf[size] = '\0'; 67 buf[size] = '\0';
68 ctx.page.mimetype = NULL; 68 ctx.page.mimetype = ctx.qry.mimetype;
69 ctx.page.filename = path; 69 ctx.page.filename = path;
70 cgit_print_http_headers(&ctx); 70 cgit_print_http_headers(&ctx);
71 write(htmlfd, buf, size); 71 write(htmlfd, buf, size);
72} 72}