Re: [JGIT PATCH 10/12] Match config subsection names using case sensitive search

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch is incomplete. The method getRawEntry(...) and
setStringList(...) should be fixed as part of this patch too. There is
subsection is converted to lowercase. I was planning to submit it as
separate patch.

Also I'm somewhat bothered by usage of toLowerCase() without locale
specified and equalsIgnoreCase(). When turkish locale is default one
there could be surprising results with the letter "I".  The program:

import java.util.Locale;
public class Test {
	public static void main(String[] args) {
		Locale tr_TR = new Locale("tr", "TR");
		System.out.printf("i = U+%04x LC(I, tr_TR) = U+%04x\n", (int)'i',
(int)"I".toLowerCase(tr_TR).charAt(0));
		System.out.printf("I = U+%04x UC(i, tr_TR) = U+%04x\n", (int)'I',
(int)"i".toUpperCase(tr_TR).charAt(0));
	}
}

Gives the following output:

i = U+0069 LC(I, tr_TR) = U+0131
I = U+0049 UC(i, tr_TR) = U+0130

So I suggest to explicitly use Locale.US for all toLowerCase()
invocation in Config class just in case and to replace
equalsIgnoreCase() with something else. But this possibly should be
some other patch series. I do not know what C git doing in case
turkish locale and whether it is a bug or "feature".

Regards,
Constantine

On Wed, Jul 22, 2009 at 12:19 AM, Shawn O. Pearce<spearce@xxxxxxxxxxx> wrote:
> The subsection name is case sensitive, and should be matched as such.
>
> Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
> ---
>  .../src/org/spearce/jgit/lib/Config.java           |   19 ++++++++++++++-----
>  1 files changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Config.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Config.java
> index e379c37..974ffea 100644
> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/Config.java
> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Config.java
> @@ -4,6 +4,7 @@
>  * Copyright (C) 2008, Shawn O. Pearce <spearce@xxxxxxxxxxx>
>  * Copyright (C) 2008, Thad Hughes <thadh@xxxxxxxxxxxxxxxxxxxx>
>  * Copyright (C) 2009, JetBrains s.r.o.
> + * Copyright (C) 2009, Google, Inc.
>  *
>  * All rights reserved.
>  *
> @@ -1024,17 +1025,25 @@ private static String readValue(final BufferedReader r, boolean quote,
>
>                boolean match(final String aSection, final String aSubsection,
>                                final String aKey) {
> -                       return eq(section, aSection) && eq(subsection, aSubsection)
> -                                       && eq(name, aKey);
> +                       return eqIgnoreCase(section, aSection)
> +                                       && eqSameCase(subsection, aSubsection)
> +                                       && eqIgnoreCase(name, aKey);
>                }
>
> -               private static boolean eq(final String a, final String b) {
> +               private static boolean eqIgnoreCase(final String a, final String b) {
>                        if (a == null && b == null)
>                                return true;
>                        if (a == null || b == null)
>                                return false;
>                        return a.equalsIgnoreCase(b);
>                }
> -       }
>
> -}
> \ No newline at end of file
> +               private static boolean eqSameCase(final String a, final String b) {
> +                       if (a == null && b == null)
> +                               return true;
> +                       if (a == null || b == null)
> +                               return false;
> +                       return a.equals(b);
> +               }
> +       }
> +}
> --
> 1.6.4.rc1.186.g60aa0c
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]