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


Reply via email to