diff options
Diffstat (limited to 'ui-snapshot.c')
-rw-r--r-- | ui-snapshot.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c index c7611e8..83ce6e8 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c | |||
@@ -86,11 +86,11 @@ static int write_tar_xz_archive(const char *hex, const char *prefix) | |||
86 | } | 86 | } |
87 | 87 | ||
88 | const struct cgit_snapshot_format cgit_snapshot_formats[] = { | 88 | const struct cgit_snapshot_format cgit_snapshot_formats[] = { |
89 | { ".zip", "application/x-zip", write_zip_archive, 0x01 }, | 89 | { ".tar", "application/x-tar", write_tar_archive }, |
90 | { ".tar.gz", "application/x-gzip", write_tar_gzip_archive, 0x02 }, | 90 | { ".tar.gz", "application/x-gzip", write_tar_gzip_archive }, |
91 | { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive, 0x04 }, | 91 | { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive }, |
92 | { ".tar", "application/x-tar", write_tar_archive, 0x08 }, | 92 | { ".tar.xz", "application/x-xz", write_tar_xz_archive }, |
93 | { ".tar.xz", "application/x-xz", write_tar_xz_archive, 0x10 }, | 93 | { ".zip", "application/x-zip", write_zip_archive }, |
94 | { NULL } | 94 | { NULL } |
95 | }; | 95 | }; |
96 | 96 | ||
@@ -130,6 +130,11 @@ static const struct cgit_snapshot_format *get_format(const char *filename) | |||
130 | return NULL; | 130 | return NULL; |
131 | } | 131 | } |
132 | 132 | ||
133 | const unsigned cgit_snapshot_format_bit(const struct cgit_snapshot_format *f) | ||
134 | { | ||
135 | return BIT(f - &cgit_snapshot_formats[0]); | ||
136 | } | ||
137 | |||
133 | static int make_snapshot(const struct cgit_snapshot_format *format, | 138 | static int make_snapshot(const struct cgit_snapshot_format *format, |
134 | const char *hex, const char *prefix, | 139 | const char *hex, const char *prefix, |
135 | const char *filename) | 140 | const char *filename) |
@@ -263,7 +268,7 @@ void cgit_print_snapshot(const char *head, const char *hex, | |||
263 | } | 268 | } |
264 | 269 | ||
265 | f = get_format(filename); | 270 | f = get_format(filename); |
266 | if (!f || !(ctx.repo->snapshots & f->bit)) { | 271 | if (!f || !(ctx.repo->snapshots & cgit_snapshot_format_bit(f))) { |
267 | cgit_print_error_page(400, "Bad request", | 272 | cgit_print_error_page(400, "Bad request", |
268 | "Unsupported snapshot format: %s", filename); | 273 | "Unsupported snapshot format: %s", filename); |
269 | return; | 274 | return; |