* [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
[parent not found: <b6ebd0a50802051045t4949df68u7e405ea618403a31@mail.gmail.com>]
* 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 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).