Author: gnodet
Date: Wed May 5 19:17:05 2010
New Revision: 941432
URL: http://svn.apache.org/viewvc?rev=941432&view=rev
Log:
[sshd] fix sftp date formatting
Modified:
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/sftp/SftpSubsystem.java
mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
Modified:
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/sftp/SftpSubsystem.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/sftp/SftpSubsystem.java?rev=941432&r1=941431&r2=941432&view=diff
==============================================================================
---
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/sftp/SftpSubsystem.java
(original)
+++
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/sftp/SftpSubsystem.java
Wed May 5 19:17:05 2010
@@ -26,8 +26,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -743,7 +743,9 @@ public class SftpSubsystem implements Co
buffer.putInt(id);
buffer.putInt(1);
String name = file.getPath();
- name = name.replace('\\', '/');
+ if (File.separatorChar != '/') {
+ name = name.replace(File.separatorChar, '/');
+ }
if (!name.startsWith("/")) {
name = "/" + name;
}
@@ -803,7 +805,7 @@ public class SftpSubsystem implements Co
sb.append(" ");
sb.append(lengthString);
sb.append(" ");
- sb.append(new SimpleDateFormat("MMM dd
hh:mm").format(f.lastModified()));
+ sb.append(getUnixDate(f.lastModified()));
sb.append(" ");
sb.append(f.getName());
@@ -904,4 +906,59 @@ public class SftpSubsystem implements Co
}
+ private final static String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May",
+ "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+
+ /**
+ * Get unix style date string.
+ */
+ private final static String getUnixDate(long millis) {
+ if (millis < 0) {
+ return "------------";
+ }
+
+ StringBuffer sb = new StringBuffer(16);
+ Calendar cal = new GregorianCalendar();
+ cal.setTimeInMillis(millis);
+
+ // month
+ sb.append(MONTHS[cal.get(Calendar.MONTH)]);
+ sb.append(' ');
+
+ // day
+ int day = cal.get(Calendar.DATE);
+ if (day < 10) {
+ sb.append(' ');
+ }
+ sb.append(day);
+ sb.append(' ');
+
+ long sixMonth = 15811200000L; // 183L * 24L * 60L * 60L * 1000L;
+ long nowTime = System.currentTimeMillis();
+ if (Math.abs(nowTime - millis) > sixMonth) {
+
+ // year
+ int year = cal.get(Calendar.YEAR);
+ sb.append(' ');
+ sb.append(year);
+ } else {
+
+ // hour
+ int hh = cal.get(Calendar.HOUR_OF_DAY);
+ if (hh < 10) {
+ sb.append('0');
+ }
+ sb.append(hh);
+ sb.append(':');
+
+ // minute
+ int mm = cal.get(Calendar.MINUTE);
+ if (mm < 10) {
+ sb.append('0');
+ }
+ sb.append(mm);
+ }
+ return sb.toString();
+ }
+
}
Modified: mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/SftpTest.java?rev=941432&r1=941431&r2=941432&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/SftpTest.java
(original)
+++ mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/SftpTest.java Wed
May 5 19:17:05 2010
@@ -108,7 +108,7 @@ public class SftpTest {
}
@Test
-// @Ignore
+ @Ignore
public void testExternal() throws Exception {
System.out.println("SFTP subsystem available on port " + port);
Thread.sleep(5 * 60000);