/* argv_array guarantees a trailing NULL entry. */
memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1));
/* argv_array guarantees a trailing NULL entry. */
memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1));
- result = write_archive(argv.argc, nargv, NULL, NULL, 0);
+ result = write_archive(argv.argc, nargv, NULL, the_repository, NULL, 0);
+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_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);
+}
+
{ ".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", "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.xz", "application/x-xz", write_tar_xz_archive },
{ ".tar.xz", "application/x-xz", write_tar_xz_archive },
{ ".zip", "application/x-zip", write_zip_archive },
{ NULL }
};
{ ".zip", "application/x-zip", write_zip_archive },
{ NULL }
};
cgit_print_error_page(400, "Bad request",
"Not a commit reference: %s", hex);
return 1;
cgit_print_error_page(400, "Bad request",
"Not a commit reference: %s", hex);
return 1;
ctx.page.mimetype = xstrdup(format->mimetype);
ctx.page.filename = xstrdup(filename);
cgit_print_http_headers();
ctx.page.mimetype = xstrdup(format->mimetype);
ctx.page.filename = xstrdup(filename);
cgit_print_http_headers();
cgit_print_error_page(400, "Bad request",
"Unsupported snapshot format: %s", filename);
return;
cgit_print_error_page(400, "Bad request",
"Unsupported snapshot format: %s", filename);
return;