ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Bodewig <bode...@apache.org>
Subject Re: a problem on scptask for huge files bigger than 2GB.
Date Wed, 07 Sep 2005 03:36:05 GMT
On Tue, 6 Sep 2005, Atsuhiko Yamanaka <ymnk@jcraft.com> wrote:

> I'll post a fix here.

Something like the patch below?

Cheers

        Stefan

Index: src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java
===================================================================
--- src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java	(revision
279047)
+++ src/main/org/apache/tools/ant/taskdefs/optional/ssh/AbstractSshMessage.java	(working copy)
@@ -157,7 +157,7 @@
      */
     protected void logStats(long timeStarted,
                              long timeEnded,
-                             int totalLength) {
+                             long totalLength) {
         double duration = (timeEnded - timeStarted) / 1000.0;
         NumberFormat format = NumberFormat.getNumberInstance();
         format.setMaximumFractionDigits(2);
@@ -184,7 +184,7 @@
      * @param percentTransmitted the current percent transmitted
      * @return the percent that the file is of the total
      */
-    protected final int trackProgress(int filesize, int totalLength,
+    protected final int trackProgress(long filesize, long totalLength,
                                       int percentTransmitted) {
 
         int percent = (int) Math.round(Math.floor((totalLength
Index: src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java
===================================================================
--- src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java	(revision 279047)
+++ src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpToMessage.java	(working copy)
@@ -197,7 +197,7 @@
                                    InputStream in,
                                    OutputStream out) throws IOException {
         // send "C0644 filesize filename", where filename should not include '/'
-        int filesize = (int) localFile.length();
+        long filesize = localFile.length();
         String command = "C0644 " + filesize + " ";
         command += localFile.getName();
         command += "\n";
@@ -211,13 +211,13 @@
         FileInputStream fis = new FileInputStream(localFile);
         byte[] buf = new byte[BUFFER_SIZE];
         long startTime = System.currentTimeMillis();
-        int totalLength = 0;
+        long totalLength = 0;
 
         // only track progress for files larger than 100kb in verbose mode
         boolean trackProgress = getVerbose() && filesize > 102400;
         // since filesize keeps on decreasing we have to store the
         // initial filesize
-        int initFilesize = filesize;
+        long initFilesize = filesize;
         int percentTransmitted = 0;
 
         try {
Index: src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java
===================================================================
--- src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java	(revision 279047)
+++ src/main/org/apache/tools/ant/taskdefs/optional/ssh/ScpFromMessage.java	(working copy)
@@ -163,7 +163,7 @@
         int end = serverResponse.indexOf(" ", start + 1);
         start = end + 1;
         end = serverResponse.indexOf(" ", start + 1);
-        int filesize = Integer.parseInt(serverResponse.substring(start, end));
+        long filesize = Long.parseLong(serverResponse.substring(start, end));
         String filename = serverResponse.substring(end + 1);
         log("Receiving: " + filename + " : " + filesize);
         File transferFile = (localFile.isDirectory())
@@ -175,7 +175,7 @@
     }
 
     private void fetchFile(File localFile,
-                            int filesize,
+                            long filesize,
                             OutputStream out,
                             InputStream in) throws IOException {
         byte[] buf = new byte[BUFFER_SIZE];
@@ -184,20 +184,21 @@
         // read a content of lfile
         FileOutputStream fos = new FileOutputStream(localFile);
         int length;
-        int totalLength = 0;
+        long totalLength = 0;
         long startTime = System.currentTimeMillis();
 
         // only track progress for files larger than 100kb in verbose mode
         boolean trackProgress = getVerbose() && filesize > 102400;
         // since filesize keeps on decreasing we have to store the
         // initial filesize
-        int initFilesize = filesize;
+        long initFilesize = filesize;
         int percentTransmitted = 0;
 
         try {
             while (true) {
                 length = in.read(buf, 0,
-                        (buf.length < filesize) ? buf.length : filesize);
+                                 (BUFFER_SIZE < filesize) ? BUFFER_SIZE 
+                                                          : (int) filesize);
                 if (length < 0) {
                     throw new EOFException("Unexpected end of stream.");
                 }

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message