From b1f9b9c1459cb9a30ebf80721aff6ef788d1f891 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Sat, 23 Feb 2008 22:45:33 +0100 Subject: Introduce html.h All html-functions can be quite easily separated from the rest of cgit, so lets do it; the only issue was html_filemode which uses some git-defined macros so the function is moved into ui-shared.c::cgit_print_filemode(). Signed-off-by: Lars Hjemli --- cgit.c | 1 - cgit.h | 15 +-------------- html.c | 31 ++++++++++++------------------- html.h | 18 ++++++++++++++++++ shared.c | 2 -- ui-blob.c | 9 +++++++++ ui-commit.c | 7 ++++--- ui-diff.c | 2 +- ui-log.c | 1 + ui-patch.c | 1 + ui-refs.c | 4 +--- ui-repolist.c | 3 ++- ui-shared.c | 16 ++++++++++++++++ ui-snapshot.c | 1 + ui-summary.c | 1 + ui-tag.c | 2 +- ui-tree.c | 3 ++- 17 files changed, 71 insertions(+), 46 deletions(-) create mode 100644 html.h diff --git a/cgit.c b/cgit.c index 2c933dc..e6b4526 100644 --- a/cgit.c +++ b/cgit.c @@ -291,7 +291,6 @@ int main(int argc, const char **argv) const char *cgit_config_env = getenv("CGIT_CONFIG"); cgit_prepare_context(&ctx); - htmlfd = STDOUT_FILENO; item.st.st_mtime = time(NULL); cgit_repolist.length = 0; cgit_repolist.count = 0; diff --git a/cgit.h b/cgit.h index 598d8c3..5b7ee1c 100644 --- a/cgit.h +++ b/cgit.h @@ -186,8 +186,6 @@ extern struct cgit_repolist cgit_repolist; extern struct cgit_context ctx; extern int cgit_cmd; -extern int htmlfd; - extern void cgit_prepare_context(struct cgit_context *ctx); extern int cgit_get_cmd_index(const char *cmd); extern struct cgit_repo *cgit_get_repoinfo(const char *url); @@ -222,18 +220,6 @@ extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); extern char *fmt(const char *format,...); -extern void html(const char *txt); -extern void htmlf(const char *format,...); -extern void html_txt(char *txt); -extern void html_ntxt(int len, char *txt); -extern void html_attr(char *txt); -extern void html_hidden(char *name, char *value); -extern void html_option(char *value, char *text, char *selected_value); -extern void html_link_open(char *url, char *title, char *class); -extern void html_link_close(void); -extern void html_filemode(unsigned short mode); -extern int html_include(const char *filename); - extern int cgit_read_config(const char *filename, configfn fn); extern int cgit_parse_query(char *txt, configfn fn); extern struct commitinfo *cgit_parse_commit(struct commit *commit); @@ -280,6 +266,7 @@ extern void cgit_print_pageheader(char *title, int show_search); extern void cgit_print_snapshot_start(const char *mimetype, const char *filename, struct cacheitem *item); +extern void cgit_print_filemode(unsigned short mode); extern void cgit_print_branches(int maxcount); extern void cgit_print_tags(int maxcount); diff --git a/html.c b/html.c index eb163d9..0962e71 100644 --- a/html.c +++ b/html.c @@ -6,7 +6,13 @@ * (see COPYING for full license text) */ -#include "cgit.h" +#include +#include +#include +#include +#include + +int htmlfd = STDOUT_FILENO; char *fmt(const char *format, ...) { @@ -21,8 +27,10 @@ char *fmt(const char *format, ...) va_start(args, format); len = vsnprintf(buf[bufidx], sizeof(buf[bufidx]), format, args); va_end(args); - if (len>sizeof(buf[bufidx])) - die("[html.c] string truncated: %s", format); + if (len>sizeof(buf[bufidx])) { + fprintf(stderr, "[html.c] string truncated: %s\n", format); + exit(1); + } return buf[bufidx]; } @@ -160,25 +168,10 @@ void html_link_close(void) void html_fileperm(unsigned short mode) { - htmlf("%c%c%c", (mode & 4 ? 'r' : '-'), + htmlf("%c%c%c", (mode & 4 ? 'r' : '-'), (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-')); } -void html_filemode(unsigned short mode) -{ - if (S_ISDIR(mode)) - html("d"); - else if (S_ISLNK(mode)) - html("l"); - else if (S_ISGITLINK(mode)) - html("m"); - else - html("-"); - html_fileperm(mode >> 6); - html_fileperm(mode >> 3); - html_fileperm(mode); -} - int html_include(const char *filename) { FILE *f; diff --git a/html.h b/html.h new file mode 100644 index 0000000..63f4551 --- /dev/null +++ b/html.h @@ -0,0 +1,18 @@ +#ifndef HTML_H +#define HTML_H + +extern int htmlfd; + +extern void html(const char *txt); +extern void htmlf(const char *format,...); +extern void html_txt(char *txt); +extern void html_ntxt(int len, char *txt); +extern void html_attr(char *txt); +extern void html_hidden(char *name, char *value); +extern void html_option(char *value, char *text, char *selected_value); +extern void html_link_open(char *url, char *title, char *class); +extern void html_link_close(void); +extern void html_fileperm(unsigned short mode); +extern int html_include(const char *filename); + +#endif /* HTML_H */ diff --git a/shared.c b/shared.c index 808e674..76e10d0 100644 --- a/shared.c +++ b/shared.c @@ -14,8 +14,6 @@ int cgit_cmd; const char *cgit_version = CGIT_VERSION; -int htmlfd = 0; - void cgit_prepare_context(struct cgit_context *ctx) { memset(ctx, 0, sizeof(ctx)); diff --git a/ui-blob.c b/ui-blob.c index f5b844b..be4fb88 100644 --- a/ui-blob.c +++ b/ui-blob.c @@ -1,4 +1,13 @@ +/* ui-blob.c: show blob content + * + * Copyright (C) 2008 Lars Hjemli + * + * Licensed under GNU General Public License v2 + * (see COPYING for full license text) + */ + #include "cgit.h" +#include "html.h" void cgit_print_blob(struct cacheitem *item, const char *hex, char *path) { diff --git a/ui-commit.c b/ui-commit.c index 25721ca..ed25824 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" static int files, slots; static int total_adds, total_rems, max_changes; @@ -62,16 +63,16 @@ void print_fileinfo(struct fileinfo *info) html(""); htmlf(""); if (is_null_sha1(info->new_sha1)) { - html_filemode(info->old_mode); + cgit_print_filemode(info->old_mode); } else { - html_filemode(info->new_mode); + cgit_print_filemode(info->new_mode); } if (info->old_mode != info->new_mode && !is_null_sha1(info->old_sha1) && !is_null_sha1(info->new_sha1)) { html("["); - html_filemode(info->old_mode); + cgit_print_filemode(info->old_mode); html("]"); } htmlf("", class); diff --git a/ui-diff.c b/ui-diff.c index 263a7ba..5c3bc98 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -7,7 +7,7 @@ */ #include "cgit.h" - +#include "html.h" unsigned char old_rev_sha1[20]; unsigned char new_rev_sha1[20]; diff --git a/ui-log.c b/ui-log.c index 72e2a4b..e1d324d 100644 --- a/ui-log.c +++ b/ui-log.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" int files, add_lines, rem_lines; diff --git a/ui-patch.c b/ui-patch.c index 1da0a27..d93426b 100644 --- a/ui-patch.c +++ b/ui-patch.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" static void print_line(char *line, int len) { diff --git a/ui-refs.c b/ui-refs.c index ba513c1..e2a16f4 100644 --- a/ui-refs.c +++ b/ui-refs.c @@ -7,9 +7,7 @@ */ #include "cgit.h" - - - +#include "html.h" void cgit_print_refs() { diff --git a/ui-repolist.c b/ui-repolist.c index 5fde174..cd4e41d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -6,9 +6,10 @@ * (see COPYING for full license text) */ -#include "cgit.h" #include +#include "cgit.h" +#include "html.h" time_t read_agefile(char *path) { diff --git a/ui-shared.c b/ui-shared.c index cc1ab8b..2eff79d 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" const char cgit_doctype[] = "> 6); + html_fileperm(mode >> 3); + html_fileperm(mode); +} + /* vim:set sw=8: */ diff --git a/ui-snapshot.c b/ui-snapshot.c index dfedd8f..67dbbdd 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) { diff --git a/ui-summary.c b/ui-summary.c index 3baac08..0afa0a3 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" static int header; diff --git a/ui-tag.c b/ui-tag.c index 6d761f3..2998d02 100644 --- a/ui-tag.c +++ b/ui-tag.c @@ -7,7 +7,7 @@ */ #include "cgit.h" - +#include "html.h" static void print_tag_content(char *buf) { diff --git a/ui-tree.c b/ui-tree.c index df05ad3..7912784 100644 --- a/ui-tree.c +++ b/ui-tree.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "html.h" char *curr_rev; char *match_path; @@ -79,7 +80,7 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, } html(""); - html_filemode(mode); + cgit_print_filemode(mode); html(""); if (S_ISGITLINK(mode)) { htmlf("