aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit/src')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
index 598ebaeb97..9eb32cb997 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/RawParseUtils.java
@@ -54,7 +54,11 @@ import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.PersonIdent;
@@ -67,7 +71,12 @@ public final class RawParseUtils {
private static final byte[] footerLineKeyChars;
+ private static final Map<String, Charset> encodingAliases;
+
static {
+ encodingAliases = new HashMap<String, Charset>();
+ encodingAliases.put("latin-1", Charset.forName("ISO-8859-1"));
+
digits10 = new byte['9' + 1];
Arrays.fill(digits10, (byte) -1);
for (char i = '0'; i <= '9'; i++)
@@ -651,7 +660,20 @@ public final class RawParseUtils {
if (enc < 0)
return Constants.CHARSET;
final int lf = nextLF(b, enc);
- return Charset.forName(decode(Constants.CHARSET, b, enc, lf - 1));
+ String decoded = decode(Constants.CHARSET, b, enc, lf - 1);
+ try {
+ return Charset.forName(decoded);
+ } catch (IllegalCharsetNameException badName) {
+ Charset aliased = charsetForAlias(decoded);
+ if (aliased != null)
+ return aliased;
+ throw badName;
+ } catch (UnsupportedCharsetException badName) {
+ Charset aliased = charsetForAlias(decoded);
+ if (aliased != null)
+ return aliased;
+ throw badName;
+ }
}
/**
@@ -1060,6 +1082,10 @@ public final class RawParseUtils {
return pos;
}
+ private static Charset charsetForAlias(String name) {
+ return encodingAliases.get(StringUtils.toLowerCase(name));
+ }
+
private RawParseUtils() {
// Don't create instances of a static only utility.
}