Show 90 quoted lines
> struct merge_options *o = context;
>
> - memcpy(newpath, base, baselen);
> - memcpy(newpath + baselen, path, len);
> - newpath[baselen + len] = '\0';
> + strbuf_addstr(base, path);
>
> if (S_ISDIR(mode))
> - string_list_insert(&o->current_directory_set, newpath);
> + string_list_insert(&o->current_directory_set, base->buf);
> else
> - string_list_insert(&o->current_file_set, newpath);
> - free(newpath);
> + string_list_insert(&o->current_file_set, base->buf);
>
> + strbuf_setlen(base, base_len);
> return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
> }
>
> diff --git a/tree.c b/tree.c
> index bb02c1c..58ebfce 100644
> --- a/tree.c
> +++ b/tree.c
> @@ -30,9 +30,12 @@ static int read_one_entry_opt(const unsigned char *sha1, const char *base, int b
> return add_cache_entry(ce, opt);
> }
>
> -static int read_one_entry(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage, void *context)
> +static int read_one_entry(const unsigned char *sha1, struct strbuf *base,
> + const char *pathname, unsigned mode, int stage,
> + void *context)
> {
> - return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
> + return read_one_entry_opt(sha1, base->buf, base->len, pathname,
> + mode, stage,
> ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
> }
>
> @@ -40,9 +43,12 @@ static int read_one_entry(const unsigned char *sha1, const char *base, int basel
> * This is used when the caller knows there is no existing entries at
> * the stage that will conflict with the entry being added.
> */
> -static int read_one_entry_quick(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage, void *context)
> +static int read_one_entry_quick(const unsigned char *sha1, struct strbuf *base,
> + const char *pathname, unsigned mode, int stage,
> + void *context)
> {
> - return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
> + return read_one_entry_opt(sha1, base->buf, base->len, pathname,
> + mode, stage,
> ADD_CACHE_JUST_APPEND);
> }
>
> @@ -70,7 +76,7 @@ static int read_tree_1(struct tree *tree, struct strbuf *base,
> continue;
> }
>
> - switch (fn(entry.sha1, base->buf, base->len,
> + switch (fn(entry.sha1, base,
> entry.path, entry.mode, stage, context)) {
> case 0:
> continue;
> diff --git a/tree.h b/tree.h
> index d84ac63..d24125f 100644
> --- a/tree.h
> +++ b/tree.h
> @@ -4,6 +4,7 @@
> #include "object.h"
>
> extern const char *tree_type;
> +struct strbuf;
>
> struct tree {
> struct object object;
> @@ -22,7 +23,7 @@ void free_tree_buffer(struct tree *tree);
> struct tree *parse_tree_indirect(const unsigned char *sha1);
>
> #define READ_TREE_RECURSIVE 1
> -typedef int (*read_tree_fn_t)(const unsigned char *, const char *, int, const char *, unsigned int, int, void *);
> +typedef int (*read_tree_fn_t)(const unsigned char *, struct strbuf *, const char *, unsigned int, int, void *);
>
> extern int read_tree_recursive(struct tree *tree,
> const char *base, int baselen,
> --
> 2.1.0.rc0.78.gc0d8480
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html