diff options
Diffstat (limited to 'ui-snapshot.c')
| -rw-r--r-- | ui-snapshot.c | 14 | 
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, | |||
| 162 | return dwim_refname; | 162 | return dwim_refname; | 
| 163 | } | 163 | } | 
| 164 | 164 | ||
| 165 | void cgit_print_snapshot(const char *head, const char *hex, const char *prefix, | 165 | void cgit_print_snapshot(const char *head, const char *hex, | 
| 166 | const char *filename, int snapshots, int dwim) | 166 | const char *filename, int snapshots, int dwim) | 
| 167 | { | 167 | { | 
| 168 | const struct cgit_snapshot_format* f; | 168 | const struct cgit_snapshot_format* f; | 
| 169 | char *prefix = NULL; | ||
| 169 | 170 | ||
| 170 | f = get_format(filename); | 171 | f = get_format(filename); | 
| 171 | if (!f) { | 172 | if (!f) { | 
| @@ -178,11 +179,20 @@ void cgit_print_snapshot(const char *head, const char *hex, const char *prefix, | |||
| 178 | return; | 179 | return; | 
| 179 | } | 180 | } | 
| 180 | 181 | ||
| 181 | if (!hex && dwim) | 182 | if (!hex && dwim) { | 
| 182 | hex = get_ref_from_filename(ctx.repo->url, filename, f); | 183 | hex = get_ref_from_filename(ctx.repo->url, filename, f); | 
| 184 | if (hex != NULL) { | ||
| 185 | prefix = xstrdup(filename); | ||
| 186 | prefix[strlen(filename) - strlen(f->suffix)] = '\0'; | ||
| 187 | } | ||
| 188 | } | ||
| 183 | 189 | ||
| 184 | if (!hex) | 190 | if (!hex) | 
| 185 | hex = head; | 191 | hex = head; | 
| 186 | 192 | ||
| 193 | if (!prefix) | ||
| 194 | prefix = xstrdup(cgit_repobasename(ctx.repo->url)); | ||
| 195 | |||
| 187 | make_snapshot(f, hex, prefix, filename); | 196 | make_snapshot(f, hex, prefix, filename); | 
| 197 | free(prefix); | ||
| 188 | } | 198 | } | 
