From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH 05/12] rerere.c: use symbolic constants to keep track of parsing states
Date: Fri, 29 Aug 2008 17:42:36 -0700 [thread overview]
Message-ID: <1220056963-2352-6-git-send-email-gitster@pobox.com> (raw)
In-Reply-To: <1220056963-2352-5-git-send-email-gitster@pobox.com>
These hardcoded integers make the code harder to follow than necessary;
replace them with enums to make it easier to read, before adding support
for optionally parsing "diff3 -m" style conflict markers.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
rerere.c | 23 +++++++++++++----------
1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/rerere.c b/rerere.c
index 323e493..bf74b26 100644
--- a/rerere.c
+++ b/rerere.c
@@ -75,7 +75,10 @@ static int handle_file(const char *path,
{
SHA_CTX ctx;
char buf[1024];
- int hunk = 0, hunk_no = 0;
+ int hunk_no = 0;
+ enum {
+ RR_CONTEXT = 0, RR_SIDE_1, RR_SIDE_2,
+ } hunk = RR_CONTEXT;
struct strbuf one, two;
FILE *f = fopen(path, "r");
FILE *out = NULL;
@@ -98,20 +101,20 @@ static int handle_file(const char *path,
strbuf_init(&two, 0);
while (fgets(buf, sizeof(buf), f)) {
if (!prefixcmp(buf, "<<<<<<< ")) {
- if (hunk)
+ if (hunk != RR_CONTEXT)
goto bad;
- hunk = 1;
+ hunk = RR_SIDE_1;
} else if (!prefixcmp(buf, "=======") && isspace(buf[7])) {
- if (hunk != 1)
+ if (hunk != RR_SIDE_1)
goto bad;
- hunk = 2;
+ hunk = RR_SIDE_2;
} else if (!prefixcmp(buf, ">>>>>>> ")) {
- if (hunk != 2)
+ if (hunk != RR_SIDE_2)
goto bad;
if (strbuf_cmp(&one, &two) > 0)
strbuf_swap(&one, &two);
hunk_no++;
- hunk = 0;
+ hunk = RR_CONTEXT;
if (out) {
fputs("<<<<<<<\n", out);
fwrite(one.buf, one.len, 1, out);
@@ -127,9 +130,9 @@ static int handle_file(const char *path,
}
strbuf_reset(&one);
strbuf_reset(&two);
- } else if (hunk == 1)
+ } else if (hunk == RR_SIDE_1)
strbuf_addstr(&one, buf);
- else if (hunk == 2)
+ else if (hunk == RR_SIDE_2)
strbuf_addstr(&two, buf);
else if (out)
fputs(buf, out);
@@ -146,7 +149,7 @@ static int handle_file(const char *path,
fclose(out);
if (sha1)
SHA1_Final(sha1, &ctx);
- if (hunk) {
+ if (hunk != RR_CONTEXT) {
if (output)
unlink(output);
return error("Could not parse conflict hunks in %s", path);
--
1.6.0.1.149.ga4c44
next prev parent reply other threads:[~2008-08-30 0:44 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-30 0:42 [PATCH 00/12] Towards a better merge resolution support Junio C Hamano
2008-08-30 0:42 ` [PATCH 01/12] xdl_fill_merge_buffer(): separate out a too deeply nested function Junio C Hamano
2008-08-30 0:42 ` [PATCH 02/12] xdiff-merge: optionally show conflicts in "diff3 -m" style Junio C Hamano
2008-08-30 0:42 ` [PATCH 03/12] xmerge.c: minimum readability fixups Junio C Hamano
2008-08-30 0:42 ` [PATCH 04/12] xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less Junio C Hamano
2008-08-30 0:42 ` Junio C Hamano [this message]
2008-08-30 0:42 ` [PATCH 06/12] rerere: understand "diff3 -m" style conflicts with the original Junio C Hamano
2008-08-30 0:42 ` [PATCH 07/12] merge.conflictstyle: choose between "merge" and "diff3 -m" styles Junio C Hamano
2008-08-30 0:42 ` [PATCH 08/12] git-merge-recursive: learn to honor merge.conflictstyle Junio C Hamano
2008-08-30 0:42 ` [PATCH 09/12] checkout: do not check out unmerged higher stages randomly Junio C Hamano
2008-08-30 0:42 ` [PATCH 10/12] checkout: allow ignoring unmerged paths when checking out of the index Junio C Hamano
2008-08-30 0:42 ` [PATCH 11/12] checkout --ours/--theirs Junio C Hamano
2008-08-30 0:42 ` [PATCH 12/12] checkout -m: recreate merge when checking out of unmerged index Junio C Hamano
2008-08-30 9:42 ` [PATCH 07/12] merge.conflictstyle: choose between "merge" and "diff3 -m" styles Johannes Schindelin
2008-08-30 9:34 ` [PATCH 04/12] xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less Johannes Schindelin
2008-08-30 9:31 ` [PATCH 03/12] xmerge.c: minimum readability fixups Johannes Schindelin
2008-08-30 15:42 ` Junio C Hamano
2008-08-30 9:29 ` [PATCH 02/12] xdiff-merge: optionally show conflicts in "diff3 -m" style Johannes Schindelin
2008-08-30 9:14 ` [PATCH 01/12] xdl_fill_merge_buffer(): separate out a too deeply nested function Johannes Schindelin
2008-09-01 9:39 ` [PATCH 00/12] Towards a better merge resolution support Alex Riesen
2008-09-01 9:44 ` Alex Riesen
2008-09-01 9:50 ` Abhijit Menon-Sen
2008-09-01 12:20 ` Thomas Rast
2008-09-01 10:38 ` Junio C Hamano
2008-09-01 11:34 ` Alex Riesen
2008-09-01 17:26 ` 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=1220056963-2352-6-git-send-email-gitster@pobox.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).