* [PATCH] Fix bug in parse_color that prevented the user from changing the background colors.
@ 2008-02-05 17:34 Chris Larson
2008-02-05 18:39 ` Timo Hirvonen
0 siblings, 1 reply; 8+ messages in thread
From: Chris Larson @ 2008-02-05 17:34 UTC (permalink / raw)
To: git
The comments in color.c indicate that the syntax for the color options
in the
git config is [fg [bg]] [attr], however the implementation fails if
strtol is
unable to convert the string in its entirety into an integer.
Signed-off-by: Chris Larson <clarson@kergoth.com>
---
color.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/color.c b/color.c
index 7f66c29..62518fa 100644
--- a/color.c
+++ b/color.c
@@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
return i - 1;
}
i = strtol(name, &end, 10);
- if (*name && !*end && i >= -1 && i <= 255)
+ if (*name && i >= -1 && i <= 255)
return i;
return -2;
}
--
1.5.4.29.g43ce-dirty
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Fix bug in parse_color that prevented the user from changing the background colors.
2008-02-05 17:34 [PATCH] Fix bug in parse_color that prevented the user from changing the background colors Chris Larson
@ 2008-02-05 18:39 ` Timo Hirvonen
[not found] ` <b6ebd0a50802051045t4949df68u7e405ea618403a31@mail.gmail.com>
0 siblings, 1 reply; 8+ messages in thread
From: Timo Hirvonen @ 2008-02-05 18:39 UTC (permalink / raw)
To: Chris Larson; +Cc: git
Chris Larson <clarson@kergoth.com> wrote:
> The comments in color.c indicate that the syntax for the color options
> in the
> git config is [fg [bg]] [attr], however the implementation fails if
> strtol is
> unable to convert the string in its entirety into an integer.
>
> Signed-off-by: Chris Larson <clarson@kergoth.com>
> ---
> color.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/color.c b/color.c
> index 7f66c29..62518fa 100644
> --- a/color.c
> +++ b/color.c
> @@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
> return i - 1;
> }
> i = strtol(name, &end, 10);
> - if (*name && !*end && i >= -1 && i <= 255)
> + if (*name && i >= -1 && i <= 255)
> return i;
> return -2;
> }
My bug, sorry. I should have tested more.
I think this new code accepts "7bold" (didn't test). Maybe you should
do something like this instead:
if (*name && (!*end || isspace(*end)) && i >= -1 && i <= 255)
Untested of course. BTW, your patch is whitespace corrupted.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Fix bug in parse_color that prevented the user from changing the background colors.
[not found] ` <b6ebd0a50802051045t4949df68u7e405ea618403a31@mail.gmail.com>
@ 2008-02-05 18:48 ` Chris Larson
2008-02-05 18:58 ` Timo Hirvonen
1 sibling, 0 replies; 8+ messages in thread
From: Chris Larson @ 2008-02-05 18:48 UTC (permalink / raw)
To: git
On Feb 5, 2008 11:39 AM, Timo Hirvonen <tihirvon@gmail.com> wrote:
>
> Chris Larson <clarson@kergoth.com> wrote:
>
> > unable to convert the string in its entirety into an integer.
>
> > - if (*name && !*end && i >= -1 && i <= 255)
> > + if (*name && i >= -1 && i <= 255)
> > return i;
> > return -2;
> > }
>
>
> My bug, sorry. I should have tested more.
>
> I think this new code accepts "7bold" (didn't test). Maybe you should
> do something like this instead:
>
> if (*name && (!*end || isspace(*end)) && i >= -1 && i <= 255)
Indeed, I should have tested more too :) Just starting to mess with
the codebase, surprised at how clean it is (though I probably
shouldn't be).
> Untested of course. BTW, your patch is whitespace corrupted.
>
Unsurprising... sometimes I really hate gmail :| Anyone know if
there's a way to post with gmail without hosing the patch, or should I
switch to a non-web based solution?
Thanks,
--
Chris Larson - clarson at kergoth dot com
Dedicated Engineer - MontaVista - clarson at mvista dot com
Core Developer/Architect - TSLib, BitBake, OpenEmbedded, OpenZaurus
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Fix bug in parse_color that prevented the user from changing the background colors.
[not found] ` <b6ebd0a50802051045t4949df68u7e405ea618403a31@mail.gmail.com>
2008-02-05 18:48 ` Chris Larson
@ 2008-02-05 18:58 ` Timo Hirvonen
2008-02-05 19:18 ` [PATCH] Fix parsing numeric color values Timo Hirvonen
1 sibling, 1 reply; 8+ messages in thread
From: Timo Hirvonen @ 2008-02-05 18:58 UTC (permalink / raw)
To: Chris Larson; +Cc: git
"Chris Larson" <clarson@kergoth.com> wrote:
> On Feb 5, 2008 11:39 AM, Timo Hirvonen <tihirvon@gmail.com> wrote:
>
> > Chris Larson <clarson@kergoth.com> wrote:
> >
> > unable to convert the string in its entirety into an integer.
> > > - if (*name && !*end && i >= -1 && i <= 255)
> > > + if (*name && i >= -1 && i <= 255)
> > > return i;
> > > return -2;
> > > }
> >
> > My bug, sorry. I should have tested more.
> >
> > I think this new code accepts "7bold" (didn't test). Maybe you should
> > do something like this instead:
> >
> > if (*name && (!*end || isspace(*end)) && i >= -1 && i <= 255)
>
>
> Indeed, I should have tested more too :) Just starting to mess with the
> codebase, surprised at how clean it is (though I probably shouldn't be).
OK, did some testing.
The old code accepted attribute before color (bold red). With your patch
that "bold" is treaded as fg color -1 and red as bg color, so you need
that (!*end || isspace(*end)) test.
> > Untested of course. BTW, your patch is whitespace corrupted.
> >
>
> Unsurprising... sometimes I really hate gmail :| Anyone know if there's a
> way to post with gmail without hosing the patch, or should I switch to a
> non-web based solution?
I don't know. Maybe attachment is the only way.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] Fix parsing numeric color values
2008-02-05 18:58 ` Timo Hirvonen
@ 2008-02-05 19:18 ` Timo Hirvonen
2008-02-06 9:59 ` Junio C Hamano
0 siblings, 1 reply; 8+ messages in thread
From: Timo Hirvonen @ 2008-02-05 19:18 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Chris Larson, git
Fix bug reported by Chris Larson <clarson@kergoth.com>. Numeric color
only worked if it was at end of line.
---
color.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/color.c b/color.c
index 7f66c29..3c999c3 100644
--- a/color.c
+++ b/color.c
@@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
return i - 1;
}
i = strtol(name, &end, 10);
- if (*name && !*end && i >= -1 && i <= 255)
+ if (*name && (!*end || isspace(*end)) && i >= -1 && i <= 255)
return i;
return -2;
}
--
1.5.4.1134.ge34cf-dirty
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Fix parsing numeric color values
2008-02-05 19:18 ` [PATCH] Fix parsing numeric color values Timo Hirvonen
@ 2008-02-06 9:59 ` Junio C Hamano
2008-02-06 12:16 ` [PATCH v2] " Timo Hirvonen
2008-02-06 12:16 ` [PATCH] Add tests for diff/status color parser Timo Hirvonen
0 siblings, 2 replies; 8+ messages in thread
From: Junio C Hamano @ 2008-02-06 9:59 UTC (permalink / raw)
To: Timo Hirvonen; +Cc: Chris Larson, git
Timo Hirvonen <tihirvon@gmail.com> writes:
> Fix bug reported by Chris Larson <clarson@kergoth.com>. Numeric color
> only worked if it was at end of line.
Signoff?
It is much easier to read if you said that backwards:
Numeric color only worked if it was at end of line.
Noticed by Chris Larson <clarson@kergoth.com>.
> @@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
> return i - 1;
> }
> i = strtol(name, &end, 10);
> - if (*name && !*end && i >= -1 && i <= 255)
> + if (*name && (!*end || isspace(*end)) && i >= -1 && i <= 255)
Hmph. Is it the same as (end-name) == len?
Please add a test so that your fix won't be broken by others who
might later touch this code.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] Fix parsing numeric color values
2008-02-06 9:59 ` Junio C Hamano
@ 2008-02-06 12:16 ` Timo Hirvonen
2008-02-06 12:16 ` [PATCH] Add tests for diff/status color parser Timo Hirvonen
1 sibling, 0 replies; 8+ messages in thread
From: Timo Hirvonen @ 2008-02-06 12:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Numeric color only worked if it was at end of line.
Noticed by Chris Larson <clarson@kergoth.com>.
Signed-off-by: Timo Hirvonen <tihirvon@gmail.com>
---
color.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/color.c b/color.c
index 7f66c29..cb70340 100644
--- a/color.c
+++ b/color.c
@@ -17,7 +17,7 @@ static int parse_color(const char *name, int len)
return i - 1;
}
i = strtol(name, &end, 10);
- if (*name && !*end && i >= -1 && i <= 255)
+ if (end - name == len && i >= -1 && i <= 255)
return i;
return -2;
}
--
1.5.4.1135.gae084
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] Add tests for diff/status color parser
2008-02-06 9:59 ` Junio C Hamano
2008-02-06 12:16 ` [PATCH v2] " Timo Hirvonen
@ 2008-02-06 12:16 ` Timo Hirvonen
1 sibling, 0 replies; 8+ messages in thread
From: Timo Hirvonen @ 2008-02-06 12:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Signed-off-by: Timo Hirvonen <tihirvon@gmail.com>
---
I don't know if t4026-color.sh is good name for this. Feel free to change.
t/t4026-color.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 69 insertions(+), 0 deletions(-)
create mode 100755 t/t4026-color.sh
diff --git a/t/t4026-color.sh b/t/t4026-color.sh
new file mode 100755
index 0000000..b61e516
--- /dev/null
+++ b/t/t4026-color.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# Copyright (c) 2008 Timo Hirvonen
+#
+
+test_description='Test diff/status color escape codes'
+. ./test-lib.sh
+
+color()
+{
+ git config diff.color.new "$1" &&
+ test "`git config --get-color diff.color.new`" = "^[$2"
+}
+
+invalid_color()
+{
+ git config diff.color.new "$1" &&
+ test -z "`git config --get-color diff.color.new 2>/dev/null`"
+}
+
+test_expect_success 'reset' '
+ color "reset" "[m"
+'
+
+test_expect_success 'attribute before color name' '
+ color "bold red" "[1;31m"
+'
+
+test_expect_success 'color name before attribute' '
+ color "red bold" "[1;31m"
+'
+
+test_expect_success 'attr fg bg' '
+ color "ul blue red" "[4;34;41m"
+'
+
+test_expect_success 'fg attr bg' '
+ color "blue ul red" "[4;34;41m"
+'
+
+test_expect_success 'fg bg attr' '
+ color "blue red ul" "[4;34;41m"
+'
+
+test_expect_success '256 colors' '
+ color "254 bold 255" "[1;38;5;254;48;5;255m"
+'
+
+test_expect_success 'color too small' '
+ invalid_color "-2"
+'
+
+test_expect_success 'color too big' '
+ invalid_color "256"
+'
+
+test_expect_success 'extra character after color number' '
+ invalid_color "3X"
+'
+
+test_expect_success 'extra character after color name' '
+ invalid_color "redX"
+'
+
+test_expect_success 'extra character after attribute' '
+ invalid_color "dimX"
+'
+
+test_done
--
1.5.4.1135.gae084
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-02-06 12:17 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-05 17:34 [PATCH] Fix bug in parse_color that prevented the user from changing the background colors Chris Larson
2008-02-05 18:39 ` Timo Hirvonen
[not found] ` <b6ebd0a50802051045t4949df68u7e405ea618403a31@mail.gmail.com>
2008-02-05 18:48 ` Chris Larson
2008-02-05 18:58 ` Timo Hirvonen
2008-02-05 19:18 ` [PATCH] Fix parsing numeric color values Timo Hirvonen
2008-02-06 9:59 ` Junio C Hamano
2008-02-06 12:16 ` [PATCH v2] " Timo Hirvonen
2008-02-06 12:16 ` [PATCH] Add tests for diff/status color parser Timo Hirvonen
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.