Am 15.11.2012 13:19, schrieb Nguyễn Thái Ngọc Duy:
> On Thu, Nov 15, 2012 at 2:30 AM, René Scharfe <rene.scha...@lsrfire.ath.cx>
> > Nevertheless, it's unfortunate that we have an isspace() that *almost* does
> > what the widely known thing of the same name does. I'd shy away from
> > changing git's version directly, because it's used more than a hundred
> > in the code, and estimating the impact of adding \v and \f to it.
> > Perhaps renaming it to isgitspace() is a good first step, followed by
> > adding a "standard" version of isspace() for wildmatch?
> There are just too many call sites of isspace() and there is a risk
> of new call sites coming in independently. So I think keeping isspace()
> as-is and using a different name for the standard version is probably
> a better choice.
After having a closer look, where wildmatch is actually used -- matching
filenames -- and I've not yet seen \v or \f in a filename, it's possibly
unnecessary to do anything about isspace() right now.
(It's probably more an issue that filenames can be localized, and we only
support unlocalized character classes.)
> diff --git a/git-compat-util.h b/git-compat-util.h
> index 02f48f6..d4c3fda 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -486,6 +486,7 @@ extern const unsigned char sane_ctype;
> #define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0)
> #define isascii(x) (((x) & ~0x7f) == 0)
> #define isspace(x) sane_istest(x,GIT_SPACE)
> +#define isspace_posix(x) (((x) >= 9 && (x) <= 13) || (x) == 32)
> #define isdigit(x) sane_istest(x,GIT_DIGIT)
> #define isalpha(x) sane_istest(x,GIT_ALPHA)
> #define isalnum(x) sane_istest(x,GIT_ALPHA | GIT_DIGIT)
> @@ -499,7 +500,8 @@ extern const unsigned char sane_ctype;
> #define isxdigit(x) (hexval_table[x] != -1)
This was from a previous patch, but maybe: "hexval_table[(unsigned char)x]"
> #define isprint(x) (sane_istest(x, GIT_ALPHA | GIT_DIGIT | GIT_SPACE | \
> GIT_PUNCT | GIT_REGEX_SPECIAL | GIT_GLOB_SPECIAL | \
> - GIT_PATHSPEC_MAGIC))
> + GIT_PATHSPEC_MAGIC) && \
> + (x) >= 32)
May I suggest the current is_print() implementation in master:
#define isprint(x) ((x) >= 0x20 && (x) <= 0x7e)
To summarize my opinion:
I no longer see a reason to correct isspace() (unless somebody with an actual
use case complains), and a more POSIXly isprint() is already in master.
=> Nothing to do. :)
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