summaryrefslogtreecommitdiffabout
path: root/ui-snapshot.c
authorMichael Krelin <hacker@klever.net>2007-07-21 00:05:34 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-21 00:05:34 (UTC)
commit18a99bdf879953307d6ae6eb56c2117a4c074b0d (patch) (unidiff)
tree2d950fec688892398edd232f6e133b97e1a61e51 /ui-snapshot.c
parent4a92cbb7fd1084764dfe9b97a163f1084c790b15 (diff)
downloadcgit-18a99bdf879953307d6ae6eb56c2117a4c074b0d.zip
cgit-18a99bdf879953307d6ae6eb56c2117a4c074b0d.tar.gz
cgit-18a99bdf879953307d6ae6eb56c2117a4c074b0d.tar.bz2
introduced .tar.bz2 snapshots
- reworked write_tar_gzip_archive to handle arbitrary filter as a write_compressed_tar_archive - reformatted whitespaces in the said function to adhere to common cgit standards - added wrappers around write_compressed_tar_archive for .tar.gz and .tar.bz2 - added a hint for vim to use 8 characters shift width by default Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'ui-snapshot.c') (more/less context) (show whitespace changes)
-rw-r--r--ui-snapshot.c17
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 @@
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11static int write_tar_gzip_archive(struct archiver_args *args) 11static int write_compressed_tar_archive(struct archiver_args *args,const char *filter)
12{ 12{
13 int rw[2]; 13 int rw[2];
14 pid_t gzpid; 14 pid_t gzpid;
@@ -24,7 +24,7 @@ static int write_tar_gzip_archive(struct archiver_args *args)
24 chk_zero(close(rw[1]), "Closing write end of pipe in child"); 24 chk_zero(close(rw[1]), "Closing write end of pipe in child");
25 chk_zero(close(STDIN_FILENO), "Closing STDIN"); 25 chk_zero(close(STDIN_FILENO), "Closing STDIN");
26 chk_non_negative(dup2(rw[0],STDIN_FILENO), "Redirecting compressor input to stdin"); 26 chk_non_negative(dup2(rw[0],STDIN_FILENO), "Redirecting compressor input to stdin");
27 execlp("gzip","gzip",NULL); 27 execlp(filter,filter,NULL);
28 _exit(-1); 28 _exit(-1);
29 } 29 }
30 /* parent */ 30 /* parent */
@@ -44,13 +44,23 @@ static int write_tar_gzip_archive(struct archiver_args *args)
44 return rv; 44 return rv;
45} 45}
46 46
47static int write_tar_gzip_archive(struct archiver_args *args)
48{
49 return write_compressed_tar_archive(args,"gzip");
50}
51static int write_tar_bzip2_archive(struct archiver_args *args)
52{
53 return write_compressed_tar_archive(args,"bzip2");
54}
55
47static const struct snapshot_archive_t { 56static const struct snapshot_archive_t {
48 const char *suffix; 57 const char *suffix;
49 const char *mimetype; 58 const char *mimetype;
50 write_archive_fn_t write_func; 59 write_archive_fn_t write_func;
51 }snapshot_archives[] = { 60 }snapshot_archives[] = {
52 { ".zip", "application/x-zip", write_zip_archive }, 61 { ".zip", "application/x-zip", write_zip_archive },
53 { ".tar.gz", "application/x-gzip", write_tar_gzip_archive } 62 { ".tar.gz", "application/x-tar", write_tar_gzip_archive },
63 { ".tar.bz2", "application/x-tar", write_tar_bzip2_archive }
54}; 64};
55 65
56void cgit_print_snapshot(struct cacheitem *item, const char *hex, 66void cgit_print_snapshot(struct cacheitem *item, const char *hex,
@@ -102,3 +112,4 @@ void cgit_print_snapshot_links(const char *repo,const char *hex)
102 fmt("id=%s&amp;name=%s",hex,filename)), filename); 112 fmt("id=%s&amp;name=%s",hex,filename)), filename);
103 } 113 }
104} 114}
115/* vim:set sw=8: */