From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Michael J Gruber <git@drmicha.warpmail.net>
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH] pathspec: reserve some letters after a colon pathspec
Date: Wed, 23 Mar 2011 22:32:33 +0700 [thread overview]
Message-ID: <1300894353-19386-1-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <bc49592f5e524a0d12aa55eeca1c5ca659b6525f.1298974647.git.git@drmicha.warpmail.net>
Pathspec ':something' means 'something' at top directory. Limit it a
bit so that ':<non-alnum>something' can be reserved for future
extensions. ':\<non-alnum>something' can be used to achieve
':something' before this patch.
All non-alphanumeric chars on the en_US keyboard, except \ and ., are
currently reserved.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
This is the better, non-whitespace-damaged version. While I mark
colon_pathspec_type() static, you can export it to use in git-attr.c
setup.c | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/setup.c b/setup.c
index 3bbb01a..684abb5 100644
--- a/setup.c
+++ b/setup.c
@@ -123,6 +123,27 @@ void verify_non_filename(const char *prefix, const char *arg)
"Use '--' to separate filenames from revisions", arg);
}
+static int colon_pathspec_type(const char **pathspec)
+{
+ const char *reserved = "~`!@#$%^&*()-_=+[{]}|;:'\",<>/?";
+ const char *s = *pathspec;
+ int ret;
+
+ if (*s++ != ':')
+ return -1;
+ if (*s == '\\') {
+ s++;
+ ret = 0;
+ }
+ else if (*s && strchr(reserved, *s))
+ ret = -1;
+ else
+ ret = 0;
+
+ *pathspec = s;
+ return ret;
+}
+
const char **get_pathspec(const char *prefix, const char **pathspec)
{
const char *entry = *pathspec;
@@ -145,8 +166,14 @@ const char **get_pathspec(const char *prefix, const char **pathspec)
prefixlen = prefix ? strlen(prefix) : 0;
while (*src) {
const char *p;
- if ((*src)[0] == ':')
- p = prefix_path(NULL, 0, (*src)+1);
+
+ if ((*src)[0] == ':') {
+ const char **s = src;
+ if (colon_pathspec_type(s) != 0)
+ die("Pathspec syntax ':%c' is not supported. %s"
+ "Quote it for literally match.", (*s)[0], *s);
+ p = prefix_path(NULL, 0, *s);
+ }
else
p = prefix_path(prefix, prefixlen, *src);
*(dst++) = p;
--
1.7.4.74.g639db
next prev parent reply other threads:[~2011-03-23 15:32 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-28 0:17 git-grep to operate across who repository and not just CWD? David Chanters
2011-02-28 9:27 ` Michael J Gruber
2011-02-28 15:27 ` Jay Soffian
2011-02-28 18:32 ` Junio C Hamano
2011-02-28 18:38 ` Junio C Hamano
2011-02-28 22:25 ` Phil Hord
2011-03-01 8:05 ` Michael J Gruber
2011-03-01 8:16 ` Nguyen Thai Ngoc Duy
2011-03-01 8:54 ` Michael J Gruber
2011-03-01 9:32 ` Nguyen Thai Ngoc Duy
2011-03-01 9:44 ` Nguyen Thai Ngoc Duy
2011-03-01 9:53 ` [PATCH/POC 0/2] grep --full-tree Michael J Gruber
2011-03-01 9:53 ` [PATCH/RFC 1/2] grep: --full-tree Michael J Gruber
2011-03-01 9:53 ` [PATCH/RFC 2/2] grep: make --full-tree work with pathspecs Michael J Gruber
2011-03-01 19:20 ` Junio C Hamano
2011-03-01 10:21 ` [PATCH/alternative/raw and rough] setup.c: denote repo wide pathspecs by ':' Michael J Gruber
2011-03-01 11:13 ` Nguyen Thai Ngoc Duy
2011-03-01 11:16 ` Michael J Gruber
2011-03-01 11:50 ` Nguyen Thai Ngoc Duy
2011-03-01 11:57 ` Michael J Gruber
2011-03-01 12:08 ` Nguyen Thai Ngoc Duy
2011-03-01 14:50 ` Junio C Hamano
2011-03-01 15:01 ` Michael J Gruber
2011-03-01 20:00 ` Junio C Hamano
2011-03-02 12:34 ` Sverre Rabbelier
2011-03-02 12:57 ` Nguyen Thai Ngoc Duy
2011-03-02 13:12 ` Michael J Gruber
2011-03-02 16:53 ` Junio C Hamano
2011-03-02 17:31 ` Michael J Gruber
2011-03-03 2:42 ` Miles Bader
2011-03-03 3:52 ` Junio C Hamano
2011-03-03 3:44 ` Phil Hord
2011-03-03 8:20 ` Michael J Gruber
2011-03-01 16:25 ` Phil Hord
2011-03-01 18:31 ` James Pickens
2011-03-02 0:12 ` Nguyen Thai Ngoc Duy
2011-03-03 3:51 ` Phil Hord
2011-03-03 8:21 ` Michael J Gruber
2011-03-01 11:49 ` Michael J Gruber
2011-03-01 13:05 ` Phil Hord
2011-03-23 15:32 ` Nguyễn Thái Ngọc Duy [this message]
2011-03-23 18:04 ` [PATCH] pathspec: reserve some letters after a colon pathspec Junio C Hamano
2011-03-24 7:15 ` Michael J Gruber
2011-03-24 7:49 ` Nguyen Thai Ngoc Duy
2011-03-24 8:12 ` Junio C Hamano
2011-03-24 14:46 ` Junio C Hamano
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1300894353-19386-1-git-send-email-pclouds@gmail.com \
--to=pclouds@gmail.com \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.
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).