From 2080ff72b7857cb8049f693566207dd36856db03 Mon Sep 17 00:00:00 2001 From: danielr Date: Sat, 10 May 2008 22:03:51 +0000 Subject: [PATCH] ftpc fix for npe git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4789 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/net/ftpc.java | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/source/de/anomic/net/ftpc.java b/source/de/anomic/net/ftpc.java index 02021e7ef..e2e85b17d 100644 --- a/source/de/anomic/net/ftpc.java +++ b/source/de/anomic/net/ftpc.java @@ -1112,7 +1112,7 @@ public class ftpc { * 8 1994 etc * * @param line - * @return + * @return null if not parseable */ private entryInfo parseListData(final String line) { final Pattern lsStyle = Pattern @@ -2539,9 +2539,12 @@ public class ftpc { } } - public StringBuilder dirhtml(final String remotePath) { + public StringBuilder dirhtml(String remotePath) { // returns a directory listing using an existing connection try { + if(isFolder(remotePath) && !"/".equals(remotePath.charAt(remotePath.length()-1))) { + remotePath += '/'; + } final List list = list(remotePath, true); if (remotesystem == null) { sys(); @@ -2596,10 +2599,24 @@ public class ftpc { page.append("

\n"); page.append("
\n"); page.append("
\n");
+        int nameStart, nameEnd;
+        entryInfo info;
         for (final String line : list) {
-            final entryInfo info = parseListData(line);
-            page.append(line.substring(0, line.indexOf(info.name)));
-            page.append("" + info.name + "\n");
+            info = parseListData(line);
+            if(info != null) {
+                // with link
+                nameStart = line.indexOf(info.name);
+                page.append(line.substring(0, nameStart));
+                page.append("" + info.name + "");
+                nameEnd = nameStart + info.name.length();
+                if(line.length() > nameEnd) {
+                    page.append(line.substring(nameEnd));
+                }
+            } else {
+                // raw
+                page.append(line);
+            }
+            page.append('\n');
         }
         page.append("  
\n"); page.append("
\n");