- single KERNEL_VERSION(a,b,c) macro in platform.h
[oweals/busybox.git] / networking / ftpgetput.c
index 1d5b186248867c5b452e72ebf36da6f9e7865c7e..f285e8b31889634c3bfea379a708cee9689cb306 100644 (file)
@@ -122,7 +122,9 @@ static FILE *ftp_login(ftp_host_info_t *server)
        return(control_stream);
 }
 
-#ifdef CONFIG_FTPGET
+#if !ENABLE_FTPGET
+#define ftp_receive 0
+#else
 static int ftp_recieve(ftp_host_info_t *server, FILE *control_stream,
                const char *local_path, char *server_path)
 {
@@ -143,6 +145,9 @@ static int ftp_recieve(ftp_host_info_t *server, FILE *control_stream,
                if (safe_strtoul(buf + 4, &value))
                        bb_error_msg_and_die("SIZE error: %s", buf + 4);
                filesize = value;
+       } else {
+               filesize = -1;
+               do_continue = 0;
        }
 
        if ((local_path[0] == '-') && (local_path[1] == '\0')) {
@@ -185,8 +190,12 @@ static int ftp_recieve(ftp_host_info_t *server, FILE *control_stream,
        }
 
        /* Copy the file */
-       if (bb_copyfd_size(fd_data, fd_local, filesize) == -1) {
-               exit(EXIT_FAILURE);
+       if (filesize != -1) {
+               if (-1 == bb_copyfd_size(fd_data, fd_local, filesize))
+                       exit(EXIT_FAILURE);
+       } else {
+               if (-1 == bb_copyfd_eof(fd_data, fd_local))
+                       exit(EXIT_FAILURE);
        }
 
        /* close it all down */
@@ -200,7 +209,9 @@ static int ftp_recieve(ftp_host_info_t *server, FILE *control_stream,
 }
 #endif
 
-#ifdef CONFIG_FTPPUT
+#if !ENABLE_FTPPUT
+#define ftp_send 0
+#else
 static int ftp_send(ftp_host_info_t *server, FILE *control_stream,
                const char *server_path, char *local_path)
 {
@@ -292,24 +303,12 @@ int ftpgetput_main(int argc, char **argv)
        int (*ftp_action)(ftp_host_info_t *, FILE *, const char *, char *) = NULL;
 
        /* Check to see if the command is ftpget or ftput */
-#ifdef CONFIG_FTPPUT
-# ifdef CONFIG_FTPGET
-       if (bb_applet_name[3] == 'p') {
+       if (ENABLE_FTPPUT && (!ENABLE_FTPGET || bb_applet_name[3] == 'p')) {
                ftp_action = ftp_send;
        }
-# else
-       ftp_action = ftp_send;
-# endif
-#endif
-#ifdef CONFIG_FTPGET
-# ifdef CONFIG_FTPPUT
-       if (bb_applet_name[3] == 'g') {
+       if (ENABLE_FTPGET && (!ENABLE_FTPPUT || bb_applet_name[3] == 'g')) {
                ftp_action = ftp_recieve;
        }
-# else
-       ftp_action = ftp_recieve;
-# endif
-#endif
 
        /* Set default values */
        server = xmalloc(sizeof(ftp_host_info_t));