Ramkumar Ramachandra <artag...@gmail.com> writes:

> To make sure that an invocation like the following doesn't leak color,
>
>   $ git for-each-ref --format='%(subject)%(color:green)'
>
> auto-reset at the end of the format string when the last color token
> seen in the format string isn't a color-reset.
>
> Signed-off-by: Ramkumar Ramachandra <artag...@gmail.com>
> ---
>  builtin/for-each-ref.c  | 29 +++++++++++++++++++++++++----
>  t/t6300-for-each-ref.sh |  2 +-
>  2 files changed, 26 insertions(+), 5 deletions(-)
>
> diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
> index 2ff4e54..04e35ba 100644
> --- a/builtin/for-each-ref.c
> +++ b/builtin/for-each-ref.c
> @@ -23,6 +23,7 @@ typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } 
> cmp_type;
>  struct atom_value {
>       const char *s;
>       unsigned long ul; /* used for sorting when not FIELD_STR */
> +     int color : 2; /* 1 indicates color, 2 indicates color-reset */
>  };

Hmph.  It looks wasteful to have this information in atom_value.

Isn't a new single bit in "struct refinfo" all you need to keep
track of, to see the last %(color:something) you ever saw is for a
color that is not reset?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to