summaryrefslogtreecommitdiff
path: root/apps/netutils/ftpc/ftpc_putfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/netutils/ftpc/ftpc_putfile.c')
-rw-r--r--apps/netutils/ftpc/ftpc_putfile.c53
1 files changed, 29 insertions, 24 deletions
diff --git a/apps/netutils/ftpc/ftpc_putfile.c b/apps/netutils/ftpc/ftpc_putfile.c
index c05112402..6993169d9 100644
--- a/apps/netutils/ftpc/ftpc_putfile.c
+++ b/apps/netutils/ftpc/ftpc_putfile.c
@@ -111,32 +111,37 @@ static int ftpc_sendbinary(FAR struct ftpc_session_s *session,
int ret = OK;
buf = (char *)malloc(CONFIG_FTP_BUFSIZE);
- while (!feof(linstream))
+ for (;;)
{
nread = fread(buf, sizeof(char), CONFIG_FTP_BUFSIZE, linstream);
- if (nread <= 0)
- {
- (void)ftpc_xfrabort(session, linstream);
- ret = ERROR;
- break;
- }
-
- if (ftpc_waitoutput(session) != 0)
- {
- ret = ERROR;
- break;
- }
-
- nwritten = fwrite(buf, sizeof(char), nread, routstream);
- if (nwritten != nread)
- {
- (void)ftpc_xfrabort(session, routstream);
- ret = ERROR;
- break;
- }
-
- session->size += nread;
- }
+ if (nread <= 0)
+ {
+ /* nread == 0 is just EOF */
+
+ if (nread < 0)
+ {
+ (void)ftpc_xfrabort(session, linstream);
+ ret = ERROR;
+ }
+ break;
+ }
+
+ if (ftpc_waitoutput(session) != 0)
+ {
+ ret = ERROR;
+ break;
+ }
+
+ nwritten = fwrite(buf, sizeof(char), nread, routstream);
+ if (nwritten != nread)
+ {
+ (void)ftpc_xfrabort(session, routstream);
+ ret = ERROR;
+ break;
+ }
+
+ session->size += nread;
+ }
free(buf);
return ret;