Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / file / GeneralRocketLoader.java
index 775d9eddfa9dc219ce1e3b1a2bbea9ce3398f60f..da6858d89cb912f9e424a172c79ccc6b7cbc71d9 100644 (file)
@@ -12,6 +12,8 @@ import java.util.zip.ZipInputStream;
 import net.sf.openrocket.document.OpenRocketDocument;
 import net.sf.openrocket.file.openrocket.importt.OpenRocketLoader;
 import net.sf.openrocket.file.rocksim.importt.RocksimLoader;
+import net.sf.openrocket.util.ArrayUtils;
+import net.sf.openrocket.util.TextUtil;
 
 
 /**
@@ -26,9 +28,9 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
        private static final int READ_BYTES = 300;
        
        private static final byte[] GZIP_SIGNATURE = { 31, -117 }; // 0x1f, 0x8b
-       private static final byte[] ZIP_SIGNATURE = "PK".getBytes(Charset.forName("US-ASCII"));
-       private static final byte[] OPENROCKET_SIGNATURE = "<openrocket".getBytes(Charset.forName("US-ASCII"));
-       private static final byte[] ROCKSIM_SIGNATURE = "<RockSimDoc".getBytes(Charset.forName("US-ASCII"));
+       private static final byte[] ZIP_SIGNATURE = TextUtil.convertStringToBytes("PK",Charset.forName("US-ASCII"));
+       private static final byte[] OPENROCKET_SIGNATURE = TextUtil.convertStringToBytes("<openrocket",Charset.forName("US-ASCII"));
+       private static final byte[] ROCKSIM_SIGNATURE = TextUtil.convertStringToBytes("<RockSimDoc",Charset.forName("US-ASCII"));
        
        private final OpenRocketLoader openRocketLoader = new OpenRocketLoader();
        
@@ -76,6 +78,9 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
                                        OpenRocketDocument doc = loadFromStream(in, motorFinder);
                                        doc.getDefaultStorageOptions().setCompressionEnabled(true);
                                        return doc;
+                               } else if ( entry.getName().matches(".*\\.[rR][kK][tT]$")) {
+                                       OpenRocketDocument doc = loadFromStream(in, motorFinder);
+                                       return doc;
                                }
                        }
                }
@@ -93,7 +98,7 @@ public class GeneralRocketLoader extends AbstractRocketLoader {
                        }
                }
                
-               byte[] typeIdentifier = Arrays.copyOf(buffer, ROCKSIM_SIGNATURE.length);
+               byte[] typeIdentifier = ArrayUtils.copyOf(buffer, ROCKSIM_SIGNATURE.length);
                if (Arrays.equals(ROCKSIM_SIGNATURE, typeIdentifier)) {
                        return loadUsing(source, rocksimLoader, motorFinder);
                }