summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java')
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java
index 134ff30..356a034 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmwareFileFormat.java
@@ -117,12 +117,22 @@ public class VirtualizationConfigurationVmwareFileFormat
public static BufferedReader getVmxReader( byte[] vmxContent, int length ) throws IOException
{
Charset cs = getCharset( vmxContent, length );
+ if ( cs == null )
+ cs = StandardCharsets.UTF_8; // YES BECAUSE THIS IS NOT VMX AND EVERYTHING IS SHIT
return new BufferedReader( new InputStreamReader( new ByteArrayInputStream( vmxContent, 0, length ), cs ) );
}
+ /**
+ * Get charset of config. Returns null if input doesn't look like a vmx file.
+ * @param vmxContent
+ * @param length
+ * @return
+ */
public static Charset getCharset( byte[] vmxContent, int length )
{
String csName = detectCharset( new ByteArrayInputStream( vmxContent, 0, length ) );
+ if ( csName == null )
+ return null;
Charset cs = null;
try {
cs = Charset.forName( csName );
@@ -146,8 +156,9 @@ public class VirtualizationConfigurationVmwareFileFormat
return ret;
}
- public static String detectCharset( InputStream is )
+ private static String detectCharset( InputStream is )
{
+ boolean isVmware = false;
try {
BufferedReader csDetectReader = new BufferedReader( new InputStreamReader( is, StandardCharsets.ISO_8859_1 ) );
String line;
@@ -158,10 +169,15 @@ public class VirtualizationConfigurationVmwareFileFormat
if ( entry.key.equals( ".encoding" ) || entry.key.equals( "encoding" ) ) {
return entry.value;
}
+ if ( entry.key.equals( "virtualHW.version" ) || entry.key.equals( "memsize" ) || entry.key.equals( "displayName") ) {
+ isVmware = true;
+ }
}
} catch ( Exception e ) {
LOGGER.warn( "Could not detect charset, fallback to latin1", e );
}
+ if ( !isVmware )
+ return null;
// Dumb fallback
return "ISO-8859-1";
}