From patchwork Tue Nov 24 21:04:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_=C3=85gren?= X-Patchwork-Id: 11929833 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4E03C2D0E4 for ; Tue, 24 Nov 2020 21:04:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6118320789 for ; Tue, 24 Nov 2020 21:04:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Hu9HH4kg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729385AbgKXVEv (ORCPT ); Tue, 24 Nov 2020 16:04:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729288AbgKXVEu (ORCPT ); Tue, 24 Nov 2020 16:04:50 -0500 Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8081DC0613D6 for ; Tue, 24 Nov 2020 13:04:50 -0800 (PST) Received: by mail-lf1-x144.google.com with SMTP id d20so20239lfe.11 for ; Tue, 24 Nov 2020 13:04:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MpzEtaiZqKT0T5CsKXtV24LR2pR24pv/lx03VIGA7iI=; b=Hu9HH4kg3PLbutx2eZZwW8jQWOR2EQKJjS9V05lQw2gGN9kFrwTBFHkKTgE2rIUcQ+ IjwAIm+zHeFEzBaPN0VyZ6WCkGSricEFt9ziKFaQEmb5syUo4CmZw+gMe4742W6T1CCI iHO4pj9Cau9wg9PASw3kG5/TA7wR935heMCwrbWakqubxYry5NJH0vNdyd+IRr2ZIfPd E1CdkU+dBs27vHVEPa/xRhmdXmus5RKaBGl8iJsEzgrcMU8xEwnJ+0srll4j0S/wwMs8 6nRbIGawl9LIP9G4EqYPPvEDcpQN3qUZqEhYQFFP0K59TkIwdKUwp93d62aGEJLrMINr AYMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MpzEtaiZqKT0T5CsKXtV24LR2pR24pv/lx03VIGA7iI=; b=j+6TbMNPA827jvEr9uInDmnnwtGrCwiOJ2rtLS0K9xsRyHS+UdEzd8ZDDbk6HhTUe/ EXZkf6gHN8fHcy9v31aTw0xu6GQe9FSxaJb3S11JwDi2f21LBevDNrILdWHIB6T/ZlxC SoxbMzlYZDdNOJ75qWvyKlMk/8Mqd0waM4ErZRQDS5BQAdIfQD37kYT4GbLIky4LEHGH o6NQAPB4xcvmvif5tImkySTYCDTZaXn6HFqHiXlL2a3MJagwOSDkh9plUZpvuKhaeu0t Vr8PVYN+/Fa2stVyjzVMeZbNpYKLy+UyILBDpDVuACU2ylUDJAzjBX1XrOI1aIWWGmFH r6Kw== X-Gm-Message-State: AOAM533+fekvJ62nJf/SbiD6AsB02AoImK/aRkkOAowlMjKQ2FdiPdkT pHTKJ/0EKSihTs8zemn3PnAn6bU54pGyWA== X-Google-Smtp-Source: ABdhPJy/X6MA7vI4+fkILqcPfZS3EbU+EdR44HnFwOiYtzQnOqEZ/lEMY9s28AI2HmjHary06/UyZA== X-Received: by 2002:a19:ca0a:: with SMTP id a10mr4250lfg.121.1606251888654; Tue, 24 Nov 2020 13:04:48 -0800 (PST) Received: from localhost.localdomain (h-79-136-116-123.NA.cust.bahnhof.se. [79.136.116.123]) by smtp.gmail.com with ESMTPSA id z20sm22911ljm.138.2020.11.24.13.04.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 13:04:48 -0800 (PST) From: =?utf-8?q?Martin_=C3=85gren?= To: git@vger.kernel.org Cc: Junio C Hamano , Emily Shaffer , Jeff King , Johannes Schindelin Subject: [PATCH v2 1/4] grep: don't set up a "default" repo for grep Date: Tue, 24 Nov 2020 22:04:13 +0100 Message-Id: <56c00645c55f0e2cb3d21b19e397f449968b869d.1606251357.git.martin.agren@gmail.com> X-Mailer: git-send-email 2.29.2.454.gaff20da3a2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org `init_grep_defaults()` fills a `static struct grep_opt grep_defaults`. This struct is then used by `grep_init()` as a blueprint for other such structs. Notably, `grep_init()` takes a `struct repo *` and assigns it into the target struct. As a result, it is unnecessary for us to take a `struct repo *` in `init_grep_defaults()` as well. We assign it into the default struct and never look at it again. And in light of how we return early if we have already set up the default struct, it's not just unnecessary, but is also a bit confusing: If we are called twice and with different repos, is it a bug or a feature that we ignore the second repo? Drop the repo parameter for `init_grep_defaults()`. Signed-off-by: Martin Ågren --- Documentation/MyFirstObjectWalk.txt | 2 +- grep.h | 2 +- builtin/grep.c | 2 +- builtin/log.c | 2 +- grep.c | 3 +-- revision.c | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt index c3f2d1a831..85434d1938 100644 --- a/Documentation/MyFirstObjectWalk.txt +++ b/Documentation/MyFirstObjectWalk.txt @@ -394,7 +394,7 @@ First some setup. Add `init_grep_defaults()` to `init_walken_defaults()` and add ---- static void init_walken_defaults(void) { - init_grep_defaults(the_repository); + init_grep_defaults(); } ... diff --git a/grep.h b/grep.h index 9115db8515..1c5478f381 100644 --- a/grep.h +++ b/grep.h @@ -170,7 +170,7 @@ struct grep_opt { void *output_priv; }; -void init_grep_defaults(struct repository *); +void init_grep_defaults(void); int grep_config(const char *var, const char *value, void *); void grep_init(struct grep_opt *, struct repository *repo, const char *prefix); void grep_destroy(void); diff --git a/builtin/grep.c b/builtin/grep.c index e58e57504c..2b96efa8c2 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -950,7 +950,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) OPT_END() }; - init_grep_defaults(the_repository); + init_grep_defaults(); git_config(grep_cmd_config, NULL); grep_init(&opt, the_repository, prefix); diff --git a/builtin/log.c b/builtin/log.c index 49eb8f6431..eee4beca4d 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -131,7 +131,7 @@ static int log_line_range_callback(const struct option *option, const char *arg, static void init_log_defaults(void) { - init_grep_defaults(the_repository); + init_grep_defaults(); init_diff_ui_defaults(); decoration_style = auto_decoration_style(); diff --git a/grep.c b/grep.c index 54af9f813e..b351449f7f 100644 --- a/grep.c +++ b/grep.c @@ -57,7 +57,7 @@ static void color_set(char *dst, const char *color_bytes) * We could let the compiler do this, but without C99 initializers * the code gets unwieldy and unreadable, so... */ -void init_grep_defaults(struct repository *repo) +void init_grep_defaults(void) { struct grep_opt *opt = &grep_defaults; static int run_once; @@ -67,7 +67,6 @@ void init_grep_defaults(struct repository *repo) run_once++; memset(opt, 0, sizeof(*opt)); - opt->repo = repo; opt->relative = 1; opt->pathname = 1; opt->max_depth = -1; diff --git a/revision.c b/revision.c index aa62212040..f35ea1db11 100644 --- a/revision.c +++ b/revision.c @@ -1834,7 +1834,7 @@ void repo_init_revisions(struct repository *r, revs->commit_format = CMIT_FMT_DEFAULT; revs->expand_tabs_in_log_default = 8; - init_grep_defaults(revs->repo); + init_grep_defaults(); grep_init(&revs->grep_filter, revs->repo, prefix); revs->grep_filter.status_only = 1; From patchwork Tue Nov 24 21:04:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_=C3=85gren?= X-Patchwork-Id: 11929835 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E01DC56202 for ; Tue, 24 Nov 2020 21:04:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CF36220789 for ; Tue, 24 Nov 2020 21:04:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="stTmEDfs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729405AbgKXVEy (ORCPT ); Tue, 24 Nov 2020 16:04:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729288AbgKXVEx (ORCPT ); Tue, 24 Nov 2020 16:04:53 -0500 Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CDB0C0613D6 for ; Tue, 24 Nov 2020 13:04:53 -0800 (PST) Received: by mail-lf1-x144.google.com with SMTP id u19so46130lfr.7 for ; Tue, 24 Nov 2020 13:04:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PzK9hm8dvXKJc8HITUoZygGpfbAuAchDkA65I3AjRno=; b=stTmEDfsVJLLnZgcbqEdRscb+SQnJq9UzGm0+kWRFKtYN2Pras08obzRoHZ7OB8vwM FmSz7HixFBzm3AMmrhTKAv3QKT76z4CkwhplHNIvTxgDz1DJQVOGRBoVu4EfqcMKx6BG 99BdAHhm5k1dwXXPKe7UDD+8To0UMm9+Ml4Qs9fLEv20OdXvBFaFVpfk0+K5MkINixYi CJFt1zmPgE0BKntXPi9xNv9QNoHGwH7Wm1OEGr2aFCXhM7j9GRcr6HKESu8KM6lQlT5O dHYDtLOcJvNnC3TNO1Wmqxj+wtnb9gwi+YTdrZQNIPdVoB0OpfxMZRn66u/3UAzA2CJe ZpiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PzK9hm8dvXKJc8HITUoZygGpfbAuAchDkA65I3AjRno=; b=fFHottXmypGvYO9lXE9TjnHIThZkbOirvaZ4d+/FrCRzaGw+yNXayhL5ckq5ib78no ikT3ULx3YUKEoMrnngORIRIhhtEj0isZts2ZCIOKZlQ084j8kadJTtjkI+BVceLtHwXc DuUDqatiWlpE3udSAco9RZDtOU/5OGYSLs3PLzMUrIhE8RsLyEeueybeT+jGEzTkdymV yqiJ2DN6EKkEIG1n8niZvSdVPtk4dN5/8iR85AWXm51bEkODIQ9r0tZDOB/UPZAy3ES/ +jnvdfLzGXnJiPE+/6TOgz1W7HsEif6hmcZJaiJQEWCByYSTKcyDnT++3cI9uas0RK/v 5gFw== X-Gm-Message-State: AOAM5303wP96LYyzSUwYGrM2QkXCe40gUk3UVImkWSCox/AQ0MtdOrKD OBAXDTiv7I8xKBLLb3PQuIl1hrSNgOy+iQ== X-Google-Smtp-Source: ABdhPJyPvd00mQieffeunii5INIJPykIP9N6zqi5x1LyvvK+KJnMJlSA5OFXpfbKQvMvbtGY6+UnWg== X-Received: by 2002:a19:ac05:: with SMTP id g5mr2325961lfc.593.1606251891198; Tue, 24 Nov 2020 13:04:51 -0800 (PST) Received: from localhost.localdomain (h-79-136-116-123.NA.cust.bahnhof.se. [79.136.116.123]) by smtp.gmail.com with ESMTPSA id z20sm22911ljm.138.2020.11.24.13.04.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 13:04:50 -0800 (PST) From: =?utf-8?q?Martin_=C3=85gren?= To: git@vger.kernel.org Cc: Junio C Hamano , Emily Shaffer , Jeff King , Johannes Schindelin Subject: [PATCH v2 2/4] grep: use designated initializers for `grep_defaults` Date: Tue, 24 Nov 2020 22:04:14 +0100 Message-Id: X-Mailer: git-send-email 2.29.2.454.gaff20da3a2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In 15fabd1bbd ("builtin/grep.c: make configuration callback more reusable", 2012-10-09), we learned to fill a `static struct grep_opt grep_defaults` which we can use as a blueprint for other such structs. At the time, we didn't consider designated initializers to be widely useable, but these days, we do. (See, e.g., cbc0f81d96 ("strbuf: use designated initializers in STRBUF_INIT", 2017-07-10).) Use designated initializers to let the compiler set up the struct and so that we don't need to remember to call `init_grep_defaults()`. Signed-off-by: Martin Ågren --- Documentation/MyFirstObjectWalk.txt | 10 +---- grep.h | 1 - builtin/grep.c | 1 - builtin/log.c | 1 - grep.c | 64 +++++++++++------------------ revision.c | 1 - 6 files changed, 26 insertions(+), 52 deletions(-) diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt index 85434d1938..7f4bffc4dd 100644 --- a/Documentation/MyFirstObjectWalk.txt +++ b/Documentation/MyFirstObjectWalk.txt @@ -388,17 +388,9 @@ Next, let's try to filter the commits we see based on their author. This is equivalent to running `git log --author=`. We can add a filter by modifying `rev_info.grep_filter`, which is a `struct grep_opt`. -First some setup. Add `init_grep_defaults()` to `init_walken_defaults()` and add -`grep_config()` to `git_walken_config()`: +First some setup. Add `grep_config()` to `git_walken_config()`: ---- -static void init_walken_defaults(void) -{ - init_grep_defaults(); -} - -... - static int git_walken_config(const char *var, const char *value, void *cb) { grep_config(var, value, cb); diff --git a/grep.h b/grep.h index 1c5478f381..b5c4e223a8 100644 --- a/grep.h +++ b/grep.h @@ -170,7 +170,6 @@ struct grep_opt { void *output_priv; }; -void init_grep_defaults(void); int grep_config(const char *var, const char *value, void *); void grep_init(struct grep_opt *, struct repository *repo, const char *prefix); void grep_destroy(void); diff --git a/builtin/grep.c b/builtin/grep.c index 2b96efa8c2..ca259af441 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -950,7 +950,6 @@ int cmd_grep(int argc, const char **argv, const char *prefix) OPT_END() }; - init_grep_defaults(); git_config(grep_cmd_config, NULL); grep_init(&opt, the_repository, prefix); diff --git a/builtin/log.c b/builtin/log.c index eee4beca4d..cf41714fb0 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -131,7 +131,6 @@ static int log_line_range_callback(const struct option *option, const char *arg, static void init_log_defaults(void) { - init_grep_defaults(); init_diff_ui_defaults(); decoration_style = auto_decoration_style(); diff --git a/grep.c b/grep.c index b351449f7f..8f2009ec9f 100644 --- a/grep.c +++ b/grep.c @@ -14,7 +14,31 @@ static int grep_source_load(struct grep_source *gs); static int grep_source_is_binary(struct grep_source *gs, struct index_state *istate); -static struct grep_opt grep_defaults; +static void std_output(struct grep_opt *opt, const void *buf, size_t size) +{ + fwrite(buf, size, 1, stdout); +} + +static struct grep_opt grep_defaults = { + .relative = 1, + .pathname = 1, + .max_depth = -1, + .pattern_type_option = GREP_PATTERN_TYPE_UNSPECIFIED, + .colors = { + [GREP_COLOR_CONTEXT] = "", + [GREP_COLOR_FILENAME] = "", + [GREP_COLOR_FUNCTION] = "", + [GREP_COLOR_LINENO] = "", + [GREP_COLOR_COLUMNNO] = "", + [GREP_COLOR_MATCH_CONTEXT] = GIT_COLOR_BOLD_RED, + [GREP_COLOR_MATCH_SELECTED] = GIT_COLOR_BOLD_RED, + [GREP_COLOR_SELECTED] = "", + [GREP_COLOR_SEP] = GIT_COLOR_CYAN, + }, + .only_matching = 0, + .color = -1, + .output = std_output, +}; #ifdef USE_LIBPCRE2 static pcre2_general_context *pcre2_global_context; @@ -42,49 +66,11 @@ static const char *color_grep_slots[] = { [GREP_COLOR_SEP] = "separator", }; -static void std_output(struct grep_opt *opt, const void *buf, size_t size) -{ - fwrite(buf, size, 1, stdout); -} - static void color_set(char *dst, const char *color_bytes) { xsnprintf(dst, COLOR_MAXLEN, "%s", color_bytes); } -/* - * Initialize the grep_defaults template with hardcoded defaults. - * We could let the compiler do this, but without C99 initializers - * the code gets unwieldy and unreadable, so... - */ -void init_grep_defaults(void) -{ - struct grep_opt *opt = &grep_defaults; - static int run_once; - - if (run_once) - return; - run_once++; - - memset(opt, 0, sizeof(*opt)); - opt->relative = 1; - opt->pathname = 1; - opt->max_depth = -1; - opt->pattern_type_option = GREP_PATTERN_TYPE_UNSPECIFIED; - color_set(opt->colors[GREP_COLOR_CONTEXT], ""); - color_set(opt->colors[GREP_COLOR_FILENAME], ""); - color_set(opt->colors[GREP_COLOR_FUNCTION], ""); - color_set(opt->colors[GREP_COLOR_LINENO], ""); - color_set(opt->colors[GREP_COLOR_COLUMNNO], ""); - color_set(opt->colors[GREP_COLOR_MATCH_CONTEXT], GIT_COLOR_BOLD_RED); - color_set(opt->colors[GREP_COLOR_MATCH_SELECTED], GIT_COLOR_BOLD_RED); - color_set(opt->colors[GREP_COLOR_SELECTED], ""); - color_set(opt->colors[GREP_COLOR_SEP], GIT_COLOR_CYAN); - opt->only_matching = 0; - opt->color = -1; - opt->output = std_output; -} - static int parse_pattern_type_arg(const char *opt, const char *arg) { if (!strcmp(arg, "default")) diff --git a/revision.c b/revision.c index f35ea1db11..963868f699 100644 --- a/revision.c +++ b/revision.c @@ -1834,7 +1834,6 @@ void repo_init_revisions(struct repository *r, revs->commit_format = CMIT_FMT_DEFAULT; revs->expand_tabs_in_log_default = 8; - init_grep_defaults(); grep_init(&revs->grep_filter, revs->repo, prefix); revs->grep_filter.status_only = 1; From patchwork Tue Nov 24 21:04:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_=C3=85gren?= X-Patchwork-Id: 11929837 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C91D1C56202 for ; Tue, 24 Nov 2020 21:04:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 71B2720789 for ; Tue, 24 Nov 2020 21:04:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OGGFHGyN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729427AbgKXVE4 (ORCPT ); Tue, 24 Nov 2020 16:04:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729406AbgKXVE4 (ORCPT ); Tue, 24 Nov 2020 16:04:56 -0500 Received: from mail-lf1-x141.google.com (mail-lf1-x141.google.com [IPv6:2a00:1450:4864:20::141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3DFB1C0613D6 for ; Tue, 24 Nov 2020 13:04:54 -0800 (PST) Received: by mail-lf1-x141.google.com with SMTP id j205so52802lfj.6 for ; Tue, 24 Nov 2020 13:04:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bolLlYRXMxjTbk3CPu0rFIyvty01ZUVyeRrvsybispc=; b=OGGFHGyNENsBQMgQOHTlloJV2LCFPPNxgz0GRv2Bjlb342W0cuPBUGrjbHzjjID7Aj VCzCiFSZM8d7wFqg6ZFB7Cfv019w2kQMzsUchn12Sbtv9udkP2QJSJO4WQ61WU4s4Sms 9eBxkjlWJOZaJDajth3lz/W39UiF/uG403r3nfmFxOsHEvF9mY8+Ow8ZbPGRINsT79hz LrPauN/KnlFrx/KsWmhs2HyFOZsAdtuI/O+GG6pYyhH2xQirKKjDrYPlOK8Pjde+Sm4i LhBsPlVcm52UVnn4ztmfLytoU9QIFAKm72XGBSL/I/BsyXV0th2oLGfdz/FxoDh6hunC BLHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bolLlYRXMxjTbk3CPu0rFIyvty01ZUVyeRrvsybispc=; b=KyBsgZNFNHaBQYKZ1wXgoHQuYVyoFYmO76m3BMjugLCoArbfVvs/GopL7sk9Y4Pixm une7dV7C7NB2zYN1aa0AaqV+c0q0yWCZq3c10B5WZbuFUZbwC9p/T74kVuURhzTA4Akg A0yiodyWnjkTGwi3EkRtT0PC7EyPu6pwoIskW6qi0GwurgAcVk0c+egAghNwDuT5qPbZ ZuuS8HKf79rClfiu9Jrrt1rH0BXbBklNmzFMClvnlTCL6zK0fo076kNdxNAsQYK7xQ3m CjRamKxZ6jrvWdo2m2Mwdxh7SHQDgof4aKHSrz7TQFNYstogzTDWaiW2hVPrr2g31t66 2dLQ== X-Gm-Message-State: AOAM530EDO27QugCf/+b7hVLLC+wNfQEJb2TY4Qo6zYNP7fvbmUuCLXg FTtya1JKT00ERQDvi86/5X3OJEpTp6OY7g== X-Google-Smtp-Source: ABdhPJwhzbRZU0MRb2fpe99tkzBxi37OgoXqb4rmgd5dV90RZRSd7Jn74H5TYccCOHSGbviEwfjPOA== X-Received: by 2002:a19:505:: with SMTP id 5mr8935lff.578.1606251892369; Tue, 24 Nov 2020 13:04:52 -0800 (PST) Received: from localhost.localdomain (h-79-136-116-123.NA.cust.bahnhof.se. [79.136.116.123]) by smtp.gmail.com with ESMTPSA id z20sm22911ljm.138.2020.11.24.13.04.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 13:04:51 -0800 (PST) From: =?utf-8?q?Martin_=C3=85gren?= To: git@vger.kernel.org Cc: Junio C Hamano , Emily Shaffer , Jeff King , Johannes Schindelin Subject: [PATCH v2 3/4] grep: copy struct in one fell swoop Date: Tue, 24 Nov 2020 22:04:15 +0100 Message-Id: <359355fb4eff6d99cb1baad9b72ff96e7dcda51d.1606251358.git.martin.agren@gmail.com> X-Mailer: git-send-email 2.29.2.454.gaff20da3a2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org We have a `struct grep_opt` with our defaults which we then copy into the caller's struct. Rather than zeroing the target struct and copying each element one by one, just copy everything at once. This leaves the code simpler and more maintainable. We don't have any ownership issues with what we're copying now and can just greedily copy the whole thing. If and when we do need to handle such elements (`char *`?), we must and can handle it appropriately. This commit doesn't really change that. Signed-off-by: Martin Ågren --- grep.c | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/grep.c b/grep.c index 8f2009ec9f..7d740452cd 100644 --- a/grep.c +++ b/grep.c @@ -66,11 +66,6 @@ static const char *color_grep_slots[] = { [GREP_COLOR_SEP] = "separator", }; -static void color_set(char *dst, const char *color_bytes) -{ - xsnprintf(dst, COLOR_MAXLEN, "%s", color_bytes); -} - static int parse_pattern_type_arg(const char *opt, const char *arg) { if (!strcmp(arg, "default")) @@ -157,9 +152,6 @@ int grep_config(const char *var, const char *value, void *cb) */ void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix) { - struct grep_opt *def = &grep_defaults; - int i; - #if defined(USE_LIBPCRE2) if (!pcre2_global_context) pcre2_global_context = pcre2_general_context_create( @@ -171,26 +163,13 @@ void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix pcre_free = free; #endif - memset(opt, 0, sizeof(*opt)); + *opt = grep_defaults; + opt->repo = repo; opt->prefix = prefix; opt->prefix_length = (prefix && *prefix) ? strlen(prefix) : 0; opt->pattern_tail = &opt->pattern_list; opt->header_tail = &opt->header_list; - - opt->only_matching = def->only_matching; - opt->color = def->color; - opt->extended_regexp_option = def->extended_regexp_option; - opt->pattern_type_option = def->pattern_type_option; - opt->linenum = def->linenum; - opt->columnnum = def->columnnum; - opt->max_depth = def->max_depth; - opt->pathname = def->pathname; - opt->relative = def->relative; - opt->output = def->output; - - for (i = 0; i < NR_GREP_COLORS; i++) - color_set(opt->colors[i], def->colors[i]); } void grep_destroy(void) From patchwork Tue Nov 24 21:04:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_=C3=85gren?= X-Patchwork-Id: 11929839 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C346C2D0E4 for ; Tue, 24 Nov 2020 21:04:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E5FE220789 for ; Tue, 24 Nov 2020 21:04:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kX44Ttqc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729415AbgKXVE4 (ORCPT ); Tue, 24 Nov 2020 16:04:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48198 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729288AbgKXVEz (ORCPT ); Tue, 24 Nov 2020 16:04:55 -0500 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 489D9C061A4D for ; Tue, 24 Nov 2020 13:04:55 -0800 (PST) Received: by mail-lj1-x242.google.com with SMTP id y16so23674254ljk.1 for ; Tue, 24 Nov 2020 13:04:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8DUdSd6pQs4jmskCyVGNyzDYV2RBm7j5o4x+7rAAh1I=; b=kX44TtqcgLvzLnbeK1ONwIVMbsdYysSjMzcgdzWxtOR6vyg11/mCT+5FIvZ8ZOGR5T gJGFPLE2hq52250MMf2Uhg+EmYSlWb6ROhqBbdAhD8wDyJZOJy5BVACaSyjA0j8JcbRF Bv0akRa1CBMQCzox2OuPGTnrlcrEa+dahvtYxjjvpByaR4fZRuYx5ib6Us/7K6+d1Mw1 9MsgPwJfDaMVKvhYcbsy40P9fJQER2NzSXFUDujX8/mtWXG2/ypjS+isARuzy9ogRsMu eEcpMTDtvhcAYSdYwV3gHefWC55sFOwylgx5Qerw60rO6tQIacPQivAGOxvvFtbgbFoj TmXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8DUdSd6pQs4jmskCyVGNyzDYV2RBm7j5o4x+7rAAh1I=; b=bedTyTNwacpA2G1cLu+jXKkY/s6ACDDmLLjAehSt1rbrd/f5xK9F52QvFttk6qyX0H aoWO8PgHIqC0BwvnETGU/9WH4qsLTga7aHcY/aBhr9KtqUr7g3ZpMtFBUDJ33FqktPhJ YFVfmLXrgNPFHWlHvj7uM3tpmICom6nXjCy9QqUP5UfJtwWssu8xncv5MCQAc6fFK71J u1hTpohYEqflVKi8KJHOXyFDVufxUeERKJNwf6rZBiEvkzJCslkytXp2F8PkBnVkvWOX cVx6zoUqHyqYDgRN1HMHKgXs+okjDpt1Y+orsMhEa+dt7Sp+YqOPTsckxeuHwQpM9o6D kkMg== X-Gm-Message-State: AOAM5307QdIi8nrsBXZtS0c5R5+drE1BYCWTMFIIJzIs/bJVGxMbfC/O ruQYNrSaKZ3RHd+S2v0wZsZvU62bvhzZBw== X-Google-Smtp-Source: ABdhPJzkTxf4rWv3sj5bVx4w6x1jGPIx23lSkmX3s6Ks4VJJaWytIx+kbiUmU/mcnjeoKEUeylOVmA== X-Received: by 2002:a2e:81cf:: with SMTP id s15mr53398ljg.459.1606251893527; Tue, 24 Nov 2020 13:04:53 -0800 (PST) Received: from localhost.localdomain (h-79-136-116-123.NA.cust.bahnhof.se. [79.136.116.123]) by smtp.gmail.com with ESMTPSA id z20sm22911ljm.138.2020.11.24.13.04.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Nov 2020 13:04:53 -0800 (PST) From: =?utf-8?q?Martin_=C3=85gren?= To: git@vger.kernel.org Cc: Junio C Hamano , Emily Shaffer , Jeff King , Johannes Schindelin Subject: [PATCH v2 4/4] MyFirstObjectWalk: drop `init_walken_defaults()` Date: Tue, 24 Nov 2020 22:04:16 +0100 Message-Id: X-Mailer: git-send-email 2.29.2.454.gaff20da3a2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In a recent commit, we stopped calling `init_grep_defaults()` from this function. Thus, by the end of the tutorial, we still haven't added any contents to this function. Let's remove it for simplicity. Signed-off-by: Martin Ågren --- Documentation/MyFirstObjectWalk.txt | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/Documentation/MyFirstObjectWalk.txt b/Documentation/MyFirstObjectWalk.txt index 7f4bffc4dd..2d10eea7a9 100644 --- a/Documentation/MyFirstObjectWalk.txt +++ b/Documentation/MyFirstObjectWalk.txt @@ -182,30 +182,6 @@ its `init_log_defaults()` sets its own state (`decoration_style`) and asks `grep` and `diff` to initialize themselves by calling each of their initialization functions. -For our first example within `git walken`, we don't intend to use any other -components within Git, and we don't have any configuration to do. However, we -may want to add some later, so for now, we can add an empty placeholder. Create -a new function in `builtin/walken.c`: - ----- -static void init_walken_defaults(void) -{ - /* - * We don't actually need the same components `git log` does; leave this - * empty for now. - */ -} ----- - -Make sure to add a line invoking it inside of `cmd_walken()`. - ----- -int cmd_walken(int argc, const char **argv, const char *prefix) -{ - init_walken_defaults(); -} ----- - ==== Configuring From `.gitconfig` Next, we should have a look at any relevant configuration settings (i.e.,