You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/26 18:26:06 UTC

[commons-net] 02/02: [NET-707] Process files with spaces in name for OS400 #95.

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-net.git

commit f30259f709d8505b492854e584ee5683b46f0ef4
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Nov 26 13:25:59 2022 -0500

    [NET-707] Process files with spaces in name for OS400 #95.
    
    Based on PR #95 and sebbASF's feedback; might need to be refined later
---
 src/changes/changes.xml                                      |  3 +++
 .../apache/commons/net/ftp/parser/OS400FTPEntryParser.java   |  2 +-
 .../commons/net/ftp/parser/OS400FTPEntryParserTest.java      | 12 +++++++++++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b63ccaf2..e0319c49 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -92,6 +92,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action type="fix" dev="ggregory" due-to="Gary Gregory">
         Remove reflection from SSLSocketUtils.
       </action>
+      <action type="fix"  issue="NET-707" dev="ggregory" due-to="Dmytro Sylaiev, sebbASF, Gary Gregory">
+        Process files with spaces in name for OS400 #95.
+      </action>
       <!-- ADD -->
       <action type="add" dev="ggregory" due-to="Gary Gregory">
         [FTP] Add FTPClient.mdtmInstant(String).
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
index c2e3d639..d50c6da1 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
@@ -238,7 +238,7 @@ public class OS400FTPEntryParser extends ConfigurableFTPFileEntryParserImpl {
             + "(?:(\\d+)\\s+)?" // size, empty for members
             + "(?:(\\S+)\\s+(\\S+)\\s+)?" // date stuff, empty for members
             + "(\\*STMF|\\*DIR|\\*FILE|\\*MEM)\\s+" // *STMF/*DIR/*FILE/*MEM
-            + "(?:(\\S+)\\s*)?"; // file name, missing, when CWD is a *FILE
+            + "((\\S+\\s*)+)?"; // file name, missing, when CWD is a *FILE
 
     /**
      * The default constructor for a OS400FTPEntryParser object.
diff --git a/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java b/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
index 8e082b1c..33dd7805 100644
--- a/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
+++ b/src/test/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParserTest.java
@@ -132,7 +132,7 @@ public class OS400FTPEntryParserTest extends CompositeFTPParseTestFramework {
 
         assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp().getTime()));
     }
-
+    
     /**
      * @see FTPParseTestFramework#testParseFieldsOnFile()
      */
@@ -156,6 +156,16 @@ public class OS400FTPEntryParserTest extends CompositeFTPParseTestFramework {
         assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp().getTime()));
     }
 
+    /**
+     * Test file names with spaces.
+     */
+    public void testParseFileNameWithSpaces() {
+        final FTPFile f = getParser().parseFTPEntry("MYUSER              3 06/12/21 12:00:00 *STMF      file with space.txt");
+        assertNotNull("Could not parse entry.", f);
+        assertTrue("Should have been a file.", f.isFile());
+        assertEquals("file with space.txt", f.getName());
+    }
+
     @Override
     public void testRecentPrecision() {
         testPrecision("----rwxr-x   1 PEP      0           4019 Mar 18 18:58 einladung.zip", CalendarUnit.MINUTE);