Re: [PATCH v2 3/6] grep: add submodules as a grep source type
- From
Stefan Beller <sbeller@google.com>
- Date
- Nov 1, 2016, 16:53 UTC
- Message-ID
- <CAGZ79kYwuM7MszUZyWYxZkWM6wiNG+sw7F+sgt_TJA8Qxg_27g@mail.gmail.com>
- In-Reply-To
- <1477953496-103596-4-git-send-email-bmwill@google.com>
On Mon, Oct 31, 2016 at 3:38 PM, Brandon Williams <bmwill@google.com> wrote:
Show 10 quoted lines
> Add `GREP_SOURCE_SUBMODULE` as a grep_source type and cases for this new > type in the various switch statements in grep.c. > > When initializing a grep_source with type `GREP_SOURCE_SUBMODULE` the > identifier can either be NULL (to indicate that the working tree will be > used) or a SHA1 (the REV of the submodule to be grep'd). If the > identifier is a SHA1 then we want to fall through to the > `GREP_SOURCE_SHA1` case to handle the copying of the SHA1. > > Signed-off-by: Brandon Williams <bmwill@google.com>
This patch only adds the (de-)initialization for the new type, it is not yet made use of. Looks good.
Thanks, Stefan
Show 68 quoted lines
> ---
> grep.c | 16 +++++++++++++++-
> grep.h | 1 +
> 2 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/grep.c b/grep.c
> index 1194d35..0dbdc1d 100644
> --- a/grep.c
> +++ b/grep.c
> @@ -1735,12 +1735,23 @@ void grep_source_init(struct grep_source *gs, enum grep_source_type type,
> case GREP_SOURCE_FILE:
> gs->identifier = xstrdup(identifier);
> break;
> + case GREP_SOURCE_SUBMODULE:
> + if (!identifier) {
> + gs->identifier = NULL;
> + break;
> + }
> + /*
> + * FALL THROUGH
> + * If the identifier is non-NULL (in the submodule case) it
> + * will be a SHA1 that needs to be copied.
> + */
> case GREP_SOURCE_SHA1:
> gs->identifier = xmalloc(20);
> hashcpy(gs->identifier, identifier);
> break;
> case GREP_SOURCE_BUF:
> gs->identifier = NULL;
> + break;
> }
> }
>
> @@ -1760,6 +1771,7 @@ void grep_source_clear_data(struct grep_source *gs)
> switch (gs->type) {
> case GREP_SOURCE_FILE:
> case GREP_SOURCE_SHA1:
> + case GREP_SOURCE_SUBMODULE:
> free(gs->buf);
> gs->buf = NULL;
> gs->size = 0;
> @@ -1831,8 +1843,10 @@ static int grep_source_load(struct grep_source *gs)
> return grep_source_load_sha1(gs);
> case GREP_SOURCE_BUF:
> return gs->buf ? 0 : -1;
> + case GREP_SOURCE_SUBMODULE:
> + break;
> }
> - die("BUG: invalid grep_source type");
> + die("BUG: invalid grep_source type to load");
> }
>
> void grep_source_load_driver(struct grep_source *gs)
> diff --git a/grep.h b/grep.h
> index 5856a23..267534c 100644
> --- a/grep.h
> +++ b/grep.h
> @@ -161,6 +161,7 @@ struct grep_source {
> GREP_SOURCE_SHA1,
> GREP_SOURCE_FILE,
> GREP_SOURCE_BUF,
> + GREP_SOURCE_SUBMODULE,
> } type;
> void *identifier;
>
> --
> 2.8.0.rc3.226.g39d4020
>