All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pranit Bauva <pranit.bauva@gmail.com>
To: git@vger.kernel.org
Cc: Pranit Bauva <pranit.bauva@gmail.com>,
	larsxschneider@gmail.com, christian.couder@gmail.com,
	chriscool@tuxfamily.org, sunshine@sunshineco.com,
	Johannes.Schindelin@gmx.de
Subject: [PATCH v8 3/3] bisect--helper: `write_terms` shell function in C
Date: Tue, 24 May 2016 12:51:24 +0530	[thread overview]
Message-ID: <20160524072124.2945-4-pranit.bauva@gmail.com> (raw)
In-Reply-To: <20160524072124.2945-1-pranit.bauva@gmail.com>
In-Reply-To: <1464014928-31548-1-git-send-email-pranit.bauva@gmail.com>

Reimplement the `write_terms` shell function in C and add a `write-terms`
subcommand to `git bisect--helper` to call it from git-bisect.sh . Also
remove the subcommand `--check-term-format` as it can now be called from
inside the function write_terms() C implementation.

Also `|| exit` is added when calling write-terms subcommand from
git-bisect.sh so as to exit whenever there is an error.

Using `--write-terms` subcommand is a temporary measure to port shell
function to C so as to use the existing test suite. As more functions
are ported, this subcommand will be retired and will be called by some
other method.

Mentored-by: Lars Schneider <larsxschneider@gmail.com>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
---
 builtin/bisect--helper.c | 36 +++++++++++++++++++++++++++++-------
 git-bisect.sh            | 22 +++++++---------------
 2 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index 3c748d1..91027b0 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -4,9 +4,11 @@
 #include "bisect.h"
 #include "refs.h"
 
+static GIT_PATH_FUNC(git_path_bisect_write_terms, "BISECT_TERMS")
+
 static const char * const git_bisect_helper_usage[] = {
 	N_("git bisect--helper --next-all [--no-checkout]"),
-	N_("git bisect--helper --check-term-format <term> <orig_term>"),
+	N_("git bisect--helper --write-terms <bad_term> <good_term>"),
 	NULL
 };
 
@@ -56,18 +58,38 @@ static int check_term_format(const char *term, const char *orig_term)
 	return 0;
 }
 
