summary refs log tree commit diff
path: root/ui-snapshot.c
diff options
context:
space:
mode:
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);
 }