aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lars Hjemli <hjemli@gmail.com>2008-09-02 05:40:55 (JST)
committerGravatar Lars Hjemli <hjemli@gmail.com>2008-09-02 05:40:55 (JST)
commitd532c4d1612c94347427fa1afda6afb7c34e512a (patch)
tree53f3f86ba8e78051bee96cb65a6219ef43d9adab
parent288d502b3d8e7fa916104b486bbb146521e5c716 (diff)
parent885096c189574b1cf2e0897cc05aadd7b092a677 (diff)
downloadcgit-d532c4d1612c94347427fa1afda6afb7c34e512a.zip
cgit-d532c4d1612c94347427fa1afda6afb7c34e512a.tar.gz
Merge branch 'lh/plain'
* lh/plain: Supply status description to html_status() ui-tree: link to plain view instead of blob view Implement plain view
-rw-r--r--Makefile1
-rw-r--r--cgit.c1
-rw-r--r--cgit.h1
-rw-r--r--cmd.c7
-rw-r--r--html.c9
-rw-r--r--html.h3
-rw-r--r--ui-clone.c10
-rw-r--r--ui-plain.c82
-rw-r--r--ui-plain.h6
-rw-r--r--ui-shared.c8
-rw-r--r--ui-shared.h2
-rw-r--r--ui-tree.c8
12 files changed, 125 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index b002d44..e4265f7 100644
--- a/Makefile
+++ b/Makefile
@@ -62,6 +62,7 @@ OBJECTS += ui-commit.o
62OBJECTS += ui-diff.o 62OBJECTS += ui-diff.o
63OBJECTS += ui-log.o 63OBJECTS += ui-log.o
64OBJECTS += ui-patch.o 64OBJECTS += ui-patch.o
65OBJECTS += ui-plain.o
65OBJECTS += ui-refs.o 66OBJECTS += ui-refs.o
66OBJECTS += ui-repolist.o 67OBJECTS += ui-repolist.o
67OBJECTS += ui-shared.o 68OBJECTS += ui-shared.o
diff --git a/cgit.c b/cgit.c
index f49fffa..497337b 100644
--- a/cgit.c
+++ b/cgit.c
@@ -187,6 +187,7 @@ static void prepare_context(struct cgit_context *ctx)
187 ctx->page.mimetype = "text/html"; 187 ctx->page.mimetype = "text/html";
188 ctx->page.charset = PAGE_ENCODING; 188 ctx->page.charset = PAGE_ENCODING;
189 ctx->page.filename = NULL; 189 ctx->page.filename = NULL;
190 ctx->page.size = 0;
190 ctx->page.modified = time(NULL); 191 ctx->page.modified = time(NULL);
191 ctx->page.expires = ctx->page.modified; 192 ctx->page.expires = ctx->page.modified;
192} 193}
diff --git a/cgit.h b/cgit.h
index a1fa841..1615616 100644
--- a/cgit.h
+++ b/cgit.h
@@ -166,6 +166,7 @@ struct cgit_config {
166struct cgit_page { 166struct cgit_page {
167 time_t modified; 167 time_t modified;
168 time_t expires; 168 time_t expires;
169 size_t size;
169 char *mimetype; 170 char *mimetype;
170 char *charset; 171 char *charset;
171 char *filename; 172 char *filename;
diff --git a/cmd.c b/cmd.c
index 40ac53e..a989220 100644
--- a/cmd.c
+++ b/cmd.c
@@ -17,6 +17,7 @@
17#include "ui-diff.h" 17#include "ui-diff.h"
18#include "ui-log.h" 18#include "ui-log.h"
19#include "ui-patch.h" 19#include "ui-patch.h"
20#include "ui-plain.h"
20#include "ui-refs.h" 21#include "ui-refs.h"
21#include "ui-repolist.h" 22#include "ui-repolist.h"
22#include "ui-snapshot.h" 23#include "ui-snapshot.h"
@@ -91,6 +92,11 @@ static void patch_fn(struct cgit_context *ctx)
91 cgit_print_patch(ctx->qry.sha1); 92 cgit_print_patch(ctx->qry.sha1);
92} 93}
93 94
95static void plain_fn(struct cgit_context *ctx)
96{
97 cgit_print_plain(ctx);
98}
99
94static void refs_fn(struct cgit_context *ctx) 100static void refs_fn(struct cgit_context *ctx)
95{ 101{
96 cgit_print_refs(); 102 cgit_print_refs();
@@ -135,6 +141,7 @@ struct cgit_cmd *cgit_get_cmd(struct cgit_context *ctx)
135 def_cmd(ls_cache, 0, 0), 141 def_cmd(ls_cache, 0, 0),
136 def_cmd(objects, 1, 0), 142 def_cmd(objects, 1, 0),
137 def_cmd(patch, 1, 0), 143 def_cmd(patch, 1, 0),
144 def_cmd(plain, 1, 0),
138 def_cmd(refs, 1, 1), 145 def_cmd(refs, 1, 1),
139 def_cmd(repolist, 0, 0), 146 def_cmd(repolist, 0, 0),
140 def_cmd(snapshot, 1, 0), 147 def_cmd(snapshot, 1, 0),
diff --git a/html.c b/html.c
index 1237076..36e9a2f 100644
--- a/html.c
+++ b/html.c
@@ -35,6 +35,11 @@ char *fmt(const char *format, ...)
35 return buf[bufidx]; 35 return buf[bufidx];
36} 36}
37 37
38void html_raw(const char *data, size_t size)
39{
40 write(htmlfd, data, size);
41}
42
38void html(const char *txt) 43void html(const char *txt)
39{ 44{
40 write(htmlfd, txt, strlen(txt)); 45 write(htmlfd, txt, strlen(txt));
@@ -51,9 +56,9 @@ void htmlf(const char *format, ...)
51 html(buf); 56 html(buf);
52} 57}
53 58
54void html_status(int code, int more_headers) 59void html_status(int code, const char *msg, int more_headers)
55{ 60{
56 htmlf("Status: %d\n", code); 61 htmlf("Status: %d %s\n", code, msg);
57 if (!more_headers) 62 if (!more_headers)
58 html("\n"); 63 html("\n");
59} 64}
diff --git a/html.h b/html.h
index 2bde28d..3c32935 100644
--- a/html.h
+++ b/html.h
@@ -3,9 +3,10 @@
3 3
4extern int htmlfd; 4extern int htmlfd;
5 5
6extern void html_raw(const char *txt, size_t size);
6extern void html(const char *txt); 7extern void html(const char *txt);
7extern void htmlf(const char *format,...); 8extern void htmlf(const char *format,...);
8extern void html_status(int code, int more_headers); 9extern void html_status(int code, const char *msg, int more_headers);
9extern void html_txt(char *txt); 10extern void html_txt(char *txt);
10extern void html_ntxt(int len, char *txt); 11extern void html_ntxt(int len, char *txt);
11extern void html_attr(char *txt); 12extern void html_attr(char *txt);
diff --git a/ui-clone.c b/ui-clone.c
index 3a037ad..81e7a4e 100644
--- a/ui-clone.c
+++ b/ui-clone.c
@@ -48,20 +48,18 @@ static void print_pack_info(struct cgit_context *ctx)
48static void send_file(struct cgit_context *ctx, char *path) 48static void send_file(struct cgit_context *ctx, char *path)
49{ 49{
50 struct stat st; 50 struct stat st;
51 int err;
52 51
53 if (stat(path, &st)) { 52 if (stat(path, &st)) {
54 switch (errno) { 53 switch (errno) {
55 case ENOENT: 54 case ENOENT:
56 err = 404; 55 html_status(404, "Not found", 0);
57 break; 56 break;
58 case EACCES: 57 case EACCES:
59 err = 403; 58 html_status(403, "Forbidden", 0);
60 break; 59 break;
61 default: 60 default:
62 err = 400; 61 html_status(400, "Bad request", 0);
63 } 62 }
64 html_status(err, 0);
65 return; 63 return;
66 } 64 }
67 ctx->page.mimetype = "application/octet-stream"; 65 ctx->page.mimetype = "application/octet-stream";
@@ -86,7 +84,7 @@ void cgit_clone_info(struct cgit_context *ctx)
86void cgit_clone_objects(struct cgit_context *ctx) 84void cgit_clone_objects(struct cgit_context *ctx)
87{ 85{
88 if (!ctx->qry.path) { 86 if (!ctx->qry.path) {
89 html_status(400, 0); 87 html_status(400, "Bad request", 0);
90 return; 88 return;
91 }