git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 4/8] wildmatch: support "no FNM_PATHNAME" mode
Date: Thu, 27 Dec 2012 22:24:16 -0800	[thread overview]
Message-ID: <7vwqw2k833.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: 1356163028-29967-5-git-send-email-pclouds@gmail.com

Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:

> diff --git a/wildmatch.c b/wildmatch.c
> index a79f97e..4fe1d65 100644
> --- a/wildmatch.c
> +++ b/wildmatch.c
> @@ -77,14 +77,17 @@ static int dowild(const uchar *p, const uchar *text, unsigned int flags)
>  			continue;
>  		case '?':
>  			/* Match anything but '/'. */
> -			if (t_ch == '/')
> +			if ((flags & WM_PATHNAME) && t_ch == '/')
>  				return WM_NOMATCH;
>  			continue;
>  		case '*':
>  			if (*++p == '*') {
>  				const uchar *prev_p = p - 2;
>  				while (*++p == '*') {}
> -				if ((prev_p == text || *prev_p == '/') ||
> +				if (!(flags & WM_PATHNAME))
> +					/* without WM_PATHNAME, '*' == '**' */
> +					special = 1;
> +				else if ((prev_p == text || *prev_p == '/') ||

Not a new issue in this patch, but here, "prev_p" points into the
pattern string, two bytes before p, which is the byte before the
"**" that we are looking at (which might be before the beginning of
the pattern).  "text" is the string we are trying to match that
pattern against.  How can these two pointers be compared to yield a
meaningful value?

>  				    (*p == '\0' || *p == '/' ||
>  				     (p[0] == '\\' && p[1] == '/'))) {

OK.  "**/", "**" (end of pattern), and "**\/" are handled here.  

Do we have to worry about "**[/]" the same way, or a class never
matches the directory separator, even if it is a singleton class
that consists of '/' (which is fine by me)?  If so, is "\/" more or
less like "[/]"?

  reply	other threads:[~2012-12-28  6:24 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-22  7:57 [PATCH 0/8] fnmatch replacement step 1 Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 1/8] compat/fnmatch: respect NO_FNMATCH* even on glibc Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 2/8] wildmatch: rename constants and update prototype Nguyễn Thái Ngọc Duy
2012-12-26 18:44   ` Junio C Hamano
2012-12-22  7:57 ` [PATCH 3/8] wildmatch: make dowild() take arbitrary flags Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 4/8] wildmatch: support "no FNM_PATHNAME" mode Nguyễn Thái Ngọc Duy
2012-12-28  6:24   ` Junio C Hamano [this message]
2012-12-28  7:15     ` Nguyen Thai Ngoc Duy
2012-12-22  7:57 ` [PATCH 5/8] test-wildmatch: add "perf" command to compare wildmatch and fnmatch Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 6/8] Makefile: add USE_WILDMATCH to use wildmatch as fnmatch Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 7/8] wildmatch: make a special case for "*/" with FNM_PATHNAME Nguyễn Thái Ngọc Duy
2012-12-22  7:57 ` [PATCH 8/8] wildmatch: advance faster in <asterisk> + <literal> patterns Nguyễn Thái Ngọc Duy
2012-12-28  6:24   ` Junio C Hamano
2012-12-28  6:56     ` Nguyen Thai Ngoc Duy

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vwqw2k833.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).