All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Johannes Schindelin" <johannes.schindelin@gmx.de>,
	git@vger.kernel.org, "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 03/15] handle_revision_arg: stop using "dotdot" as a generic pointer
Date: Fri, 19 May 2017 08:50:07 -0400	[thread overview]
Message-ID: <20170519125006.gbvzr2dqrcycmpx7@sigill.intra.peff.net> (raw)
In-Reply-To: <20170519124651.4q7waz75rmzfopgn@sigill.intra.peff.net>

The handle_revision_arg() function has a "dotdot" variable
that it uses to find a ".." or "..." in the argument. If we
don't find one, we look for other marks, like "^!". But we
just keep re-using the "dotdot" variable, which is
confusing.

Let's introduce a separate "mark" variable that can be used
for these other marks. They still reuse the same variable,
but at least the name is no longer actively misleading.

Signed-off-by: Jeff King <peff@peff.net>
---
It may make sense to pull each of these into its own helper. I didn't
really look because they're so small, and because the return semantics
seemed confusing to me. Some of them return, and some of them keep
parsing. Some of them restore the NUL they overwrite, and some do not.

I didn't dig in to see if there are weird corner cases where they
misbehave.

 revision.c | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/revision.c b/revision.c
index b6031fb35..9c683874d 100644
--- a/revision.c
+++ b/revision.c
@@ -1433,6 +1433,7 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi
 {
 	struct object_context oc;
 	char *dotdot;
+	char *mark;
 	struct object *object;
 	unsigned char sha1[20];
 	int local_flags;
@@ -1529,33 +1530,33 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi
 		*dotdot = '.';
 	}
 
-	dotdot = strstr(arg, "^@");
-	if (dotdot && !dotdot[2]) {
-		*dotdot = 0;
+	mark = strstr(arg, "^@");
+	if (mark && !mark[2]) {
+		*mark = 0;
 		if (add_parents_only(revs, arg, flags, 0))
 			return 0;
-		*dotdot = '^';
+		*mark = '^';
 	}
-	dotdot = strstr(arg, "^!");
-	if (dotdot && !dotdot[2]) {
-		*dotdot = 0;
+	mark = strstr(arg, "^!");
+	if (mark && !mark[2]) {
+		*mark = 0;
 		if (!add_parents_only(revs, arg, flags ^ (UNINTERESTING | BOTTOM), 0))
-			*dotdot = '^';
+			*mark = '^';
 	}
-	dotdot = strstr(arg, "^-");
-	if (dotdot) {
+	mark = strstr(arg, "^-");
+	if (mark) {
 		int exclude_parent = 1;
 
-		if (dotdot[2]) {
+		if (mark[2]) {
 			char *end;
-			exclude_parent = strtoul(dotdot + 2, &end, 10);
+			exclude_parent = strtoul(mark + 2, &end, 10);
 			if (*end != '\0' || !exclude_parent)
 				return -1;
 		}
 
-		*dotdot = 0;
+		*mark = 0;
 		if (!add_parents_only(revs, arg, flags ^ (UNINTERESTING | BOTTOM), exclude_parent))
-			*dotdot = '^';
+			*mark = '^';
 	}
 
 	local_flags = 0;
-- 
2.13.0.219.g63f6bc368


  parent reply	other threads:[~2017-05-19 12:50 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15 15:23 [PATCH 0/2] Demonstrate and partially work around a gitattributes problem Johannes Schindelin
2017-05-15 15:23 ` [PATCH 1/2] gitattributes: demonstrate that Git tries to read a bogus file Johannes Schindelin
2017-05-15 15:24 ` [PATCH 2/2] mingw: Suppress warning that <commit>:.gitattributes does not exist Johannes Schindelin
2017-05-16  7:54 ` [PATCH 0/2] Demonstrate and partially work around a gitattributes problem Jeff King
2017-05-16  8:10   ` Jeff King
2017-05-17  1:38     ` Junio C Hamano
2017-05-17  2:05       ` Jeff King
2017-05-18 19:23         ` Johannes Schindelin
2017-05-19  0:00           ` Jeff King
2017-05-19 12:46         ` [PATCH 0/15] retain blob info for git diff HEAD:foo HEAD:bar Jeff King
2017-05-19 12:48           ` [PATCH 01/15] handle_revision_arg: reset "dotdot" consistently Jeff King
2017-05-20 14:56             ` Philip Oakley
2017-05-23 19:51               ` Jeff King
2017-05-23 23:47                 ` Philip Oakley
2017-05-19 12:48           ` [PATCH 02/15] handle_revision_arg: simplify commit reference lookups Jeff King
2017-05-19 12:50           ` Jeff King [this message]
2017-05-24  2:45             ` [PATCH 03/15] handle_revision_arg: stop using "dotdot" as a generic pointer Junio C Hamano
2017-05-24  9:55               ` Jeff King
2017-05-19 12:51           ` [PATCH 04/15] handle_revision_arg: hoist ".." check out of range parsing Jeff King
2017-05-19 12:52           ` [PATCH 05/15] handle_revision_arg: add handle_dotdot() helper Jeff King
2017-05-24  2:30             ` Junio C Hamano
2017-05-19 12:52           ` [PATCH 06/15] sha1_name: consistently refer to object_context as "oc" Jeff King
2017-05-19 12:52           ` [PATCH 07/15] get_sha1_with_context: always initialize oc->symlink_path Jeff King
2017-05-19 12:54           ` [PATCH 08/15] get_sha1_with_context: dynamically allocate oc->path Jeff King
2017-05-19 12:54           ` [PATCH 09/15] t4063: add tests of direct blob diffs Jeff King
2017-05-19 12:55           ` [PATCH 10/15] handle_revision_arg: record modes for "a..b" endpoints Jeff King
2017-05-19 12:55           ` [PATCH 11/15] handle_revision_arg: record paths for pending objects Jeff King
2017-05-19 12:57           ` [PATCH 12/15] diff: pass whole pending entry in blobinfo Jeff King
2017-05-19 12:58           ` [PATCH 13/15] diff: use the word "path" instead of "name" for blobs Jeff King
2017-05-19 12:59           ` [PATCH 14/15] diff: use pending "path" if it is available Jeff King
2017-05-19 12:59           ` [PATCH 15/15] diff: use blob path for blob/file diffs Jeff King
2017-05-24  2:44           ` [PATCH 0/15] retain blob info for git diff HEAD:foo HEAD:bar Junio C Hamano
2017-05-24  9:57             ` Jeff King

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=20170519125006.gbvzr2dqrcycmpx7@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=pclouds@gmail.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.