threads / patch / 29591

patch, 2 partsctype.c only wants git-compat-util.h

Subject: [PATCH 1/2] ctype.c only wants git-compat-util.h

## tl;dr

6 messages between Feb 10, 2012 and Feb 10, 2012. Diffs are folded; open one to read it.

replies: 5people: 2as markdown or json

Namhyung Kim· Feb 10, 2012, 02:13 UTC · lore

The implementation of sane ctype macros only depends on symbols in git-compat-util.h not cache.h

Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
---
 ctype.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to ctype.c +1 −1
diff --git a/ctype.c b/ctype.c
index b5d856f..af722f9 100644
--- a/ctype.c
+++ b/ctype.c
@@ -3,7 +3,7 @@
  *
  * No surprises, and works with signed and unsigned chars.
  */
-#include "cache.h"
+#include "git-compat-util.h"
 
 enum {
 	S = GIT_SPACE,
-- 
1.7.9
Namhyung Kim· Feb 10, 2012, 02:13 UTC · re: Namhyung Kim · lore

[PATCH 2/2] ctype: implement islower/isupper macro

The git-compat-util.h provides various ctype macros but lacks those two (along with others). Add them.

Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
---
 git-compat-util.h |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)
Show changes to git-compat-util.h +15 −0
diff --git a/git-compat-util.h b/git-compat-util.h
index 8f3972c..d3f8f17 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -463,6 +463,8 @@ static inline int has_extension(const char *filename, const char *ext)
 #undef isdigit
 #undef isalpha
 #undef isalnum
+#undef islower
+#undef isupper
 #undef tolower
 #undef toupper
 extern unsigned char sane_ctype[256];
@@ -478,6 +480,8 @@ extern unsigned char sane_ctype[256];
 #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)
+#define islower(x) sane_iscase(x, 1)
+#define isupper(x) sane_iscase(x, 0)
 #define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL)
 #define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL)
 #define tolower(x) sane_case((unsigned char)(x), 0x20)
@@ -491,6 +495,17 @@ static inline int sane_case(int x, int high)
 	return x;
 }
 
+static inline int sane_iscase(int x, int lower)
+{
+	if (!sane_istest(x, GIT_ALPHA))
+		return 0;
+
+	if (lower)
+		return (x & 0x20) != 0;
+	else
+		return (x & 0x20) == 0;
+}
+
 static inline int strtoul_ui(char const *s, int base, unsigned int *result)
 {
 	unsigned long ul;
-- 
1.7.9
Junio C Hamano· Feb 10, 2012, 02:17 UTC · re: Namhyung Kim · lore

Re: [PATCH 2/2] ctype: implement islower/isupper macro

Namhyung Kim <namhyung.kim@lge.com> writes:
> The git-compat-util.h provides various ctype macros but lacks those two
> (along with others). Add them.

Isn't that because we do not use them ourselves? Uses in compat/ do not count, and judging from the way it is used in compat/fnmatch/fnmatch.c, the implementation of sane_iscase() might be overly protective.

What problem are you trying to solve?
김남형· Feb 10, 2012, 02:32 UTC · re: Junio C Hamano · lore

Re: [PATCH 2/2] ctype: implement islower/isupper macro

Hello,
2012-02-10 11:17 AM, Junio C Hamano wrote:
Show 11 quoted lines
> Namhyung Kim <namhyung.kim@lge.com> writes:
>
>> The git-compat-util.h provides various ctype macros but lacks those two
>> (along with others). Add them.
>
> Isn't that because we do not use them ourselves? Uses in compat/ do not
> count, and judging from the way it is used in compat/fnmatch/fnmatch.c,
> the implementation of sane_iscase() might be overly protective.
>
> What problem are you trying to solve?
>

There's no problem. In fact, these patches come from perf as it uses a copy of git code in this part. So I didn't check it's really needed for git too, but just hoped it'd be helpful someday. If you don't think it's worth applying I'm fine with dropping it.

Thanks, Namhyung

Junio C Hamano· Feb 10, 2012, 04:03 UTC · re: 김남형 · lore

Re: [PATCH 2/2] ctype: implement islower/isupper macro

김남형 <namhyung.kim@lge.com> writes:
Show 14 quoted lines
> 2012-02-10 11:17 AM, Junio C Hamano wrote:
>> Namhyung Kim <namhyung.kim@lge.com> writes:
>>
>>> The git-compat-util.h provides various ctype macros but lacks those two
>>> (along with others). Add them.
>>
>> Isn't that because we do not use them ourselves? Uses in compat/ do not
>> count, and judging from the way it is used in compat/fnmatch/fnmatch.c,
>> the implementation of sane_iscase() might be overly protective.
>>
>> What problem are you trying to solve?
>
> There's no problem. In fact, these patches come from perf as it uses a
> copy of git code in this part.

Kim-ssi, the above is something I would have like to see in your first message.

> If you don't
> think it's worth applying I'm fine with dropping it.
I never said these patches are worthless.

I just was wondering what the motivation behind them were. If you are involved in maintaining Perf, and if it wants to keep its own forked copy as close as ours, that is a good enough justification, as long as the additions we do not use ourselves is still reasonably done.

Namhyung Kim· Feb 10, 2012, 05:04 UTC · re: Junio C Hamano · lore

Re: [PATCH 2/2] ctype: implement islower/isupper macro

2012-02-10 1:03 PM, Junio C Hamano wrote:
Show 30 quoted lines
> 김남형<namhyung.kim@lge.com>  writes:
>
>> 2012-02-10 11:17 AM, Junio C Hamano wrote:
>>> Namhyung Kim<namhyung.kim@lge.com>  writes:
>>>
>>>> The git-compat-util.h provides various ctype macros but lacks those two
>>>> (along with others). Add them.
>>>
>>> Isn't that because we do not use them ourselves? Uses in compat/ do not
>>> count, and judging from the way it is used in compat/fnmatch/fnmatch.c,
>>> the implementation of sane_iscase() might be overly protective.
>>>
>>> What problem are you trying to solve?
>>
>> There's no problem. In fact, these patches come from perf as it uses a
>> copy of git code in this part.
>
> Kim-ssi, the above is something I would have like to see in your first
> message.
>
>> If you don't
>> think it's worth applying I'm fine with dropping it.
>
> I never said these patches are worthless.
>
> I just was wondering what the motivation behind them were.  If you are
> involved in maintaining Perf, and if it wants to keep its own forked copy
> as close as ours, that is a good enough justification, as long as the
> additions we do not use ourselves is still reasonably done.
>

Hamano-san, Thanks for your explanation. I'll try to write a better description for the future.

Thanks, Namhyung

← back to recent threads