summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2006-11-05 00:37:23 -0500
committerJunio C Hamano <junkio@cox.net>2006-11-04 23:48:36 -0800
commit6c2f207b2316149ee8dfaf026e4a869ff9ab42f7 (patch)
tree2e71cda1616f53697b3b8bd85c63f46566aa53ab
parentaf8ffbed0fc016e066765706738c45c65493f392 (diff)
downloadgit-6c2f207b2316149ee8dfaf026e4a869ff9ab42f7.tar.gz
Remove unsupported C99 style struct initializers in git-archive.v1.4.3.4
At least one older version of the Solaris C compiler doesn't support the newer C99 style struct initializers. To allow Git to compile on those systems use an archive description struct which is easier to initialize without the C99 struct initializer syntax. Also since the archives array is not used by anyone other than archive.c we can make it static. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--archive.h2
-rw-r--r--builtin-archive.c23
2 files changed, 12 insertions, 13 deletions
diff --git a/archive.h b/archive.h
index 16dcdb875c..6838dc788f 100644
--- a/archive.h
+++ b/archive.h
@@ -25,8 +25,6 @@ struct archiver {
parse_extra_args_fn_t parse_extra;
};
-extern struct archiver archivers[];
-
extern int parse_archive_args(int argc,
const char **argv,
struct archiver *ar);
diff --git a/builtin-archive.c b/builtin-archive.c
index 9177379122..2df1a84b85 100644
--- a/builtin-archive.c
+++ b/builtin-archive.c
@@ -15,16 +15,14 @@
static const char archive_usage[] = \
"git-archive --format=<fmt> [--prefix=<prefix>/] [--verbose] [<extra>] <tree-ish> [path...]";
-struct archiver archivers[] = {
- {
- .name = "tar",
- .write_archive = write_tar_archive,
- },
- {
- .name = "zip",
- .write_archive = write_zip_archive,
- .parse_extra = parse_extra_zip_args,
- },
+static struct archiver_desc
+{
+ const char *name;
+ write_archive_fn_t write_archive;
+ parse_extra_args_fn_t parse_extra;
+} archivers[] = {
+ { "tar", write_tar_archive, NULL },
+ { "zip", write_zip_archive, parse_extra_zip_args },
};
static int run_remote_archiver(const char *remote, int argc,
@@ -88,7 +86,10 @@ static int init_archiver(const char *name, struct archiver *ar)
for (i = 0; i < ARRAY_SIZE(archivers); i++) {
if (!strcmp(name, archivers[i].name)) {
- memcpy(ar, &archivers[i], sizeof(struct archiver));
+ memset(ar, 0, sizeof(*ar));
+ ar->name = archivers[i].name;
+ ar->write_archive = archivers[i].write_archive;
+ ar->parse_extra = archivers[i].parse_extra;
rv = 0;
break;
}