summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-02-07 00:29:06 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-02-07 00:29:06 +0000
commit1b8b39d71738f4b2586bdc03ba69472fcebfc86c (patch)
tree8e7211f824fba909e19dc46f1c40f8ae238ab212
parent1428af3503e632aba11c667170e7a94916683335 (diff)
downloadnuttx-1b8b39d71738f4b2586bdc03ba69472fcebfc86c.tar.gz
nuttx-1b8b39d71738f4b2586bdc03ba69472fcebfc86c.tar.bz2
nuttx-1b8b39d71738f4b2586bdc03ba69472fcebfc86c.zip
Fix a bug in the FAT statfs() implementation
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4375 42af7a65-404d-4744-a932-0658087f49c3
-rwxr-xr-xapps/netutils/ftpd/ftpd.c2
-rwxr-xr-xapps/netutils/ftpd/ftpd.h22
-rw-r--r--nuttx/ChangeLog3
-rw-r--r--nuttx/fs/fat/fs_fat32.c18
4 files changed, 22 insertions, 23 deletions
diff --git a/apps/netutils/ftpd/ftpd.c b/apps/netutils/ftpd/ftpd.c
index 36d385e03..af11b3960 100755
--- a/apps/netutils/ftpd/ftpd.c
+++ b/apps/netutils/ftpd/ftpd.c
@@ -2356,7 +2356,7 @@ static int ftpd_command_user(FAR struct ftpd_session_s *session)
{
int ret;
- /* Clear session status (USER, REST, RNFR) */
+ /* Clear session status */
session->flags = 0;
session->restartpos = 0;
diff --git a/apps/netutils/ftpd/ftpd.h b/apps/netutils/ftpd/ftpd.h
index 4397e96e3..6c10d35ad 100755
--- a/apps/netutils/ftpd/ftpd.h
+++ b/apps/netutils/ftpd/ftpd.h
@@ -50,23 +50,19 @@
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
-/* Networking definitions ***************************************************/
-
-#define FTPD_PROTOCOL_TCP (6) /* TCP protocol number */
-
/* FPTD Definitions *********************************************************/
-#define FTPD_SESSIONFLAG_USER (1 << 0)
-#define FTPD_SESSIONFLAG_RESTARTPOS (1 << 1)
-#define FTPD_SESSIONFLAG_RENAMEFROM (1 << 2)
+#define FTPD_SESSIONFLAG_USER (1 << 0) /* Session has a user */
+#define FTPD_SESSIONFLAG_RESTARTPOS (1 << 1) /* Session has a restart position */
+#define FTPD_SESSIONFLAG_RENAMEFROM (1 << 2) /* Session has a rename from string */
-#define FTPD_LISTOPTION_A (1 << 0)
-#define FTPD_LISTOPTION_L (1 << 1)
-#define FTPD_LISTOPTION_F (1 << 2)
-#define FTPD_LISTOPTION_R (1 << 3)
-#define FTPD_LISTOPTION_UNKNOWN (1 << 7)
+#define FTPD_LISTOPTION_A (1 << 0) /* List option 'A' */
+#define FTPD_LISTOPTION_L (1 << 1) /* List option 'L' */
+#define FTPD_LISTOPTION_F (1 << 2) /* List option 'F' */
+#define FTPD_LISTOPTION_R (1 << 3) /* List option 'R' */
+#define FTPD_LISTOPTION_UNKNOWN (1 << 7) /* Unknown list option */
-#define FTPD_CMDFLAG_LOGIN (1 << 0)
+#define FTPD_CMDFLAG_LOGIN (1 << 0) /* Command requires login */
/****************************************************************************
* Public Types
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index f60b7b9b6..444119973 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -2447,3 +2447,6 @@
* lib/net/lib_inetntop.c: Add inet_ntop().
* lib/net/lib_inetpton.c: Add inet_pton().
* include/pthread.h: Correct PTHREAD_MUTEX_INITIALIZER.
+ * fs/fat/fs_fatfs.c: Fix and error in the FAT statfs() implementation that
+ was causing some block counts to be reported incorrectly (reported by
+ david_s5y). \ No newline at end of file
diff --git a/nuttx/fs/fat/fs_fat32.c b/nuttx/fs/fat/fs_fat32.c
index 0ec1d78cf..909d5a2dc 100644
--- a/nuttx/fs/fat/fs_fat32.c
+++ b/nuttx/fs/fat/fs_fat32.c
@@ -1,8 +1,8 @@
/****************************************************************************
* fs/fat/fs_fat32.c
*
- * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ * Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
*
* References:
* Microsoft FAT documentation
@@ -1706,13 +1706,13 @@ static int fat_statfs(struct inode *mountpt, struct statfs *buf)
/* Everything else follows in units of clusters */
- buf->f_blocks = fs->fs_nclusters; /* Total data blocks in the file system */
- buf->f_bfree = fat_nfreeclusters(fs, &buf->f_bfree); /* Free blocks in the file system */
- buf->f_bavail = buf->f_bfree; /* Free blocks avail to non-superuser */
- buf->f_namelen = (8+1+3); /* Maximum length of filenames */
-
- fat_semgive(fs);
- return OK;
+ ret = fat_nfreeclusters(fs, &buf->f_bfree); /* Free blocks in the file system */
+ if (ret >= 0)
+ {
+ buf->f_blocks = fs->fs_nclusters; /* Total data blocks in the file system */
+ buf->f_bavail = buf->f_bfree; /* Free blocks avail to non-superuser */
+ buf->f_namelen = (8+1+3); /* Maximum length of filenames */
+ }
errout_with_semaphore:
fat_semgive(fs);