-rw-r--r-- | ui-snapshot.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/ui-snapshot.c b/ui-snapshot.c index 649569f..f623f35 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c @@ -8,7 +8,7 @@ #include "cgit.h" -static int write_tar_gzip_archive(struct archiver_args *args) +static int write_compressed_tar_archive(struct archiver_args *args,const char *filter) { int rw[2]; pid_t gzpid; @@ -24,7 +24,7 @@ static int write_tar_gzip_archive(struct archiver_args *args) chk_zero(close(rw[1]), "Closing write end of pipe in child"); chk_zero(close(STDIN_FILENO), "Closing STDIN"); chk_non_negative(dup2(rw[0],STDIN_FILENO), "Redirecting compressor input to stdin"); - execlp("gzip","gzip",NULL); + execlp(filter,filter,NULL); _exit(-1); } /* parent */ @@ -44,13 +44,23 @@ static int write_tar_gzip_archive(struct archiver_args *args) 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"); +} + 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_gzip_archive } + { ".tar.gz", "application/x-tar", write_tar_gzip_archive }, + { ".tar.bz2", "application/x-tar", write_tar_bzip2_archive } }; void cgit_print_snapshot(struct cacheitem *item, const char *hex, @@ -102,3 +112,4 @@ void cgit_print_snapshot_links(const char *repo,const char *hex) fmt("id=%s&name=%s",hex,filename)), filename); } } +/* vim:set sw=8: */ |