all repos — cgit @ b1f9b9c1459cb9a30ebf80721aff6ef788d1f891

a hyperfast web frontend for git written in c

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 <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Sat, 23 Feb 2008 22:45:33 +0100
commit

b1f9b9c1459cb9a30ebf80721aff6ef788d1f891

parent

b88fb016d0209f7041ac7d3b4d2c077318407a4d

M cgit.ccgit.c

@@ -291,7 +291,6 @@ struct cacheitem item;

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;
M cgit.hcgit.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);

@@ -221,18 +219,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);

@@ -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);
M html.chtml.c

@@ -6,7 +6,13 @@ * Licensed under GNU General Public License v2

* (see COPYING for full license text) */ -#include "cgit.h" +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> + +int htmlfd = STDOUT_FILENO; char *fmt(const char *format, ...) {

@@ -21,8 +27,10 @@

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,23 +168,8 @@ }

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)
A 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 */
M shared.cshared.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));
M ui-blob.cui-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) {
M ui-commit.cui-commit.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" static int files, slots; static int total_adds, total_rems, max_changes;

@@ -62,16 +63,16 @@

html("<tr>"); htmlf("<td class='mode'>"); 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("<span class='modechange'>["); - html_filemode(info->old_mode); + cgit_print_filemode(info->old_mode); html("]</span>"); } htmlf("</td><td class='%s'>", class);
M ui-diff.cui-diff.c

@@ -7,7 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" - +#include "html.h" unsigned char old_rev_sha1[20]; unsigned char new_rev_sha1[20];
M ui-log.cui-log.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" int files, add_lines, rem_lines;
M ui-patch.cui-patch.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" static void print_line(char *line, int len) {
M ui-refs.cui-refs.c

@@ -7,9 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" - - - +#include "html.h" void cgit_print_refs() {
M ui-repolist.cui-repolist.c

@@ -6,9 +6,10 @@ * Licensed under GNU General Public License v2

* (see COPYING for full license text) */ -#include "cgit.h" #include <time.h> +#include "cgit.h" +#include "html.h" time_t read_agefile(char *path) {
M ui-shared.cui-shared.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" const char cgit_doctype[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"

@@ -565,6 +566,21 @@ htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime));

htmlf("Expires: %s\n", http_date(item->st.st_mtime + ttl_seconds(item->ttl))); html("\n"); +} + +void cgit_print_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); } /* vim:set sw=8: */
M ui-snapshot.cui-snapshot.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) {
M ui-summary.cui-summary.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" static int header;
M ui-tag.cui-tag.c

@@ -7,7 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" - +#include "html.h" static void print_tag_content(char *buf) {
M ui-tree.cui-tree.c

@@ -7,6 +7,7 @@ * (see COPYING for full license text)

*/ #include "cgit.h" +#include "html.h" char *curr_rev; char *match_path;

@@ -79,7 +80,7 @@ return 0;

} html("<tr><td class='ls-mode'>"); - html_filemode(mode); + cgit_print_filemode(mode); html("</td><td>"); if (S_ISGITLINK(mode)) { htmlf("<a class='ls-mod' href='");