diff options
Diffstat (limited to 'archive.c')
-rw-r--r-- | archive.c | 34 |
1 files changed, 16 insertions, 18 deletions
@@ -1,4 +1,5 @@ #include "cache.h" +#include "refs.h" #include "commit.h" #include "tree-walk.h" #include "attr.h" @@ -33,7 +34,7 @@ static void format_subst(const struct commit *commit, char *to_free = NULL; struct strbuf fmt = STRBUF_INIT; struct pretty_print_context ctx = {0}; - ctx.date_mode = DATE_NORMAL; + ctx.date_mode.type = DATE_NORMAL; ctx.abbrev = DEFAULT_ABBREV; if (src == buf->buf) @@ -170,13 +171,14 @@ static void queue_directory(const unsigned char *sha1, unsigned mode, int stage, struct archiver_context *c) { struct directory *d; - d = xmallocz(sizeof(*d) + base->len + 1 + strlen(filename)); + size_t len = st_add4(base->len, 1, strlen(filename), 1); + d = xmalloc(st_add(sizeof(*d), len)); d->up = c->bottom; d->baselen = base->len; d->mode = mode; d->stage = stage; c->bottom = d; - d->len = sprintf(d->path, "%.*s%s/", (int)base->len, base->buf, filename); + d->len = xsnprintf(d->path, len, "%.*s%s/", (int)base->len, base->buf, filename); hashcpy(d->oid.hash, sha1); } @@ -239,7 +241,7 @@ int write_archive_entries(struct archiver_args *args, len--; if (args->verbose) fprintf(stderr, "%.*s\n", (int)len, args->base); - err = write_entry(args, args->tree->object.sha1, args->base, + err = write_entry(args, args->tree->object.oid.hash, args->base, len, 040777); if (err) return err; @@ -320,7 +322,7 @@ static int path_exists(struct tree *tree, const char *path) pathspec.recursive = 1; ret = read_tree_recursive(tree, "", 0, 0, &pathspec, reject_entry, &pathspec); - free_pathspec(&pathspec); + clear_pathspec(&pathspec); return ret != 0; } @@ -372,7 +374,7 @@ static void parse_treeish_arg(const char **argv, commit = lookup_commit_reference_gently(oid.hash, 1); if (commit) { - commit_sha1 = commit->object.sha1; + commit_sha1 = commit->object.oid.hash; archive_time = commit->date; } else { commit_sha1 = NULL; @@ -388,7 +390,7 @@ static void parse_treeish_arg(const char **argv, unsigned int mode; int err; - err = get_tree_entry(tree->object.sha1, prefix, + err = get_tree_entry(tree->object.oid.hash, prefix, tree_oid.hash, &mode); if (err || !S_ISDIR(mode)) die("current working directory is untracked"); @@ -456,11 +458,11 @@ static int parse_archive_args(int argc, const char **argv, argc = parse_options(argc, argv, NULL, opts, archive_usage, 0); if (remote) - die("Unexpected option --remote"); + die(_("Unexpected option --remote")); if (exec) - die("Option --exec can only be used together with --remote"); + die(_("Option --exec can only be used together with --remote")); if (output) - die("Unexpected option --output"); + die(_("Unexpected option --output")); if (!base) base = ""; @@ -482,14 +484,14 @@ static int parse_archive_args(int argc, const char **argv, usage_with_options(archive_usage, opts); *ar = lookup_archiver(format); if (!*ar || (is_remote && !((*ar)->flags & ARCHIVER_REMOTE))) - die("Unknown archive format '%s'", format); + die(_("Unknown archive format '%s'"), format); args->compression_level = Z_DEFAULT_COMPRESSION; if (compression_level != -1) { if ((*ar)->flags & ARCHIVER_WANT_COMPRESSION_LEVELS) args->compression_level = compression_level; else { - die("Argument not supported for format '%s': -%d", + die(_("Argument not supported for format '%s': -%d"), format, compression_level); } } @@ -502,15 +504,11 @@ static int parse_archive_args(int argc, const char **argv, } int write_archive(int argc, const char **argv, const char *prefix, - int setup_prefix, const char *name_hint, int remote) + const char *name_hint, int remote) { - int nongit = 0; const struct archiver *ar = NULL; struct archiver_args args; - if (setup_prefix && prefix == NULL) - prefix = setup_git_directory_gently(&nongit); - git_config_get_bool("uploadarchive.allowunreachable", &remote_allow_unreachable); git_config(git_default_config, NULL); @@ -518,7 +516,7 @@ int write_archive(int argc, const char **argv, const char *prefix, init_zip_archiver(); argc = parse_archive_args(argc, argv, &ar, &args, name_hint, remote); - if (nongit) { + if (!startup_info->have_repository) { /* * We know this will die() with an error, so we could just * die ourselves; but its error message will be more specific |