When retrieving a file dont open file until we have to to prevent files of size 0...
authorGlenn L McGrath <bug1@ihug.co.nz>
Wed, 18 Dec 2002 02:47:40 +0000 (02:47 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Wed, 18 Dec 2002 02:47:40 +0000 (02:47 -0000)
networking/ftpgetput.c

index a23c64af1427ed9e7d032b0c3d4bcec3c4396517..44e91c37ad8d6d8407aac146802e4d4e1297589a 100644 (file)
@@ -174,16 +174,9 @@ static int ftp_recieve(FILE *control_stream, const char *host, const char *local
                filesize = atol(buf + 4);
        }
 
-       /* only make a local file if we know that one exists on the remote server */
-       if (do_continue) {
-               fd_local = xopen(local_file, O_APPEND | O_WRONLY);
-       } else {
-               fd_local = xopen(local_file, O_CREAT | O_TRUNC | O_WRONLY);
-       }
-
        if (do_continue) {
                struct stat sbuf;
-               if (fstat(fd_local, &sbuf) < 0) {
+               if (lstat(local_file, &sbuf) < 0) {
                        perror_msg_and_die("fstat()");
                }
                if (sbuf.st_size > 0) {
@@ -206,6 +199,13 @@ static int ftp_recieve(FILE *control_stream, const char *host, const char *local
                error_msg_and_die("RETR error: %s", buf + 4);
        }
 
+       /* only make a local file if we know that one exists on the remote server */
+       if (do_continue) {
+               fd_local = xopen(local_file, O_APPEND | O_WRONLY);
+       } else {
+               fd_local = xopen(local_file, O_CREAT | O_TRUNC | O_WRONLY);
+       }
+
        /* Copy the file */
        if (copyfd(fd_data, fd_local, filesize) == -1) {
                exit(EXIT_FAILURE);