+static int write_terms(const char *bad, const char *good)
+{
+	FILE *fp;
+	int res;
+
+	if (!strcmp(bad, good))
+		return error(_("please use two different terms"));
+
+	if (check_term_format(bad, "bad") || check_term_format(good, "good"))
+		return -1;
+
+	fp = fopen(git_path_bisect_write_terms(), "w");
+	if (!fp)
+		return error_errno(_("could not open the file BISECT_TERMS"));
+
+	res = fprintf(fp, "%s\n%s\n", bad, good);
+	fclose(fp);
+	return (res < 0) ? -1 : 0;
+}
+
 int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
 {
 	enum {
 		NEXT_ALL = 1,
-		CHECK_TERM_FMT
+		WRITE_TERMS
 	} cmdmode = 0;
 	int no_checkout = 0;
 	struct option options[] = {
 		OPT_CMDMODE(0, "next-all", &cmdmode,
 			 N_("perform 'git bisect next'"), NEXT_ALL),
-		OPT_CMDMODE(0, "check-term-format", &cmdmode,
-			 N_("check format of the term"), CHECK_TERM_FMT),
+		OPT_CMDMODE(0, "write-terms", &cmdmode,
+			 N_("write the terms to .git/BISECT_TERMS"), WRITE_TERMS),
 		OPT_BOOL(0, "no-checkout", &no_checkout,
 			 N_("update BISECT_HEAD instead of checking out the current commit")),
 		OPT_END()
@@ -82,10 +104,10 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
 	switch (cmdmode) {
 	case NEXT_ALL:
 		return bisect_next_all(prefix, no_checkout);
-	case CHECK_TERM_FMT:
+	case WRITE_TERMS:
 		if (argc != 2)
-			die(_("--check-term-format requires two arguments"));
-		return check_term_format(argv[0], argv[1]);
+			die(_("--write-terms requires two arguments"));
+		return write_terms(argv[0], argv[1]);
 	default:
 		die("BUG: unknown subcommand '%d'", cmdmode);
 	}
diff --git a/git-bisect.sh b/git-bisect.sh
index 7d7965d..cd39bd0 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -210,7 +210,7 @@ bisect_start() {
 	eval "$eval true" &&
 	if test $must_write_terms -eq 1
 	then
-		write_terms "$TERM_BAD" "$TERM_GOOD"
+		git bisect--helper --write-terms "$TERM_BAD" "$TERM_GOOD" || exit
 	fi &&
 	echo "git bisect start$orig_args" >>"$GIT_DIR/BISECT_LOG" || exit
 	#
@@ -557,18 +557,6 @@ get_terms () {
 	fi
 }
 
-write_terms () {
-	TERM_BAD=$1
-	TERM_GOOD=$2
-	if test "$TERM_BAD" = "$TERM_GOOD"
-	then
-		die "$(gettext "please use two different terms")"
-	fi
-	git bisect--helper --check-term-format "$TERM_BAD" bad || exit
-	git bisect--helper --check-term-format "$TERM_GOOD" good || exit
-	printf '%s\n%s\n' "$TERM_BAD" "$TERM_GOOD" >"$GIT_DIR/BISECT_TERMS"
-}
-
 check_and_set_terms () {
 	cmd="$1"
 	case "$cmd" in
@@ -582,13 +570,17 @@ check_and_set_terms () {
 		bad|good)
 			if ! test -s "$GIT_DIR/BISECT_TERMS"
 			then
-				write_terms bad good
+				TERM_BAD=bad
+				TERM_GOOD=good
+				git bisect--helper --write-terms "$TERM_BAD" "$TERM_GOOD" || exit
 			fi
 			;;
 		new|old)
 			if ! test -s "$GIT_DIR/BISECT_TERMS"
 			then
-				write_terms new old
+				TERM_BAD=new
+				TERM_GOOD=old
+				git bisect--helper --write-terms "$TERM_BAD" "$TERM_GOOD" || exit
 			fi
 			;;
 		esac ;;
-- 
2.8.3

  parent reply	other threads:[~2016-05-24  7:23 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-21 19:00 [PATCH] bisect--helper: convert a function in shell to C Pranit Bauva
2016-03-22  0:28 ` Stefan Beller
2016-03-22  6:10   ` Christian Couder
2016-03-22  6:13     ` Pranit Bauva
2016-03-22  6:13   ` Pranit Bauva
2016-03-22  8:01 ` [PATCH v2] " Pranit Bauva
2016-03-22 15:09   ` Johannes Schindelin
2016-03-22 15:11     ` Johannes Schindelin
2016-03-22 17:46       ` Pranit Bauva
2016-03-23 11:23         ` Johannes Schindelin
2016-03-22 16:03     ` Junio C Hamano
2016-03-22 16:49       ` Johannes Schindelin
2016-03-22 17:52       ` Pranit Bauva
2016-03-22 17:59         ` Stefan Beller
2016-03-23 11:24           ` Johannes Schindelin
2016-03-22 17:45     ` Pranit Bauva
2016-03-23 11:22       ` Johannes Schindelin
2016-03-23 13:53         ` Pranit Bauva
2016-03-23  7:16   ` [PATCH v3] " Pranit Bauva
2016-03-23 11:57     ` Johannes Schindelin
2016-03-23 13:16       ` Pranit Bauva
2016-03-23 16:24         ` Junio C Hamano
2016-03-23 18:38           ` Pranit Bauva
2016-03-23 16:15       ` Junio C Hamano
2016-03-23 18:46         ` Pranit Bauva
2016-05-04  5:07     ` [PATCH 0/2] bisect--helper: rewrite of check_term_format() Pranit Bauva
2016-05-04  5:22       ` Christian Couder
2016-05-04  5:25         ` Pranit Bauva
2016-05-06 14:49       ` [PATCH v5 0/2] bisect--helper: rewrite of check-term-format() Pranit Bauva
2016-05-06 14:49         ` [PATCH v5 1/2] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-08  7:04           ` Johannes Schindelin
2016-05-08  7:17             ` Pranit Bauva
2016-05-08 15:30               ` Christian Couder
2016-05-08 15:33                 ` Pranit Bauva
2016-05-09 14:59               ` Johannes Schindelin
2016-05-09 15:33                 ` Pranit Bauva
2016-05-06 14:49         ` [PATCH v5 2/2] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-07  0:05           ` Eric Sunshine
2016-05-06 22:15         ` [PATCH v5 0/2] bisect--helper: rewrite of check-term-format() Junio C Hamano
2016-05-07 13:07           ` Pranit Bauva
2016-05-08  2:25             ` Junio C Hamano
2016-05-08  6:23               ` Pranit Bauva
2016-05-08 13:34                 ` Pranit Bauva
2016-05-16  0:35                   ` Eric Sunshine
2016-05-16 17:07                     ` Christian Couder
2016-05-20  6:59                     ` Pranit Bauva
2016-05-12  5:32         ` [PATCH v6 0/3] bisect--helper: check_term_format() & write_terms() Pranit Bauva
2016-05-12  5:32           ` [PATCH v6 1/3] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-16  7:07             ` Eric Sunshine
2016-05-20  7:17               ` Pranit Bauva
2016-05-12  5:32           ` [PATCH v6 2/3] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-12 22:36             ` Junio C Hamano
2016-05-13  6:59               ` Pranit Bauva
2016-05-13 18:01                 ` Junio C Hamano
2016-05-12  5:32           ` [PATCH v6 3/3] bisect--helper: `write_terms` " Pranit Bauva
2016-05-16  7:28             ` Eric Sunshine
2016-05-16 13:16               ` Johannes Schindelin
2016-05-16 15:42                 ` Eric Sunshine
2016-05-16 16:45                   ` Johannes Schindelin
2016-05-16 16:59                     ` Eric Sunshine
2016-05-20  7:45                 ` Pranit Bauva
2016-05-23 11:07                   ` Johannes Schindelin
2016-05-23 13:58                     ` Christian Couder
2016-05-23 15:10                       ` Johannes Schindelin
2016-05-23 14:33                     ` Pranit Bauva
2016-05-20  7:42               ` Pranit Bauva
2016-05-23 14:48           ` [PATCH v7 0/3] bisect--helper: check_term_format() & write_terms() Pranit Bauva
2016-05-23 14:48             ` [PATCH v7 1/3] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-23 14:48             ` [PATCH v7 2/3] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-23 14:48             ` [PATCH v7 3/3] bisect--helper: `write_terms` " Pranit Bauva
2016-05-23 16:01               ` Eric Sunshine
2016-05-23 17:59                 ` Pranit Bauva
2016-05-24  7:21             ` [PATCH v8 0/3] bisect--helper: check-term-format() & write_terms() Pranit Bauva
2016-05-24 18:42               ` [PATCH v9 0/3] bisect--helper: check_term_format() and write_terms() Pranit Bauva
2016-05-24 18:42               ` [PATCH v9 1/3] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-24 18:42               ` [PATCH v9 2/3] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-24 18:42               ` [PATCH v9 3/3] bisect--helper: `write_terms` " Pranit Bauva
2016-05-24  7:21             ` [PATCH v8 1/3] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-24  7:21             ` [PATCH v8 2/3] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-25  5:04               ` Johannes Schindelin
2016-05-25  5:13                 ` Pranit Bauva
2016-06-16  7:10               ` Lars Schneider
2016-06-17 12:48                 ` Pranit Bauva
2016-05-24  7:21             ` Pranit Bauva [this message]
2016-05-24  7:33               ` [PATCH v8 3/3] bisect--helper: `write_terms` " Christian Couder
2016-05-24 17:39                 ` Junio C Hamano
2016-05-24 18:31                 ` Pranit Bauva
2016-05-04  5:07     ` [PATCH 1/2] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva
2016-05-04  5:34       ` Pranit Bauva
2016-05-04  6:07       ` Eric Sunshine
2016-05-04  6:50         ` Christian Couder
2016-05-04 11:05           ` Johannes Schindelin
2016-05-04 12:04             ` Pranit Bauva
2016-05-04 12:05             ` Christian Couder
2016-05-04 12:21               ` Johannes Schindelin
2016-05-04 12:41                 ` Christian Couder
2016-05-04 14:56                   ` Johannes Schindelin
2016-05-04 19:07                     ` Christian Couder
2016-05-08  6:54                       ` Johannes Schindelin
2016-05-04  7:28         ` Junio C Hamano
2016-05-04 11:02       ` Johannes Schindelin
2016-05-04  5:07     ` [PATCH 2/2] bisect: rewrite `check_term_format` shell function in C Pranit Bauva
2016-05-04  6:52       ` Eric Sunshine
2016-05-04  7:36         ` Pranit Bauva
2016-05-04  7:40           ` Pranit Bauva
2016-05-04  8:28           ` Eric Sunshine
2016-05-04  8:54             ` Christian Couder
2016-05-04 11:58             ` Pranit Bauva
2016-05-04 17:49               ` Eric Sunshine
2016-05-04 18:08                 ` Pranit Bauva
2016-05-04 11:13           ` Johannes Schindelin
2016-05-04 12:00             ` Pranit Bauva
2016-05-04 12:21             ` Christian Couder
2016-05-04 19:10             ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160524072124.2945-4-pranit.bauva@gmail.com \
    --to=pranit.bauva@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=larsxschneider@gmail.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.