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

6 messages from 2012-02-10 to 2012-02-10. Participants: Namhyung Kim, Junio C Hamano, 김남형.
Thread: https://gitlist.dev/t/29591

## Namhyung Kim, 2012-02-10 02:13

Subject: [PATCH 1/2] ctype.c only wants git-compat-util.h
Message-ID: <1328840011-19028-1-git-send-email-namhyung.kim@lge.com>
URL: https://gitlist.dev/e/1328840011-19028-1-git-send-email-namhyung.kim%40lge.com

```
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(-)

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, 2012-02-10 02:13

Subject: [PATCH 2/2] ctype: implement islower/isupper macro
Message-ID: <1328840011-19028-2-git-send-email-namhyung.kim@lge.com>
URL: https://gitlist.dev/e/1328840011-19028-2-git-send-email-namhyung.kim%40lge.com
In-Reply-To: <1328840011-19028-1-git-send-email-namhyung.kim@lge.com>

```
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(-)

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, 2012-02-10 02:17

Subject: Re: [PATCH 2/2] ctype: implement islower/isupper macro
Message-ID: <7vwr7vsa8j.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vwr7vsa8j.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1328840011-19028-2-git-send-email-namhyung.kim@lge.com>

```
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?

```

## 김남형, 2012-02-10 02:32

Subject: Re: [PATCH 2/2] ctype: implement islower/isupper macro
Message-ID: <4F3481CD.5010303@lge.com>
URL: https://gitlist.dev/e/4F3481CD.5010303%40lge.com
In-Reply-To: <7vwr7vsa8j.fsf@alter.siamese.dyndns.org>

```
Hello,

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. 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, 2012-02-10 04:03

Subject: Re: [PATCH 2/2] ctype: implement islower/isupper macro
Message-ID: <7vliobs5bh.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vliobs5bh.fsf%40alter.siamese.dyndns.org
In-Reply-To: <4F3481CD.5010303@lge.com>

```
김남형 <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.

```

## Namhyung Kim, 2012-02-10 05:04

Subject: Re: [PATCH 2/2] ctype: implement islower/isupper macro
Message-ID: <4F34A575.3000700@lge.com>
URL: https://gitlist.dev/e/4F34A575.3000700%40lge.com
In-Reply-To: <7vliobs5bh.fsf@alter.siamese.dyndns.org>

```
2012-02-10 1:03 PM, Junio C Hamano wrote:
> 김남형<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

```
