Fix bug #4393 smbclient does not store files with zero filesize in tar-archives
authorJeremy Allison <jra@samba.org>
Sat, 17 Nov 2007 01:06:36 +0000 (17:06 -0800)
committerJeremy Allison <jra@samba.org>
Sat, 17 Nov 2007 01:06:36 +0000 (17:06 -0800)
from tometzky@batory.org.pl.
Jeremy.
(This used to be commit f3bd5e828af04f33178a66f9f332199f7d395b7b)

source3/client/clitar.c

index 4ce92c674d05880911aa563e9d6e5e8055b04714..cb7a5deddd59aa56fc93713f2d60b31b319ec8cb 100644 (file)
@@ -608,7 +608,6 @@ static void do_atar(char *rname,char *lname,file_info *finfo1)
        SMB_BIG_UINT nread=0;
        char ftype;
        file_info2 finfo;
-       bool close_done = False;
        bool shallitime=True;
        char data[65520];
        int read_size = 65520;
@@ -694,7 +693,7 @@ static void do_atar(char *rname,char *lname,file_info *finfo1)
                DEBUG(3,("getting file %s of size %.0f bytes as a tar file %s",
                        finfo.name, (double)finfo.size, lname));
       
-               while (nread < finfo.size && !close_done) {
+               do {
              
                        DEBUG(3,("nread=%.0f\n",(double)nread));
              
@@ -733,13 +732,13 @@ static void do_atar(char *rname,char *lname,file_info *finfo1)
                                break;
                        }
              
-                       if (datalen == 0) {
+                       if ( (datalen == 0) && (finfo.size != 0) ) {
                                DEBUG(0,("Error reading file %s. Got 0 bytes\n", rname));
                                break;
                        }
 
                        datalen=0;
-               }
+               } while ( nread < finfo.size );
 
                if (wrote_tar_header) {
                        /* pad tar file with zero's if we couldn't get entire file */