summary refs log tree commit diff
path: root/ui-snapshot.c
diff options
context:
space:
mode:
authorNatanael Copa <natanael.copa@gmail.com>2008-11-29 21:49:07 -0800
committerLars Hjemli <hjemli@gmail.com>2008-11-30 13:39:53 +0100
commit314d9ea5a3bc60ec518e314bb0bf8072123dc08f (patch)
treeca65f83e89b301ff6df228785c73c8413a072361 /ui-snapshot.c
parent7b5cee65fd9cf31e4f19ce4ff613778cb95512a9 (diff)
Set prefix in snapshots when using dwimmery
This patch sets the directory prefix in archives to be the filename,
excluding the suffix (.tar.gz, .tar.bz2 etc).

The patch also removes the prefix parameter in cgit_print_snapshot()
as the prefix might differ.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-snapshot.c')
-rw-r--r--ui-snapshot.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c
index 9c4d086..76457d6 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -162,10 +162,11 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
 	return dwim_refname;
 }
 
-void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
+void cgit_print_snapshot(const char *head, const char *hex,
 			 const char *filename, int snapshots, int dwim)
 {
 	const struct cgit_snapshot_format* f;
+	char *prefix = NULL;
 
 	f = get_format(filename);
 	if (!f) {
@@ -178,11 +179,20 @@ void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
 		return;
 	}
 
-	if (!hex && dwim)
+	if (!hex && dwim) {
 		hex = get_ref_from_filename(ctx.repo->url, filename, f);
+		if (hex != NULL) {
+			prefix = xstrdup(filename);
+			prefix[strlen(filename) - strlen(f->suffix)] = '\0';
+		}
+	}
 
 	if (!hex)
 		hex = head;
 
+	if (!prefix)
+		prefix = xstrdup(cgit_repobasename(ctx.repo->url));
+
 	make_snapshot(f, hex, prefix, filename);
+	free(prefix);
 }