Author: niallp
Date: Wed Sep 29 19:30:10 2010
New Revision: 1002819

URL: http://svn.apache.org/viewvc?rev=1002819&view=rev
Log:
IO-209 FileSystemUtils freeSpaceKb fails to return correct size for a windows 
mount point - reported by Aditya Kishore

Modified:
    commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
    
commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java

Modified: 
commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java?rev=1002819&r1=1002818&r2=1002819&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java 
(original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java 
Wed Sep 29 19:30:10 2010
@@ -291,8 +291,8 @@ public class FileSystemUtils {
      */
     long freeSpaceWindows(String path, long timeout) throws IOException {
         path = FilenameUtils.normalize(path);
-        if (path.length() > 2 && path.charAt(1) == ':') {
-            path = path.substring(0, 2);  // seems to make it work
+        if (path.length() > 0 && path.charAt(0) != '"') {
+            path = "\"" + path + "\"";
         }
         
         // build and run the 'dir' command

Modified: 
commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java?rev=1002819&r1=1002818&r2=1002819&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
 (original)
+++ 
commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
 Wed Sep 29 19:30:10 2010
@@ -203,7 +203,7 @@ public class FileSystemUtilsTestCase ext
             "17/08/2005  21:44    <DIR>          Desktop\n" +
             "               7 File(s)         180260 bytes\n" +
             "              10 Dir(s)     41411551232 bytes free";
-        FileSystemUtils fsu = new MockFileSystemUtils(0, lines, "dir /-c C:");
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines, "dir /-c 
\"C:\"");
         assertEquals(41411551232L, fsu.freeSpaceWindows("C:", -1));
     }
 
@@ -220,10 +220,27 @@ public class FileSystemUtilsTestCase ext
             "17/08/2005  21:44    <DIR>          Desktop\n" +
             "               7 File(s)         180260 bytes\n" +
             "              10 Dir(s)     41411551232 bytes free";
-        FileSystemUtils fsu = new MockFileSystemUtils(0, lines, "dir /-c C:");
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines, "dir /-c 
\"C:\\somedir\"");
         assertEquals(41411551232L, fsu.freeSpaceWindows("C:\\somedir", -1));
     }
 
+    public void testGetFreeSpaceWindows_String_quoted() throws Exception {
+        String lines =
+            " Volume in drive C is HDD\n" +
+            " Volume Serial Number is XXXX-YYYY\n" +
+            "\n" +
+            " Directory of C:\\Documents and Settings\\Xxxx\n" +
+            "\n" +
+            "19/08/2005  22:43    <DIR>          .\n" +
+            "19/08/2005  22:43    <DIR>          ..\n" +
+            "11/08/2005  01:07                81 build.properties\n" +
+            "17/08/2005  21:44    <DIR>          Desktop\n" +
+            "               7 File(s)         180260 bytes\n" +
+            "              10 Dir(s)     41411551232 bytes free";
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines, "dir /-c 
\"C:\\somedir\"");
+        assertEquals(41411551232L, fsu.freeSpaceWindows("\"C:\\somedir\"", 
-1));
+    }
+
     public void testGetFreeSpaceWindows_String_EmptyResponse() throws 
Exception {
         String lines = "";
         FileSystemUtils fsu = new MockFileSystemUtils(0, lines);


Reply via email to