summaryrefslogtreecommitdiff
path: root/apps/netutils/ftpc/ftpc_putfile.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-01 23:09:29 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-06-01 23:09:29 +0000
commit67861ab4bc9411a36319f48f9aaad1a129fcde9b (patch)
tree97e2fb1cca991511cd55c2f7899fc6dcd612a2ab /apps/netutils/ftpc/ftpc_putfile.c
parent17b27f51ace2d8529e6bf5ac5c84d01c08d8dbf5 (diff)
downloadnuttx-67861ab4bc9411a36319f48f9aaad1a129fcde9b.tar.gz
nuttx-67861ab4bc9411a36319f48f9aaad1a129fcde9b.tar.bz2
nuttx-67861ab4bc9411a36319f48f9aaad1a129fcde9b.zip
Add a simple shell and configuration to verify the FTP client library
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3656 42af7a65-404d-4744-a932-0658087f49c3
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;