You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/07/17 21:48:53 UTC
svn commit: r422821 -
/incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java
Author: geirm
Date: Mon Jul 17 12:48:53 2006
New Revision: 422821
URL: http://svn.apache.org/viewvc?rev=422821&view=rev
Log:
cheap fix to solve the problem of there not being a
file separator on temp or user home
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java?rev=422821&r1=422820&r2=422821&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/logging/src/main/java/java/util/logging/FileHandler.java Mon Jul 17 12:48:53 2006
@@ -272,20 +272,34 @@
e1, ErrorManager.OPEN_FAILURE);
}
setOutputStream(output);
-
}
- //apply settings, parse pattern and open files
+ /**
+ * Transform the pattern to the valid file name, replacing
+ * any patterns, and applying generation and uniqueID if
+ * present
+ *
+ * @param gen generation of this file
+ * @param uniqueID distinguishing id of this file
+ * @return transformed filename ready for use
+ */
private String parseFileName(int gen, int uniqueID) {
int cur = 0;
int next = 0;
boolean hasUniqueID = false;
boolean hasGeneration = false;
- //TODO privilege code?
+
+ //TODO privilege code?
+
String tempPath = System.getProperty("java.io.tmpdir"); //$NON-NLS-1$
+ boolean tempPathHasSepEnd = (tempPath == null ? false : tempPath.endsWith(File.separator));
+
String homePath = System.getProperty("user.home"); //$NON-NLS-1$
+ boolean homePathHasSepEnd = (homePath == null ? false : homePath.endsWith(File.separator));
+
StringBuffer sb = new StringBuffer();
pattern = pattern.replace('/', File.separatorChar);
+
char[] value = pattern.toCharArray();
while ((next = pattern.indexOf('%', cur)) >= 0) {
if (++next < pattern.length()) {
@@ -299,10 +313,20 @@
hasUniqueID = true;
break;
case 't':
+ /*
+ * we should probably try to do somethig cute here like
+ * lookahead for adjacent '/'
+ */
sb.append(value, cur, next - cur - 1).append(tempPath);
+ if (!tempPathHasSepEnd) {
+ sb.append(File.separator);
+ }
break;
case 'h':
sb.append(value, cur, next - cur - 1).append(homePath);
+ if (!homePathHasSepEnd){
+ sb.append(File.separator);
+ }
break;
case '%':
sb.append(value, cur, next - cur - 1).append('%');
@@ -312,16 +336,20 @@
}
cur = ++next;
} else {
-
+ // fail silently
}
}
+
sb.append(value, cur, value.length - cur);
+
if (!hasGeneration && count > 1) {
sb.append(".").append(gen); //$NON-NLS-1$
}
+
if (!hasUniqueID && uniqueID > 0) {
sb.append(".").append(uniqueID); //$NON-NLS-1$
}
+
return sb.toString();
}