Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Oct 2010 21:31:29 -0700
From:      Tim Kientzle <kientzle@freebsd.org>
To:        Mykola Dzham <i@levsha.me>
Cc:        freebsd-current@freebsd.org
Subject:   Re: bin/tar incorrectly parse '[^...]' patterns in --exclude
Message-ID:  <18B9EF7D-BFBD-41D7-9BC8-46B52DF9D83C@freebsd.org>
In-Reply-To: <20101005082723.GA2540@laptop.levsha.me>
References:  <20101005082723.GA2540@laptop.levsha.me>

next in thread | previous in thread | raw e-mail | index | archive | help

On Oct 5, 2010, at 1:27 AM, Mykola Dzham wrote:

> Hi!
> bsd tar parse only '[!...]' as negate pattern, but gnu tar and bsd tar
> on 8-STABLE parse '[^...]' too:
> 
> Fix:
> 
> Index: usr.bin/tar/pathmatch.c
> ===================================================================
> --- usr.bin/tar/pathmatch.c	(revision 212602)
> +++ usr.bin/tar/pathmatch.c	(working copy)
> @@ -35,7 +35,7 @@
> 
> /*
>  * Check whether a character 'c' is matched by a list specification [...]:
> - *    * Leading '!' negates the class.
> + *    * Leading '!' or '^' negates the class.
>  *    * <char>-<char> is a range of characters
>  *    * \<char> removes any special meaning for <char>
>  *
> @@ -60,7 +60,7 @@
> 	(void)flags; /* UNUSED */
> 
> 	/* If this is a negated class, return success for nomatch. */
> -	if (*p == '!' && p < end) {
> +	if ((*p == '!' || *p == '^') && p < end) {
> 		match = 0;
> 		nomatch = 1;
> 		++p;

Thanks!

Committed at r213469.

Tim




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18B9EF7D-BFBD-41D7-9BC8-46B52DF9D83C>