Fix a bug in the FAT statfs() implementation

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4375 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2012-02-07 00:29:06 +00:00
parent 3d264a6502
commit 1b3d8f3148
4 changed files with 22 additions and 23 deletions

View File

@ -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;

View File

@ -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

View File

@ -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).

View File

@ -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);