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");