{"thread":{"id":"5528","subject":"[PATCH] git-archive: make compression level of ZIP archives configurable","startedAt":"2006-09-09T15:02:38Z","lastAt":"2006-09-09T15:02:38Z","messageCount":1,"participants":["Rene Scharfe"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"26638","messageId":"4502D78E.3050006@lsrfire.ath.cx","threadId":"5528","inReplyTo":null,"subject":"[PATCH] git-archive: make compression level of ZIP archives configurable","fromName":"Rene Scharfe","fromEmail":"rene.scharfe@lsrfire.ath.cx","sentAt":"2006-09-09T15:02:38Z","receivedAt":"2006-09-09T15:02:38Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>\n\ndiff --git a/archive.h b/archive.h\nindex f3d344b..d8cca73 100644\n--- a/archive.h\n+++ b/archive.h\n@@ -42,5 +42,6 @@ extern void parse_pathspec_arg(const cha\n  */\n extern int write_tar_archive(struct archiver_args *);\n extern int write_zip_archive(struct archiver_args *);\n+extern void *parse_extra_zip_args(int argc, const char **argv);\n \n #endif\t/* ARCHIVE_H */\ndiff --git a/builtin-archive.c b/builtin-archive.c\nindex 6ef2c90..83e5589 100644\n--- a/builtin-archive.c\n+++ b/builtin-archive.c\n@@ -15,8 +15,15 @@ static const char archive_usage[] =\n \"git-archive --format=<fmt> [--prefix=<prefix>/] [<extra>] <tree-ish> [path...]\";\n \n struct archiver archivers[] = {\n-\t{ .name = \"tar\", .write_archive = write_tar_archive },\n-\t{ .name = \"zip\", .write_archive = write_zip_archive },\n+\t{\n+\t\t.name\t\t= \"tar\",\n+\t\t.write_archive\t= write_tar_archive,\n+\t},\n+\t{\n+\t\t.name\t\t= \"zip\",\n+\t\t.write_archive\t= write_zip_archive,\n+\t\t.parse_extra\t= parse_extra_zip_args,\n+\t},\n };\n \n static int run_remote_archiver(struct archiver *ar, int argc, const char **argv)\ndiff --git a/builtin-zip-tree.c b/builtin-zip-tree.c\nindex 23b4de5..fdac2bd 100644\n--- a/builtin-zip-tree.c\n+++ b/builtin-zip-tree.c\n@@ -379,3 +379,16 @@ int write_zip_archive(struct archiver_ar\n \n \treturn 0;\n }\n+\n+void *parse_extra_zip_args(int argc, const char **argv)\n+{\n+\tfor (; argc > 0; argc--, argv++) {\n+\t\tconst char *arg = argv[0];\n+\n+\t\tif (arg[0] == '-' && isdigit(arg[1]) && arg[2] == '\\0')\n+\t\t\tzlib_compression_level = arg[1] - '0';\n+\t\telse\n+\t\t\tdie(\"Unknown argument for zip format: %s\", arg);\n+\t}\n+\treturn NULL;\n+}\n"}]}