@ -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: */