diff options
author | Junio C Hamano <junkio@cox.net> | 2006-08-07 17:02:07 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-08-07 17:02:07 -0700 |
commit | 9673198ee867cea4ed70d2cf54c1a2eb8f27bb46 (patch) | |
tree | f06a5be02102b0a78f56e18beffa8fa5c3e70b6e /builtin-add.c | |
parent | 96bc4de85cf810db5c7cd94bf0688a98a64a0bc7 (diff) | |
parent | 7c49cb288173ab5264b3b9e4257aeeb13388334c (diff) | |
download | git-9673198ee867cea4ed70d2cf54c1a2eb8f27bb46.tar.gz |
Merge branch 'master' into pb/gitpm
This is to resolve the conflicts with Ryan's annotate updates early.
Diffstat (limited to 'builtin-add.c')
-rw-r--r-- | builtin-add.c | 50 |
1 files changed, 4 insertions, 46 deletions
diff --git a/builtin-add.c b/builtin-add.c index bfbbb1bf52..096b611b5b 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -21,8 +21,7 @@ static void prune_directory(struct dir_struct *dir, const char **pathspec, int p for (specs = 0; pathspec[specs]; specs++) /* nothing */; - seen = xmalloc(specs); - memset(seen, 0, specs); + seen = xcalloc(specs, 1); src = dst = dir->entries; i = dir->nr; @@ -83,52 +82,12 @@ static void fill_directory(struct dir_struct *dir, const char **pathspec) prune_directory(dir, pathspec, baselen); } -static int add_file_to_index(const char *path, int verbose) -{ - int size, namelen; - struct stat st; - struct cache_entry *ce; - - if (lstat(path, &st)) - die("%s: unable to stat (%s)", path, strerror(errno)); - - if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) - die("%s: can only add regular files or symbolic links", path); - - namelen = strlen(path); - size = cache_entry_size(namelen); - ce = xcalloc(1, size); - memcpy(ce->name, path, namelen); - ce->ce_flags = htons(namelen); - fill_stat_cache_info(ce, &st); - - ce->ce_mode = create_ce_mode(st.st_mode); - if (!trust_executable_bit) { - /* If there is an existing entry, pick the mode bits - * from it. - */ - int pos = cache_name_pos(path, namelen); - if (pos >= 0) - ce->ce_mode = active_cache[pos]->ce_mode; - } - - if (index_path(ce->sha1, path, &st, 1)) - die("unable to index file %s", path); - if (add_cache_entry(ce, ADD_CACHE_OK_TO_ADD)) - die("unable to add %s to index",path); - if (verbose) - printf("add '%s'\n", path); - cache_tree_invalidate_path(active_cache_tree, path); - return 0; -} - static struct lock_file lock_file; -int cmd_add(int argc, const char **argv, char **envp) +int cmd_add(int argc, const char **argv, const char *prefix) { int i, newfd; int verbose = 0, show_only = 0; - const char *prefix = setup_git_directory(); const char **pathspec; struct dir_struct dir; @@ -158,9 +117,8 @@ int cmd_add(int argc, const char **argv, char **envp) verbose = 1; continue; } - die(builtin_add_usage); + usage(builtin_add_usage); } - git_config(git_default_config); pathspec = get_pathspec(prefix, argv + i); fill_directory(&dir, pathspec); @@ -181,7 +139,7 @@ int cmd_add(int argc, const char **argv, char **envp) if (active_cache_changed) { if (write_cache(newfd, active_cache, active_nr) || - commit_lock_file(&lock_file)) + close(newfd) || commit_lock_file(&lock_file)) die("Unable to write new index file"); } |