summaryrefslogtreecommitdiffabout
path: root/ui-snapshot.c
authorLars Hjemli <hjemli@gmail.com>2007-07-22 22:11:15 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-07-22 22:27:32 (UTC)
commiteb45342e735818b3c68cbab9b61b23e79ae74418 (patch) (unidiff)
tree43fed08927a2118a22cf686ee58b8d464233cd5d /ui-snapshot.c
parent1d4aaff696ee1b9085dda0f0f3d84d9d20d96db0 (diff)
downloadcgit-eb45342e735818b3c68cbab9b61b23e79ae74418.zip
cgit-eb45342e735818b3c68cbab9b61b23e79ae74418.tar.gz
cgit-eb45342e735818b3c68cbab9b61b23e79ae74418.tar.bz2
cgit_print_snapshot_links: use url to specify snapshot name
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-snapshot.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-snapshot.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c
index d6be55b..f9879ed 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -65,16 +65,19 @@ static const struct snapshot_archive_t {
65 { ".tar", "application/x-tar", write_tar_archive, 0x8 } 65 { ".tar", "application/x-tar", write_tar_archive, 0x8 }
66}; 66};
67 67
68void cgit_print_snapshot(struct cacheitem *item, const char *hex, 68void cgit_print_snapshot(struct cacheitem *item, const char *head,
69 const char *prefix, const char *filename, 69 const char *hex, const char *prefix,
70 int snapshots) 70 const char *filename, int snapshots)
71{ 71{
72 int fnl = strlen(filename); 72 int fnl = strlen(filename);
73 int f; 73 int f, n;
74 for(f=0;f<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) { 74
75 n = sizeof(snapshot_archives) / sizeof(*snapshot_archives);
76 for(f=0; f<n; f++) {
75 const struct snapshot_archive_t* sat = &snapshot_archives[f]; 77 const struct snapshot_archive_t* sat = &snapshot_archives[f];
76 int sl; 78 int sl;
77 if(!(snapshots&sat->bit)) continue; 79 if(!(snapshots & sat->bit))
80 continue;
78 sl = strlen(sat->suffix); 81 sl = strlen(sat->suffix);
79 if(fnl<sl || strcmp(&filename[fnl-sl],sat->suffix)) 82 if(fnl<sl || strcmp(&filename[fnl-sl],sat->suffix))
80 continue; 83 continue;
@@ -83,6 +86,8 @@ void cgit_print_snapshot(struct cacheitem *item, const char *hex,
83 struct commit *commit; 86 struct commit *commit;
84 unsigned char sha1[20]; 87 unsigned char sha1[20];
85 88
89 if (!hex)
90 hex = head;
86 if(get_sha1(hex, sha1)) { 91 if(get_sha1(hex, sha1)) {
87 cgit_print_error(fmt("Bad object id: %s", hex)); 92 cgit_print_error(fmt("Bad object id: %s", hex));
88 return; 93 return;
@@ -105,17 +110,22 @@ void cgit_print_snapshot(struct cacheitem *item, const char *hex,
105 cgit_print_error(fmt("Unsupported snapshot format: %s", filename)); 110 cgit_print_error(fmt("Unsupported snapshot format: %s", filename));
106} 111}
107 112
108void cgit_print_snapshot_links(const char *repo,const char *hex,int snapshots) 113void cgit_print_snapshot_links(const char *repo, const char *head,
114 const char *hex, int snapshots)
109{ 115{
110 char *filename; 116 char *filename;
111 int f; 117 int f, n;
112 for(f=0;f<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) { 118
119 n = sizeof(snapshot_archives) / sizeof(*snapshot_archives);
120 for(f=0; f<n ;f++) {
113 const struct snapshot_archive_t* sat = &snapshot_archives[f]; 121 const struct snapshot_archive_t* sat = &snapshot_archives[f];
114 if(!(snapshots&sat->bit)) continue; 122 if(!(snapshots & sat->bit))
115 filename = fmt("%s-%s%s",cgit_repobasename(repo),hex,sat->suffix); 123 continue;
116 htmlf("<a href='%s'>%s</a><br/>", 124 filename = fmt("%s-%s%s", cgit_repobasename(repo), hex,
117 cgit_fileurl(repo,"snapshot",filename, 125 sat->suffix);
118 fmt("id=%s&amp;name=%s",hex,filename)), filename); 126 cgit_snapshot_link(filename, NULL, NULL, (char *)head,
127 (char *)hex, filename);
128 html("<br/>");
119 } 129 }
120} 130}
121 131