Correctly handle duplicate (except case) reserved file names on windows

This commit is contained in:
Ben Gruver 2012-09-04 21:04:13 -07:00
parent b58433a074
commit 06bc17a75e

View File

@ -58,7 +58,6 @@ public class ClassFileNameHandler {
throw new RuntimeException("Not a valid dalvik class name"); throw new RuntimeException("Not a valid dalvik class name");
} }
String blah;
int packageElementCount = 1; int packageElementCount = 1;
for (int i=1; i<className.length()-1; i++) { for (int i=1; i<className.length()-1; i++) {
if (className.charAt(i) == '/') { if (className.charAt(i) == '/') {
@ -66,6 +65,7 @@ public class ClassFileNameHandler {
} }
} }
String packageElement;
String[] packageElements = new String[packageElementCount]; String[] packageElements = new String[packageElementCount];
int elementIndex = 0; int elementIndex = 0;
int elementStart = 1; int elementStart = 1;
@ -77,7 +77,13 @@ public class ClassFileNameHandler {
throw new RuntimeException("Not a valid dalvik class name"); throw new RuntimeException("Not a valid dalvik class name");
} }
packageElements[elementIndex++] = className.substring(elementStart, i); packageElement = className.substring(elementStart, i);
if (modifyWindowsReservedFilenames && isReservedFileName(packageElement)) {
packageElement += "#";
}
packageElements[elementIndex++] = packageElement;
elementStart = ++i; elementStart = ++i;
} }
} }
@ -89,7 +95,13 @@ public class ClassFileNameHandler {
if (elementStart >= className.length()-1) { if (elementStart >= className.length()-1) {
throw new RuntimeException("Not a valid dalvik class name"); throw new RuntimeException("Not a valid dalvik class name");
} }
packageElements[elementIndex] = className.substring(elementStart, className.length()-1);
packageElement = className.substring(elementStart, className.length()-1);
if (modifyWindowsReservedFilenames && isReservedFileName(packageElement)) {
packageElement += "#";
}
packageElements[elementIndex] = packageElement;
return top.addUniqueChild(packageElements, 0); return top.addUniqueChild(packageElements, 0);
} }
@ -170,15 +182,9 @@ public class ClassFileNameHandler {
if (pathElementsIndex == pathElements.length - 1) { if (pathElementsIndex == pathElements.length - 1) {
elementName = pathElements[pathElementsIndex]; elementName = pathElements[pathElementsIndex];
if (modifyWindowsReservedFilenames && isReservedFileName(elementName)) {
elementName += "#";
}
elementName += fileExtension; elementName += fileExtension;
} else { } else {
elementName = pathElements[pathElementsIndex]; elementName = pathElements[pathElementsIndex];
if (modifyWindowsReservedFilenames && isReservedFileName(elementName)) {
elementName += "#";
}
} }
elementNameLower = elementName.toLowerCase(); elementNameLower = elementName.toLowerCase();