|
From: <ka...@us...> - 2011-05-04 23:11:17
|
Revision: 3525
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3525&view=rev
Author: kappa1
Date: 2011-05-04 23:11:11 +0000 (Wed, 04 May 2011)
Log Message:
-----------
AppletLoader: fix String replace bug on file names, full credits to Riven for spotting it and assisting with the fix.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2011-05-04 19:24:57 UTC (rev 3524)
+++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2011-05-04 23:11:11 UTC (rev 3525)
@@ -665,11 +665,11 @@
*/
protected String trimExtensionByCapabilities(String file) {
if (!pack200Supported) {
- file = file.replaceAll(".pack", "");
+ file = replaceLast(file, ".pack", "");
}
if (!lzmaSupported) {
- file = file.replaceAll(".lzma", "");
+ file = replaceLast(file, ".lzma", "");
}
return file;
}
@@ -1027,7 +1027,7 @@
for (int i = 0; i < urlList.length; i++) {
String file = new File(path, getJarName(urlList[i])).toURI().toString();
// fix JVM bug where ! is not escaped
- file = file.replaceAll("!", "%21");
+ file = file.replace("!", "%21");
urls[i] = new URL(file);
}
@@ -1486,37 +1486,37 @@
String filename = getFileName(urlList[i]);
if (filename.endsWith(".pack.lzma")) {
- subtaskMessage = "Extracting: " + filename + " to " + filename.replaceAll(".lzma", "");
+ subtaskMessage = "Extracting: " + filename + " to " + replaceLast(filename, ".lzma", "");
debug_sleep(1000);
- extractLZMA(path + filename, path + filename.replaceAll(".lzma", ""));
+ extractLZMA(path + filename, path + replaceLast(filename, ".lzma", ""));
- subtaskMessage = "Extracting: " + filename.replaceAll(".lzma", "") + " to " + filename.replaceAll(".pack.lzma", "");
+ subtaskMessage = "Extracting: " + replaceLast(filename, ".lzma", "") + " to " + replaceLast(filename, ".pack.lzma", "");
debug_sleep(1000);
- extractPack(path + filename.replaceAll(".lzma", ""), path + filename.replaceAll(".pack.lzma", ""));
+ extractPack(path + replaceLast(filename, ".lzma", ""), path + replaceLast(filename, ".pack.lzma", ""));
}
else if (filename.endsWith(".pack.gz")) {
- subtaskMessage = "Extracting: " + filename + " to " + filename.replaceAll(".gz", "");
+ subtaskMessage = "Extracting: " + filename + " to " + replaceLast(filename, ".gz", "");
debug_sleep(1000);
- extractGZip(path + filename, path + filename.replaceAll(".gz", ""));
+ extractGZip(path + filename, path + replaceLast(filename, ".gz", ""));
- subtaskMessage = "Extracting: " + filename.replaceAll(".gz", "") + " to " + filename.replaceAll(".pack.gz", "");
+ subtaskMessage = "Extracting: " + replaceLast(filename, ".gz", "") + " to " + replaceLast(filename, ".pack.gz", "");
debug_sleep(1000);
- extractPack(path + filename.replaceAll(".gz", ""), path + filename.replaceAll(".pack.gz", ""));
+ extractPack(path + replaceLast(filename, ".gz", ""), path + replaceLast(filename, ".pack.gz", ""));
}
else if (filename.endsWith(".pack")) {
- subtaskMessage = "Extracting: " + filename + " to " + filename.replace(".pack", "");
+ subtaskMessage = "Extracting: " + filename + " to " + replaceLast(filename, ".pack", "");
debug_sleep(1000);
- extractPack(path + filename, path + filename.replace(".pack", ""));
+ extractPack(path + filename, path + replaceLast(filename, ".pack", ""));
}
else if (filename.endsWith(".lzma")) {
- subtaskMessage = "Extracting: " + filename + " to " + filename.replace(".lzma", "");
+ subtaskMessage = "Extracting: " + filename + " to " + replaceLast(filename, ".lzma", "");
debug_sleep(1000);
- extractLZMA(path + filename, path + filename.replace(".lzma", ""));
+ extractLZMA(path + filename, path + replaceLast(filename, ".lzma", ""));
}
else if (filename.endsWith(".gz")) {
- subtaskMessage = "Extracting: " + filename + " to " + filename.replace(".gz", "");
+ subtaskMessage = "Extracting: " + filename + " to " + replaceLast(filename, ".gz", "");
debug_sleep(1000);
- extractGZip(path + filename, path + filename.replace(".gz", ""));
+ extractGZip(path + filename, path + replaceLast(filename, ".gz", ""));
}
}
}
@@ -1814,15 +1814,15 @@
String fileName = url.getFile();
if (fileName.endsWith(".pack.lzma")) {
- fileName = fileName.replaceAll(".pack.lzma", "");
+ fileName = replaceLast(fileName, ".pack.lzma", "");
} else if (fileName.endsWith(".pack.gz")) {
- fileName = fileName.replaceAll(".pack.gz", "");
+ fileName = replaceLast(fileName, ".pack.gz", "");
} else if (fileName.endsWith(".pack")) {
- fileName = fileName.replaceAll(".pack", "");
+ fileName = replaceLast(fileName, ".pack", "");
} else if (fileName.endsWith(".lzma")) {
- fileName = fileName.replaceAll(".lzma", "");
+ fileName = replaceLast(fileName, ".lzma", "");
} else if (fileName.endsWith(".gz")) {
- fileName = fileName.replaceAll(".gz", "");
+ fileName = replaceLast(fileName, ".gz", "");
}
return fileName.substring(fileName.lastIndexOf('/') + 1);
@@ -1882,6 +1882,25 @@
}
/**
+ * Replaces the last occurrence of the specified target substring with
+ * the specified replacement string in a string.
+ *
+ * @param original - String to search
+ * @param target - substring to find
+ * @param replacement - what to replace target substring with
+ * @return - return the modified string, if target substring not found return original string
+ */
+ public String replaceLast(String original, String target, String replacement) {
+ int index = original.lastIndexOf(target);
+
+ if(index == -1) {
+ return original;
+ }
+
+ return original.substring(0, index) + replacement + original.substring(index + target.length());
+ }
+
+ /**
* Retrieves the String value for the parameter
* @param name Name of parameter
* @param defaultValue default value to return if no such parameter
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|