-rw-r--r-- | cgit.c | 12 | ||||
-rw-r--r-- | cgit.h | 12 | ||||
-rw-r--r-- | ui-blob.c | 2 | ||||
-rw-r--r-- | ui-patch.c | 2 | ||||
-rw-r--r-- | ui-repolist.c | 2 | ||||
-rw-r--r-- | ui-snapshot.c | 3 |
6 files changed, 16 insertions, 17 deletions
@@ -60,49 +60,49 @@ int find_current_ref(const char *refname, const unsigned char *sha1, struct refmatch *info; info = (struct refmatch *)cb_data; if (!strcmp(refname, info->req_ref)) info->match = 1; if (!info->first_ref) info->first_ref = xstrdup(refname); return info->match; } char *find_default_branch(struct cgit_repo *repo) { struct refmatch info; info.req_ref = repo->defbranch; info.first_ref = NULL; info.match = 0; for_each_branch_ref(find_current_ref, &info); if (info.match) return info.req_ref; else return info.first_ref; } -static void cgit_print_repo_page(struct cacheitem *item) +static void cgit_print_repo_page() { char *tmp; int show_search; unsigned char sha1[20]; int nongit = 0; setenv("GIT_DIR", ctx.repo->path, 1); setup_git_directory_gently(&nongit); if (nongit) { ctx.page.title = fmt("%s - %s", ctx.cfg.root_title, "config error"); tmp = fmt("Not a git repository: '%s'", ctx.repo->path); ctx.repo = NULL; cgit_print_http_headers(&ctx); cgit_print_docstart(&ctx); cgit_print_pageheader(&ctx); cgit_print_error(tmp); cgit_print_docend(); return; } ctx.page.title = fmt("%s - %s", ctx.repo->name, ctx.repo->desc); show_search = 0; @@ -111,62 +111,62 @@ static void cgit_print_repo_page(struct cacheitem *item) ctx.repo->defbranch = ctx.qry.head; } if (!ctx.qry.head) { cgit_print_http_headers(&ctx); cgit_print_docstart(&ctx); cgit_print_pageheader(&ctx); cgit_print_error("Repository seems to be empty"); cgit_print_docend(); return; } if (get_sha1(ctx.qry.head, sha1)) { tmp = xstrdup(ctx.qry.head); ctx.qry.head = ctx.repo->defbranch; cgit_print_http_headers(&ctx); cgit_print_docstart(&ctx); cgit_print_pageheader(&ctx); cgit_print_error(fmt("Invalid branch: %s", tmp)); cgit_print_docend(); return; } if ((cgit_cmd == CMD_SNAPSHOT) && ctx.repo->snapshots) { - cgit_print_snapshot(item, ctx.qry.head, ctx.qry.sha1, + cgit_print_snapshot(ctx.qry.head, ctx.qry.sha1, cgit_repobasename(ctx.repo->url), ctx.qry.path, ctx.repo->snapshots ); return; } if (cgit_cmd == CMD_PATCH) { - cgit_print_patch(ctx.qry.sha1, item); + cgit_print_patch(ctx.qry.sha1); return; } if (cgit_cmd == CMD_BLOB) { - cgit_print_blob(item, ctx.qry.sha1, ctx.qry.path); + cgit_print_blob(ctx.qry.sha1, ctx.qry.path); return; } show_search = (cgit_cmd == CMD_LOG); cgit_print_http_headers(&ctx); cgit_print_docstart(&ctx); if (!cgit_cmd) { cgit_print_pageheader(&ctx); cgit_print_summary(); cgit_print_docend(); return; } cgit_print_pageheader(&ctx); switch(cgit_cmd) { case CMD_LOG: cgit_print_log(ctx.qry.sha1, ctx.qry.ofs, ctx.cfg.max_commit_count, ctx.qry.grep, ctx.qry.search, ctx.qry.path, 1); break; case CMD_TREE: cgit_print_tree(ctx.qry.sha1, ctx.qry.path); break; @@ -189,51 +189,51 @@ static void cgit_print_repo_page(struct cacheitem *item) } static long ttl_seconds(long ttl) { if (ttl<0) return 60 * 60 * 24 * 365; else return ttl * 60; } static void cgit_fill_cache(struct cacheitem *item, int use_cache) { int stdout2; if (use_cache) { stdout2 = chk_positive(dup(STDOUT_FILENO), "Preserving STDOUT"); chk_zero(close(STDOUT_FILENO), "Closing STDOUT"); chk_positive(dup2(item->fd, STDOUT_FILENO), "Dup2(cachefile)"); } ctx.page.modified = time(NULL); ctx.page.expires = ctx.page.modified + ttl_seconds(item->ttl); if (ctx.repo) - cgit_print_repo_page(item); + cgit_print_repo_page(); else - cgit_print_repolist(item); + cgit_print_repolist(); if (use_cache) { chk_zero(close(STDOUT_FILENO), "Close redirected STDOUT"); chk_positive(dup2(stdout2, STDOUT_FILENO), "Restoring original STDOUT"); chk_zero(close(stdout2), "Closing temporary STDOUT"); } } static void cgit_check_cache(struct cacheitem *item) { int i = 0; top: if (++i > ctx.cfg.max_lock_attempts) { die("cgit_refresh_cache: unable to lock %s: %s", item->name, strerror(errno)); } if (!cache_exist(item)) { if (!cache_lock(item)) { sleep(1); goto top; } if (!cache_exist(item)) { @@ -257,43 +257,43 @@ extern void cgit_log_link(char *name, char *title, char *class, char *head, char *rev, char *path, int ofs, char *grep, char *pattern); extern void cgit_commit_link(char *name, char *title, char *class, char *head, char *rev); extern void cgit_refs_link(char *name, char *title, char *class, char *head, char *rev, char *path); extern void cgit_snapshot_link(char *name, char *title, char *class, char *head, char *rev, char *archivename); extern void cgit_diff_link(char *name, char *title, char *class, char *head, char *new_rev, char *old_rev, char *path); extern void cgit_object_link(struct object *obj); extern void cgit_print_error(char *msg); extern void cgit_print_date(time_t secs, char *format); extern void cgit_print_age(time_t t, time_t max_relative, char *format); extern void cgit_print_http_headers(struct cgit_context *ctx); extern void cgit_print_docstart(struct cgit_context *ctx); extern void cgit_print_docend(); extern void cgit_print_pageheader(struct cgit_context *ctx); extern void cgit_print_filemode(unsigned short mode); extern void cgit_print_branches(int maxcount); extern void cgit_print_tags(int maxcount); -extern void cgit_print_repolist(struct cacheitem *item); +extern void cgit_print_repolist(); extern void cgit_print_summary(); extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, char *path, int pager); -extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); +extern void cgit_print_blob(const char *hex, char *path); extern void cgit_print_tree(const char *rev, char *path); extern void cgit_print_commit(char *hex); extern void cgit_print_refs(); extern void cgit_print_tag(char *revname); extern void cgit_print_diff(const char *new_hex, const char *old_hex, const char *prefix); -extern void cgit_print_patch(char *hex, struct cacheitem *item); -extern void cgit_print_snapshot(struct cacheitem *item, const char *head, - const char *hex, const char *prefix, - const char *filename, int snapshot); +extern void cgit_print_patch(char *hex); +extern void cgit_print_snapshot(const char *head, const char *hex, + const char *prefix, const char *filename, + int snapshot); extern void cgit_print_snapshot_links(const char *repo, const char *head, const char *hex, int snapshots); extern int cgit_parse_snapshots_mask(const char *str); #endif /* CGIT_H */ @@ -1,36 +1,36 @@ /* 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) +void cgit_print_blob(const char *hex, char *path) { unsigned char sha1[20]; enum object_type type; unsigned char *buf; unsigned long size; if (get_sha1_hex(hex, sha1)){ cgit_print_error(fmt("Bad hex value: %s", hex)); return; } type = sha1_object_info(sha1, &size); if (type == OBJ_BAD) { cgit_print_error(fmt("Bad object name: %s", hex)); return; } buf = read_sha1_file(sha1, &type, &size); if (!buf) { cgit_print_error(fmt("Error reading object %s", hex)); return; } @@ -48,49 +48,49 @@ static void header(unsigned char *sha1, char *path1, int mode1, htmlf(" %.6o", mode1); if (mode2 != mode1) htmlf("..%.6o", mode2); } htmlf("\n--- a/%s\n", path1); htmlf("+++ b/%s\n", path2); } } static void filepair_cb(struct diff_filepair *pair) { header(pair->one->sha1, pair->one->path, pair->one->mode, pair->two->sha1, pair->two->path, pair->two->mode); if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) { if (S_ISGITLINK(pair->one->mode)) print_line(fmt("-Subproject %s", sha1_to_hex(pair->one->sha1)), 52); if (S_ISGITLINK(pair->two->mode)) print_line(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52); return; } if (cgit_diff_files(pair->one->sha1, pair->two->sha1, print_line)) html("Error running diff"); } -void cgit_print_patch(char *hex, struct cacheitem *item) +void cgit_print_patch(char *hex) { struct commit *commit; struct commitinfo *info; unsigned char sha1[20], old_sha1[20]; char *patchname; if (!hex) hex = ctx.qry.head; if (get_sha1(hex, sha1)) { cgit_print_error(fmt("Bad object id: %s", hex)); return; } commit = lookup_commit_reference(sha1); if (!commit) { cgit_print_error(fmt("Bad commit reference: %s", hex)); return; } info = cgit_parse_commit(commit); hashcpy(old_sha1, commit->parents->item->object.sha1); patchname = fmt("%s.patch", sha1_to_hex(sha1)); ctx.page.mimetype = "text/plain"; ctx.page.filename = patchname; diff --git a/ui-repolist.c b/ui-repolist.c index e663585..ad9b1bc 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -22,49 +22,49 @@ time_t read_agefile(char *path) fclose(f); if (parse_date(buf, buf2, sizeof(buf2))) return strtoul(buf2, NULL, 10); else return 0; } static void print_modtime(struct cgit_repo *repo) { char *path; struct stat s; path = fmt("%s/%s", repo->path, ctx.cfg.agefile); if (stat(path, &s) == 0) { cgit_print_age(read_agefile(path), -1, NULL); return; } path = fmt("%s/refs/heads/%s", repo->path, repo->defbranch); if (stat(path, &s) != 0) return; cgit_print_age(s.st_mtime, -1, NULL); } -void cgit_print_repolist(struct cacheitem *item) +void cgit_print_repolist() { int i, columns = 4; char *last_group = NULL; if (ctx.cfg.enable_index_links) columns++; ctx.page.title = ctx.cfg.root_title; cgit_print_http_headers(&ctx); cgit_print_docstart(&ctx); cgit_print_pageheader(&ctx); html("<table summary='repository list' class='list nowrap'>"); if (ctx.cfg.index_header) { htmlf("<tr class='nohover'><td colspan='%d' class='include-block'>", columns); html_include(ctx.cfg.index_header); html("</td></tr>"); } html("<tr class='nohover'>" "<th class='left'>Name</th>" "<th class='left'>Description</th>" "<th class='left'>Owner</th>" "<th class='left'>Idle</th>"); diff --git a/ui-snapshot.c b/ui-snapshot.c index 4449803..c741469 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c @@ -48,50 +48,49 @@ static int write_compressed_tar_archive(struct archiver_args *args,const char *f static int write_tar_gzip_archive(struct archiver_args *args) { return write_compressed_tar_archive(args,"gzip"); } static int write_tar_bzip2_archive(struct archiver_args *args) { return write_compressed_tar_archive(args,"bzip2"); } static const struct snapshot_archive_t { const char *suffix; const char *mimetype; write_archive_fn_t write_func; int bit; } snapshot_archives[] = { { ".zip", "application/x-zip", write_zip_archive, 0x1 }, { ".tar.gz", "application/x-tar", write_tar_gzip_archive, 0x2 }, { ".tar.bz2", "application/x-tar", write_tar_bzip2_archive, 0x4 }, { ".tar", "application/x-tar", write_tar_archive, 0x8 } }; #define snapshot_archives_len (sizeof(snapshot_archives) / sizeof(*snapshot_archives)) -void cgit_print_snapshot(struct cacheitem *item, const char *head, - const char *hex, const char *prefix, +void cgit_print_snapshot(const char *head, const char *hex, const char *prefix, const char *filename, int snapshots) { const struct snapshot_archive_t* sat; struct archiver_args args; struct commit *commit; unsigned char sha1[20]; int f, sl, fnl = strlen(filename); for(f=0; f<snapshot_archives_len; f++) { sat = &snapshot_archives[f]; if(!(snapshots & sat->bit)) continue; sl = strlen(sat->suffix); if(fnl<sl || strcmp(&filename[fnl-sl],sat->suffix)) continue; if (!hex) hex = head; if(get_sha1(hex, sha1)) { cgit_print_error(fmt("Bad object id: %s", hex)); return; } commit = lookup_commit_reference(sha1); if(!commit) { cgit_print_error(fmt("Not a commit reference: %s", hex)); |