From 5d4756e75ce12a6b67af3a16193f10047ba05218 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 21 Nov 2020 19:58:11 +0100 Subject: Squashed 'third_party/cgit/' changes from 8fc0c81bbb..adcc4f822f adcc4f822f tests: try with commit-graph a1039ab175 tests: do not copy snapshots to /tmp/ a4de0e810b global: replace hard coded hash length 779631c6dc global: replace references to 'sha1' with 'oid' 629659d2cf git: update to v2.29.0 205837d468 git: update to v2.28.0 f780396c0a git: update to v2.27.0 0462f08d85 git: update to v2.26.0 55fa25adb0 Bump version 6a8d6d4b50 global: use proper accessors for maybe_tree 892ba8c3cc ui-snapshot: add support for zstd compression cc230bf044 tests: add tests for xz compressed snapshots 06671f4b21 ui-snapshot: add support for lzip compression fde897b817 git: update to v2.25.1 5e49023b01 tests: allow to skip git version tests fa146ccabd Bump version bd68c98879 git: update to v2.25.0 ca98c9e7bf tests: skip tests if strace is not functional d8e5dd25a0 git: update to v2.24.1 583aa5d80e ui-repolist: do not return unsigned (negative) value bfabd4519c git: update to v2.24.0 git-subtree-dir: third_party/cgit git-subtree-split: adcc4f822fe11836e5f942fc1ae0f00db4eb8d5f --- ui-snapshot.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'ui-snapshot.c') diff --git a/ui-snapshot.c b/ui-snapshot.c index 9461d51a59..18361a6553 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c @@ -13,32 +13,32 @@ static int write_archive_type(const char *format, const char *hex, const char *prefix) { - struct argv_array argv = ARGV_ARRAY_INIT; + struct strvec argv = STRVEC_INIT; const char **nargv; int result; - argv_array_push(&argv, "snapshot"); - argv_array_push(&argv, format); + strvec_push(&argv, "snapshot"); + strvec_push(&argv, format); if (prefix) { struct strbuf buf = STRBUF_INIT; strbuf_addstr(&buf, prefix); strbuf_addch(&buf, '/'); - argv_array_push(&argv, "--prefix"); - argv_array_push(&argv, buf.buf); + strvec_push(&argv, "--prefix"); + strvec_push(&argv, buf.buf); strbuf_release(&buf); } - argv_array_push(&argv, hex); + strvec_push(&argv, hex); /* * Now we need to copy the pointers to arguments into a new * structure because write_archive will rearrange its arguments * which may result in duplicated/missing entries causing leaks - * or double-frees in argv_array_clear. + * or double-frees in strvec_clear. */ - nargv = xmalloc(sizeof(char *) * (argv.argc + 1)); - /* argv_array guarantees a trailing NULL entry. */ - memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1)); + nargv = xmalloc(sizeof(char *) * (argv.nr + 1)); + /* strvec guarantees a trailing NULL entry. */ + memcpy(nargv, argv.v, sizeof(char *) * (argv.nr + 1)); - result = write_archive(argv.argc, nargv, NULL, the_repository, NULL, 0); - argv_array_clear(&argv); + result = write_archive(argv.nr, nargv, NULL, the_repository, NULL, 0); + strvec_clear(&argv); free(nargv); return result; } @@ -79,18 +79,32 @@ static int write_tar_bzip2_archive(const char *hex, const char *prefix) return write_compressed_tar_archive(hex, prefix, argv); } +static int write_tar_lzip_archive(const char *hex, const char *prefix) +{ + char *argv[] = { "lzip", NULL }; + return write_compressed_tar_archive(hex, prefix, argv); +} + static int write_tar_xz_archive(const char *hex, const char *prefix) { char *argv[] = { "xz", NULL }; return write_compressed_tar_archive(hex, prefix, argv); } +static int write_tar_zstd_archive(const char *hex, const char *prefix) +{ + char *argv[] = { "zstd", "-T0", NULL }; + return write_compressed_tar_archive(hex, prefix, argv); +} + const struct cgit_snapshot_format cgit_snapshot_formats[] = { /* .tar must remain the 0 index */ { ".tar", "application/x-tar", write_tar_archive }, { ".tar.gz", "application/x-gzip", write_tar_gzip_archive }, { ".tar.bz2", "application/x-bzip2", write_tar_bzip2_archive }, + { ".tar.lz", "application/x-lzip", write_tar_lzip_archive }, { ".tar.xz", "application/x-xz", write_tar_xz_archive }, + { ".tar.zst", "application/x-zstd", write_tar_zstd_archive }, { ".zip", "application/x-zip", write_zip_archive }, { NULL } }; -- cgit 1.4.1