-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | cgit.css | 11 | ||||
-rw-r--r-- | cgit.h | 7 | ||||
-rw-r--r-- | parsing.c | 25 | ||||
-rw-r--r-- | shared.c | 2 | ||||
-rw-r--r-- | ui-log.c | 21 | ||||
-rw-r--r-- | ui-shared.c | 2 |
7 files changed, 55 insertions, 18 deletions
@@ -21,2 +21,7 @@ OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \ +ifdef NEEDS_LIBICONV + EXTLIBS += -liconv +endif + + .PHONY: all git install clean distclean emptycache force-version get-git @@ -111,3 +111,3 @@ div#sidebar div.infobox { div#sidebar div.infobox h1 { - font-size: 11pt; + font-size: 10pt; font-weight: bold; @@ -130,6 +130,3 @@ div#sidebar div.infobox select { width: 100%; - border: solid 1px #aaa; - background-color: #bbb; margin: 2px 0px 0px 0px; - padding: 0px; } @@ -142,6 +139,3 @@ input#switch-btn { width: 20px; - border: solid 1px #aaa; - background-color: #bbb; margin: 2px 0px 0px 0px; - padding: 0px; } @@ -150,6 +144,3 @@ div#sidebar div.infobox input.txt { width: 100%; - border: solid 1px #aaa; - background-color: #bbb; margin: 2px 0px 0px 0px; - padding: 0; } @@ -18,2 +18,3 @@ #include <xdiff/xdiff.h> +#include <utf8.h> @@ -50,2 +51,7 @@ +/* + * Default encoding + */ +#define PAGE_ENCODING "UTF-8" + typedef void (*configfn)(const char *name, const char *value); @@ -92,2 +98,3 @@ struct commitinfo { char *msg; + char *msg_encoding; }; @@ -201,2 +201,3 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) ret->msg = NULL; + ret->msg_encoding = NULL; @@ -235,2 +236,10 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) + if (!strncmp(p, "encoding ", 9)) { + p += 9; + t = strchr(p, '\n') + 1; + ret->msg_encoding = substr(p, t); + p = t; + } else + ret->msg_encoding = xstrdup(PAGE_ENCODING); + while (*p && (*p != '\n')) @@ -255,2 +264,18 @@ struct commitinfo *cgit_parse_commit(struct commit *commit) + if(strcmp(ret->msg_encoding, PAGE_ENCODING)) { + t = reencode_string(ret->subject, PAGE_ENCODING, + ret->msg_encoding); + if(t) { + free(ret->subject); + ret->subject = t; + } + + t = reencode_string(ret->msg, PAGE_ENCODING, + ret->msg_encoding); + if(t) { + free(ret->msg); + ret->msg = t; + } + } + return ret; @@ -269,2 +269,4 @@ void *cgit_free_commitinfo(struct commitinfo *info) free(info->subject); + free(info->msg); + free(info->msg_encoding); free(info); @@ -10,3 +10,3 @@ -int files, lines; +int files, add_lines, rem_lines; @@ -14,4 +14,10 @@ void count_lines(char *line, int size) { - if (size>0 && (line[0] == '+' || line[0] == '-')) - lines++; + if (size <= 0) + return; + + if (line[0] == '+') + add_lines++; + + else if (line[0] == '-') + rem_lines++; } @@ -37,3 +43,4 @@ void print_commit(struct commit *commit) files = 0; - lines = 0; + add_lines = 0; + rem_lines = 0; cgit_diff_commit(commit, inspect_files); @@ -43,3 +50,3 @@ void print_commit(struct commit *commit) html("</td><td class='right'>"); - htmlf("%d", lines); + htmlf("-%d/+%d", rem_lines, add_lines); } @@ -90,5 +97,5 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern if (cgit_repo->enable_log_filecount) { - html("<th class='left'>Files</th>"); + html("<th class='right'>Files</th>"); if (cgit_repo->enable_log_linecount) - html("<th class='left'>Lines</th>"); + html("<th class='right'>Lines</th>"); } diff --git a/ui-shared.c b/ui-shared.c index 72a7b44..7c69f60 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -354,3 +354,3 @@ void cgit_print_docstart(char *title, struct cacheitem *item) { - html("Content-Type: text/html; charset=utf-8\n"); + html("Content-Type: text/html; charset=" PAGE_ENCODING "\n"); htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); |