diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2007-07-23 00:11:15 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2007-07-23 00:27:32 +0200 | 
| commit | eb45342e735818b3c68cbab9b61b23e79ae74418 (patch) | |
| tree | 43fed08927a2118a22cf686ee58b8d464233cd5d | |
| parent | Merge branch 'master' of git://git.klever.net/patchwork/cgit (diff) | |
| download | cgit-eb45342e735818b3c68cbab9b61b23e79ae74418.tar.gz cgit-eb45342e735818b3c68cbab9b61b23e79ae74418.tar.bz2 cgit-eb45342e735818b3c68cbab9b61b23e79ae74418.zip | |
cgit_print_snapshot_links: use url to specify snapshot name
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | cgit.c | 4 | ||||
| -rw-r--r-- | cgit.h | 11 | ||||
| -rw-r--r-- | ui-commit.c | 3 | ||||
| -rw-r--r-- | ui-shared.c | 6 | ||||
| -rw-r--r-- | ui-snapshot.c | 38 | 
5 files changed, 41 insertions, 21 deletions
| @@ -68,9 +68,9 @@ static void cgit_print_repo_page(struct cacheitem *item)  	setenv("GIT_DIR", cgit_repo->path, 1);  	if ((cgit_cmd == CMD_SNAPSHOT) && cgit_repo->snapshots) { -		cgit_print_snapshot(item, cgit_query_sha1, +		cgit_print_snapshot(item, cgit_query_head, cgit_query_sha1,  				    cgit_repobasename(cgit_repo->url), -				    cgit_query_name, +				    cgit_query_path,  				    cgit_repo->snapshots );  		return;  	} @@ -214,6 +214,8 @@ extern void cgit_log_link(char *name, char *title, char *class, char *head,  			  char *rev, char *path, int ofs);  extern void cgit_commit_link(char *name, char *title, char *class, char *head,  			     char *rev); +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); @@ -237,10 +239,11 @@ extern void cgit_print_tree(const char *rev, char *path);  extern void cgit_print_commit(char *hex);  extern void cgit_print_tag(char *revname);  extern void cgit_print_diff(const char *new_hex, const char *old_hex); -extern void cgit_print_snapshot(struct cacheitem *item, const char *hex, -				const char *prefix, const char *filename, -				int snapshot); -extern void cgit_print_snapshot_links(const char *repo, const char *hex,int snapshots); +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_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 */ diff --git a/ui-commit.c b/ui-commit.c index 50e9e11..90e09ed 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -196,7 +196,8 @@ void cgit_print_commit(char *hex)  	}  	if (cgit_repo->snapshots) {  		html("<tr><th>download</th><td colspan='2' class='sha1'>"); -		cgit_print_snapshot_links(cgit_query_repo,hex,cgit_repo->snapshots); +		cgit_print_snapshot_links(cgit_query_repo, cgit_query_head, +					  hex, cgit_repo->snapshots);  		html("</td></tr>");  	}  	html("</table>\n"); diff --git a/ui-shared.c b/ui-shared.c index ca2ee82..5c5bcf3 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -227,6 +227,12 @@ void cgit_commit_link(char *name, char *title, char *class, char *head,  	reporevlink("commit", name, title, class, head, rev, NULL);  } +void cgit_snapshot_link(char *name, char *title, char *class, char *head, +			char *rev, char *archivename) +{ +	reporevlink("snapshot", name, title, class, head, rev, archivename); +} +  void cgit_diff_link(char *name, char *title, char *class, char *head,  		    char *new_rev, char *old_rev, char *path)  { 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 {  	{ ".tar", "application/x-tar", write_tar_archive, 0x8 }  }; -void cgit_print_snapshot(struct cacheitem *item, const char *hex,  -			 const char *prefix, const char *filename, -			 int snapshots) +void cgit_print_snapshot(struct cacheitem *item, const char *head, +			 const char *hex, const char *prefix, +			 const char *filename, int snapshots)  {  	int fnl = strlen(filename); -	int f; -    	for(f=0;f<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) { +	int f, n; + +	n = sizeof(snapshot_archives) / sizeof(*snapshot_archives); +    	for(f=0; f<n; f++) {  		const struct snapshot_archive_t* sat = &snapshot_archives[f];  		int sl; -		if(!(snapshots&sat->bit)) continue; +		if(!(snapshots & sat->bit)) +			continue;  		sl = strlen(sat->suffix);  		if(fnl<sl || strcmp(&filename[fnl-sl],sat->suffix))  			continue; @@ -83,6 +86,8 @@ void cgit_print_snapshot(struct cacheitem *item, const char *hex,  		struct commit *commit;  		unsigned char sha1[20]; +		if (!hex) +			hex = head;  		if(get_sha1(hex, sha1)) {  			cgit_print_error(fmt("Bad object id: %s", hex));  			return; @@ -105,17 +110,22 @@ void cgit_print_snapshot(struct cacheitem *item, const char *hex,  	cgit_print_error(fmt("Unsupported snapshot format: %s", filename));  } -void cgit_print_snapshot_links(const char *repo,const char *hex,int snapshots) +void cgit_print_snapshot_links(const char *repo, const char *head, +			       const char *hex, int snapshots)  {      	char *filename; -	int f; -    	for(f=0;f<(sizeof(snapshot_archives)/sizeof(*snapshot_archives));++f) { +	int f, n; + +	n = sizeof(snapshot_archives) / sizeof(*snapshot_archives); +    	for(f=0; f<n ;f++) {  		const struct snapshot_archive_t* sat = &snapshot_archives[f]; -		if(!(snapshots&sat->bit)) continue; -		filename = fmt("%s-%s%s",cgit_repobasename(repo),hex,sat->suffix); -		htmlf("<a href='%s'>%s</a><br/>", -			cgit_fileurl(repo,"snapshot",filename, -			    fmt("id=%s&name=%s",hex,filename)), filename); +		if(!(snapshots & sat->bit)) +			continue; +		filename = fmt("%s-%s%s", cgit_repobasename(repo), hex, +			       sat->suffix); +		cgit_snapshot_link(filename, NULL, NULL, (char *)head, +				   (char *)hex, filename); +		html("<br/>");  	}  } | 
