-static const struct snapshot_archive_t {
- const char *suffix;
- const char *mimetype;
- write_archive_fn_t write_func;
-} snapshot_archives[] = {
- { ".zip", "application/x-zip", write_zip_archive },
- { ".tar.gz", "application/x-gzip", write_tar_archive }
+static int write_compressed_tar_archive(struct archiver_args *args,const char *filter)
+{
+ int rv;
+ struct cgit_filter f;
+
+ f.cmd = xstrdup(filter);
+ f.argv = malloc(2 * sizeof(char *));
+ f.argv[0] = f.cmd;
+ f.argv[1] = NULL;
+ cgit_open_filter(&f);
+ rv = write_tar_archive(args);
+ cgit_close_filter(&f);
+ return rv;
+}
+
+static int write_tar_gzip_archive(struct archiver_args *args)
+{
+ return write_compressed_tar_archive(args,"gzip");
+}
+
+static int write_tar_bzip2_archive(struct archiver_args *args)
+{
+ return write_compressed_tar_archive(args,"bzip2");
+}
+
+const struct cgit_snapshot_format cgit_snapshot_formats[] = {
+ { ".zip", "application/x-zip", write_zip_archive, 0x1 },
+ { ".tar.gz", "application/x-gzip", write_tar_gzip_archive, 0x2 },
+ { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive, 0x4 },
+ { ".tar", "application/x-tar", write_tar_archive, 0x8 },
+ {}