summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Miller <marco.miller@ericsson.com>2016-05-09 12:36:00 -0400
committerMatthias Sohn <matthias.sohn@sap.com>2016-05-12 00:14:17 +0200
commite5a9915a921155ba2f2f7babe5d4aa1abad0000c (patch)
tree7ca98416d106d3c0830386958804a0f680b5a0d3
parent3bc46dfed5101e18a96234638f9ff296407be1b7 (diff)
downloadjgit-e5a9915a921155ba2f2f7babe5d4aa1abad0000c.tar.gz
jgit-e5a9915a921155ba2f2f7babe5d4aa1abad0000c.zip
Remove UTF-8 checking duplication in Config lib subclasses
Change-Id: Ib9f0ae8207000a36c5bf1a92fcc2c32efc4c0984 Signed-off-by: Marco Miller <marco.miller@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java13
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java3
3 files changed, 15 insertions, 4 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java
index 7d52991df0..8958ce7e85 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java
@@ -80,8 +80,7 @@ public class BlobBasedConfig extends Config {
throws ConfigInvalidException {
super(base);
final String decoded;
- if (blob.length >= 3 && blob[0] == (byte) 0xEF
- && blob[1] == (byte) 0xBB && blob[2] == (byte) 0xBF) {
+ if (isUtf8(blob)) {
decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET,
blob, 3, blob.length);
} else {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
index 088dcdfd04..567e31642d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
@@ -1108,6 +1108,19 @@ public class Config {
state.set(newState());
}
+ /**
+ * Check if bytes should be treated as UTF-8 or not.
+ *
+ * @param bytes
+ * the bytes to check encoding for.
+ * @return true if bytes should be treated as UTF-8, false otherwise.
+ * @since 4.4
+ */
+ protected boolean isUtf8(final byte[] bytes) {
+ return bytes.length >= 3 && bytes[0] == (byte) 0xEF
+ && bytes[1] == (byte) 0xBB && bytes[2] == (byte) 0xBF;
+ }
+
private static String readSectionName(final StringReader in)
throws ConfigInvalidException {
final StringBuilder name = new StringBuilder();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
index 702fd70765..4b4822c763 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
@@ -147,8 +147,7 @@ public class FileBasedConfig extends StoredConfig {
snapshot = newSnapshot;
} else {
final String decoded;
- if (in.length >= 3 && in[0] == (byte) 0xEF
- && in[1] == (byte) 0xBB && in[2] == (byte) 0xBF) {
+ if (isUtf8(in)) {
decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET,
in, 3, in.length);
utf8Bom = true;