mirror of
https://git.zx2c4.com/cgit
synced 2024-11-24 17:38:41 +00:00
Add separate header-files for each page/view
Yet another step towards removing cgit.h. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
parent
f34478cbe0
commit
c5984a9896
17
cgit.h
17
cgit.h
@ -269,23 +269,6 @@ extern void cgit_print_docstart(struct cgit_context *ctx);
|
|||||||
extern void cgit_print_docend();
|
extern void cgit_print_docend();
|
||||||
extern void cgit_print_pageheader(struct cgit_context *ctx);
|
extern void cgit_print_pageheader(struct cgit_context *ctx);
|
||||||
extern void cgit_print_filemode(unsigned short mode);
|
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();
|
|
||||||
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(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);
|
|
||||||
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,
|
extern void cgit_print_snapshot_links(const char *repo, const char *head,
|
||||||
const char *hex, int snapshots);
|
const char *hex, int snapshots);
|
||||||
extern int cgit_parse_snapshots_mask(const char *str);
|
extern int cgit_parse_snapshots_mask(const char *str);
|
||||||
|
11
cmd.c
11
cmd.c
@ -8,6 +8,17 @@
|
|||||||
|
|
||||||
#include "cgit.h"
|
#include "cgit.h"
|
||||||
#include "cmd.h"
|
#include "cmd.h"
|
||||||
|
#include "ui-blob.h"
|
||||||
|
#include "ui-commit.h"
|
||||||
|
#include "ui-diff.h"
|
||||||
|
#include "ui-log.h"
|
||||||
|
#include "ui-patch.h"
|
||||||
|
#include "ui-refs.h"
|
||||||
|
#include "ui-repolist.h"
|
||||||
|
#include "ui-snapshot.h"
|
||||||
|
#include "ui-summary.h"
|
||||||
|
#include "ui-tag.h"
|
||||||
|
#include "ui-tree.h"
|
||||||
|
|
||||||
static void blob_fn(struct cgit_context *ctx)
|
static void blob_fn(struct cgit_context *ctx)
|
||||||
{
|
{
|
||||||
|
6
ui-blob.h
Normal file
6
ui-blob.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_BLOB_H
|
||||||
|
#define UI_BLOB_H
|
||||||
|
|
||||||
|
extern void cgit_print_blob(const char *hex, char *path);
|
||||||
|
|
||||||
|
#endif /* UI_BLOB_H */
|
6
ui-commit.h
Normal file
6
ui-commit.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_COMMIT_H
|
||||||
|
#define UI_COMMIT_H
|
||||||
|
|
||||||
|
extern void cgit_print_commit(char *hex);
|
||||||
|
|
||||||
|
#endif /* UI_COMMIT_H */
|
7
ui-diff.h
Normal file
7
ui-diff.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef UI_DIFF_H
|
||||||
|
#define UI_DIFF_H
|
||||||
|
|
||||||
|
extern void cgit_print_diff(const char *new_hex, const char *old_hex,
|
||||||
|
const char *prefix);
|
||||||
|
|
||||||
|
#endif /* UI_DIFF_H */
|
7
ui-log.h
Normal file
7
ui-log.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef UI_LOG_H
|
||||||
|
#define UI_LOG_H
|
||||||
|
|
||||||
|
extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep,
|
||||||
|
char *pattern, char *path, int pager);
|
||||||
|
|
||||||
|
#endif /* UI_LOG_H */
|
6
ui-patch.h
Normal file
6
ui-patch.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_PATCH_H
|
||||||
|
#define UI_PATCH_H
|
||||||
|
|
||||||
|
extern void cgit_print_patch(char *hex);
|
||||||
|
|
||||||
|
#endif /* UI_PATCH_H */
|
172
ui-refs.c
172
ui-refs.c
@ -9,6 +9,178 @@
|
|||||||
#include "cgit.h"
|
#include "cgit.h"
|
||||||
#include "html.h"
|
#include "html.h"
|
||||||
|
|
||||||
|
static int header;
|
||||||
|
|
||||||
|
static int cmp_age(int age1, int age2)
|
||||||
|
{
|
||||||
|
if (age1 != 0 && age2 != 0)
|
||||||
|
return age2 - age1;
|
||||||
|
|
||||||
|
if (age1 == 0 && age2 == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (age1 == 0)
|
||||||
|
return +1;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int cmp_ref_name(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
struct refinfo *r1 = *(struct refinfo **)a;
|
||||||
|
struct refinfo *r2 = *(struct refinfo **)b;
|
||||||
|
|
||||||
|
return strcmp(r1->refname, r2->refname);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int cmp_branch_age(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
struct refinfo *r1 = *(struct refinfo **)a;
|
||||||
|
struct refinfo *r2 = *(struct refinfo **)b;
|
||||||
|
|
||||||
|
return cmp_age(r1->commit->committer_date, r2->commit->committer_date);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int cmp_tag_age(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
struct refinfo *r1 = *(struct refinfo **)a;
|
||||||
|
struct refinfo *r2 = *(struct refinfo **)b;
|
||||||
|
|
||||||
|
return cmp_age(r1->tag->tagger_date, r2->tag->tagger_date);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int print_branch(struct refinfo *ref)
|
||||||
|
{
|
||||||
|
struct commitinfo *info = ref->commit;
|
||||||
|
char *name = (char *)ref->refname;
|
||||||
|
|
||||||
|
if (!info)
|
||||||
|
return 1;
|
||||||
|
html("<tr><td>");
|
||||||
|
cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL);
|
||||||
|
html("</td><td>");
|
||||||
|
|
||||||
|
if (ref->object->type == OBJ_COMMIT) {
|
||||||
|
cgit_print_age(info->commit->date, -1, NULL);
|
||||||
|
html("</td><td>");
|
||||||
|
html_txt(info->author);
|
||||||
|
html("</td><td>");
|
||||||
|
cgit_commit_link(info->subject, NULL, NULL, name, NULL);
|
||||||
|
} else {
|
||||||
|
html("</td><td></td><td>");
|
||||||
|
cgit_object_link(ref->object);
|
||||||
|
}
|
||||||
|
html("</td></tr>\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void print_tag_header()
|
||||||
|
{
|
||||||
|
html("<tr class='nohover'><th class='left'>Tag</th>"
|
||||||
|
"<th class='left'>Age</th>"
|
||||||
|
"<th class='left'>Author</th>"
|
||||||
|
"<th class='left'>Reference</th></tr>\n");
|
||||||
|
header = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int print_tag(struct refinfo *ref)
|
||||||
|
{
|
||||||
|
struct tag *tag;
|
||||||
|
struct taginfo *info;
|
||||||
|
char *url, *name = (char *)ref->refname;
|
||||||
|
|
||||||
|
if (ref->object->type == OBJ_TAG) {
|
||||||
|
tag = (struct tag *)ref->object;
|
||||||
|
info = ref->tag;
|
||||||
|
if (!tag || !info)
|
||||||
|
return 1;
|
||||||
|
html("<tr><td>");
|
||||||
|
url = cgit_pageurl(ctx.qry.repo, "tag",
|
||||||
|
fmt("id=%s", name));
|
||||||
|
html_link_open(url, NULL, NULL);
|
||||||
|
html_txt(name);
|
||||||
|
html_link_close();
|
||||||
|
html("</td><td>");
|
||||||
|
if (info->tagger_date > 0)
|
||||||
|
cgit_print_age(info->tagger_date, -1, NULL);
|
||||||
|
html("</td><td>");
|
||||||
|
if (info->tagger)
|
||||||
|
html(info->tagger);
|
||||||
|
html("</td><td>");
|
||||||
|
cgit_object_link(tag->tagged);
|
||||||
|
html("</td></tr>\n");
|
||||||
|
} else {
|
||||||
|
if (!header)
|
||||||
|
print_tag_header();
|
||||||
|
html("<tr><td>");
|
||||||
|
html_txt(name);
|
||||||
|
html("</td><td colspan='2'/><td>");
|
||||||
|
cgit_object_link(ref->object);
|
||||||
|
html("</td></tr>\n");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void print_refs_link(char *path)
|
||||||
|
{
|
||||||
|
html("<tr class='nohover'><td colspan='4'>");
|
||||||
|
cgit_refs_link("[...]", NULL, NULL, ctx.qry.head, NULL, path);
|
||||||
|
html("</td></tr>");
|
||||||
|
}
|
||||||
|
|
||||||
|
void cgit_print_branches(int maxcount)
|
||||||
|
{
|
||||||
|
struct reflist list;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
html("<tr class='nohover'><th class='left'>Branch</th>"
|
||||||
|
"<th class='left'>Idle</th>"
|
||||||
|
"<th class='left'>Author</th>"
|
||||||
|
"<th class='left'>Head commit</th></tr>\n");
|
||||||
|
|
||||||
|
list.refs = NULL;
|
||||||
|
list.alloc = list.count = 0;
|
||||||
|
for_each_branch_ref(cgit_refs_cb, &list);
|
||||||
|
|
||||||
|
if (maxcount == 0 || maxcount > list.count)
|
||||||
|
maxcount = list.count;
|
||||||
|
|
||||||
|
if (maxcount < list.count) {
|
||||||
|
qsort(list.refs, list.count, sizeof(*list.refs), cmp_branch_age);
|
||||||
|
qsort(list.refs, maxcount, sizeof(*list.refs), cmp_ref_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i=0; i<maxcount; i++)
|
||||||
|
print_branch(list.refs[i]);
|
||||||
|
|
||||||
|
if (maxcount < list.count)
|
||||||
|
print_refs_link("heads");
|
||||||
|
}
|
||||||
|
|
||||||
|
void cgit_print_tags(int maxcount)
|
||||||
|
{
|
||||||
|
struct reflist list;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
header = 0;
|
||||||
|
list.refs = NULL;
|
||||||
|
list.alloc = list.count = 0;
|
||||||
|
for_each_tag_ref(cgit_refs_cb, &list);
|
||||||
|
if (list.count == 0)
|
||||||
|
return;
|
||||||
|
qsort(list.refs, list.count, sizeof(*list.refs), cmp_tag_age);
|
||||||
|
if (!maxcount)
|
||||||
|
maxcount = list.count;
|
||||||
|
else if (maxcount > list.count)
|
||||||
|
maxcount = list.count;
|
||||||
|
print_tag_header();
|
||||||
|
for(i=0; i<maxcount; i++)
|
||||||
|
print_tag(list.refs[i]);
|
||||||
|
|
||||||
|
if (maxcount < list.count)
|
||||||
|
print_refs_link("tags");
|
||||||
|
}
|
||||||
|
|
||||||
void cgit_print_refs()
|
void cgit_print_refs()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
8
ui-refs.h
Normal file
8
ui-refs.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef UI_REFS_H
|
||||||
|
#define UI_REFS_H
|
||||||
|
|
||||||
|
extern void cgit_print_branches(int maxcount);
|
||||||
|
extern void cgit_print_tags(int maxcount);
|
||||||
|
extern void cgit_print_refs();
|
||||||
|
|
||||||
|
#endif /* UI_REFS_H */
|
6
ui-repolist.h
Normal file
6
ui-repolist.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_REPOLIST_H
|
||||||
|
#define UI_REPOLIST_H
|
||||||
|
|
||||||
|
extern void cgit_print_repolist();
|
||||||
|
|
||||||
|
#endif /* UI_REPOLIST_H */
|
8
ui-snapshot.h
Normal file
8
ui-snapshot.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef UI_SNAPSHOT_H
|
||||||
|
#define UI_SNAPSHOT_H
|
||||||
|
|
||||||
|
extern void cgit_print_snapshot(const char *head, const char *hex,
|
||||||
|
const char *prefix, const char *filename,
|
||||||
|
int snapshot);
|
||||||
|
|
||||||
|
#endif /* UI_SNAPSHOT_H */
|
174
ui-summary.c
174
ui-summary.c
@ -8,178 +8,8 @@
|
|||||||
|
|
||||||
#include "cgit.h"
|
#include "cgit.h"
|
||||||
#include "html.h"
|
#include "html.h"
|
||||||
|
#include "ui-log.h"
|
||||||
static int header;
|
#include "ui-refs.h"
|
||||||
|
|
||||||
static int cmp_age(int age1, int age2)
|
|
||||||
{
|
|
||||||
if (age1 != 0 && age2 != 0)
|
|
||||||
return age2 - age1;
|
|
||||||
|
|
||||||
if (age1 == 0 && age2 == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (age1 == 0)
|
|
||||||
return +1;
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cmp_ref_name(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
struct refinfo *r1 = *(struct refinfo **)a;
|
|
||||||
struct refinfo *r2 = *(struct refinfo **)b;
|
|
||||||
|
|
||||||
return strcmp(r1->refname, r2->refname);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cmp_branch_age(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
struct refinfo *r1 = *(struct refinfo **)a;
|
|
||||||
struct refinfo *r2 = *(struct refinfo **)b;
|
|
||||||
|
|
||||||
return cmp_age(r1->commit->committer_date, r2->commit->committer_date);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cmp_tag_age(const void *a, const void *b)
|
|
||||||
{
|
|
||||||
struct refinfo *r1 = *(struct refinfo **)a;
|
|
||||||
struct refinfo *r2 = *(struct refinfo **)b;
|
|
||||||
|
|
||||||
return cmp_age(r1->tag->tagger_date, r2->tag->tagger_date);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int print_branch(struct refinfo *ref)
|
|
||||||
{
|
|
||||||
struct commitinfo *info = ref->commit;
|
|
||||||
char *name = (char *)ref->refname;
|
|
||||||
|
|
||||||
if (!info)
|
|
||||||
return 1;
|
|
||||||
html("<tr><td>");
|
|
||||||
cgit_log_link(name, NULL, NULL, name, NULL, NULL, 0, NULL, NULL);
|
|
||||||
html("</td><td>");
|
|
||||||
|
|
||||||
if (ref->object->type == OBJ_COMMIT) {
|
|
||||||
cgit_print_age(info->commit->date, -1, NULL);
|
|
||||||
html("</td><td>");
|
|
||||||
html_txt(info->author);
|
|
||||||
html("</td><td>");
|
|
||||||
cgit_commit_link(info->subject, NULL, NULL, name, NULL);
|
|
||||||
} else {
|
|
||||||
html("</td><td></td><td>");
|
|
||||||
cgit_object_link(ref->object);
|
|
||||||
}
|
|
||||||
html("</td></tr>\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_tag_header()
|
|
||||||
{
|
|
||||||
html("<tr class='nohover'><th class='left'>Tag</th>"
|
|
||||||
"<th class='left'>Age</th>"
|
|
||||||
"<th class='left'>Author</th>"
|
|
||||||
"<th class='left'>Reference</th></tr>\n");
|
|
||||||
header = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int print_tag(struct refinfo *ref)
|
|
||||||
{
|
|
||||||
struct tag *tag;
|
|
||||||
struct taginfo *info;
|
|
||||||
char *url, *name = (char *)ref->refname;
|
|
||||||
|
|
||||||
if (ref->object->type == OBJ_TAG) {
|
|
||||||
tag = (struct tag *)ref->object;
|
|
||||||
info = ref->tag;
|
|
||||||
if (!tag || !info)
|
|
||||||
return 1;
|
|
||||||
html("<tr><td>");
|
|
||||||
url = cgit_pageurl(ctx.qry.repo, "tag",
|
|
||||||
fmt("id=%s", name));
|
|
||||||
html_link_open(url, NULL, NULL);
|
|
||||||
html_txt(name);
|
|
||||||
html_link_close();
|
|
||||||
html("</td><td>");
|
|
||||||
if (info->tagger_date > 0)
|
|
||||||
cgit_print_age(info->tagger_date, -1, NULL);
|
|
||||||
html("</td><td>");
|
|
||||||
if (info->tagger)
|
|
||||||
html(info->tagger);
|
|
||||||
html("</td><td>");
|
|
||||||
cgit_object_link(tag->tagged);
|
|
||||||
html("</td></tr>\n");
|
|
||||||
} else {
|
|
||||||
if (!header)
|
|
||||||
print_tag_header();
|
|
||||||
html("<tr><td>");
|
|
||||||
html_txt(name);
|
|
||||||
html("</td><td colspan='2'/><td>");
|
|
||||||
cgit_object_link(ref->object);
|
|
||||||
html("</td></tr>\n");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_refs_link(char *path)
|
|
||||||
{
|
|
||||||
html("<tr class='nohover'><td colspan='4'>");
|
|
||||||
cgit_refs_link("[...]", NULL, NULL, ctx.qry.head, NULL, path);
|
|
||||||
html("</td></tr>");
|
|
||||||
}
|
|
||||||
|
|
||||||
void cgit_print_branches(int maxcount)
|
|
||||||
{
|
|
||||||
struct reflist list;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
html("<tr class='nohover'><th class='left'>Branch</th>"
|
|
||||||
"<th class='left'>Idle</th>"
|
|
||||||
"<th class='left'>Author</th>"
|
|
||||||
"<th class='left'>Head commit</th></tr>\n");
|
|
||||||
|
|
||||||
list.refs = NULL;
|
|
||||||
list.alloc = list.count = 0;
|
|
||||||
for_each_branch_ref(cgit_refs_cb, &list);
|
|
||||||
|
|
||||||
if (maxcount == 0 || maxcount > list.count)
|
|
||||||
maxcount = list.count;
|
|
||||||
|
|
||||||
if (maxcount < list.count) {
|
|
||||||
qsort(list.refs, list.count, sizeof(*list.refs), cmp_branch_age);
|
|
||||||
qsort(list.refs, maxcount, sizeof(*list.refs), cmp_ref_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i=0; i<maxcount; i++)
|
|
||||||
print_branch(list.refs[i]);
|
|
||||||
|
|
||||||
if (maxcount < list.count)
|
|
||||||
print_refs_link("heads");
|
|
||||||
}
|
|
||||||
|
|
||||||
void cgit_print_tags(int maxcount)
|
|
||||||
{
|
|
||||||
struct reflist list;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
header = 0;
|
|
||||||
list.refs = NULL;
|
|
||||||
list.alloc = list.count = 0;
|
|
||||||
for_each_tag_ref(cgit_refs_cb, &list);
|
|
||||||
if (list.count == 0)
|
|
||||||
return;
|
|
||||||
qsort(list.refs, list.count, sizeof(*list.refs), cmp_tag_age);
|
|
||||||
if (!maxcount)
|
|
||||||
maxcount = list.count;
|
|
||||||
else if (maxcount > list.count)
|
|
||||||
maxcount = list.count;
|
|
||||||
print_tag_header();
|
|
||||||
for(i=0; i<maxcount; i++)
|
|
||||||
print_tag(list.refs[i]);
|
|
||||||
|
|
||||||
if (maxcount < list.count)
|
|
||||||
print_refs_link("tags");
|
|
||||||
}
|
|
||||||
|
|
||||||
void cgit_print_summary()
|
void cgit_print_summary()
|
||||||
{
|
{
|
||||||
|
6
ui-summary.h
Normal file
6
ui-summary.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_SUMMARY_H
|
||||||
|
#define UI_SUMMARY_H
|
||||||
|
|
||||||
|
extern void cgit_print_summary();
|
||||||
|
|
||||||
|
#endif /* UI_SUMMARY_H */
|
6
ui-tag.h
Normal file
6
ui-tag.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_TAG_H
|
||||||
|
#define UI_TAG_H
|
||||||
|
|
||||||
|
extern void cgit_print_tag(char *revname);
|
||||||
|
|
||||||
|
#endif /* UI_TAG_H */
|
Loading…
Reference in New Issue
Block a user