4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-02-07 19:24:34 +08:00

fix DFS elm struct mismatch issue.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1027 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
bernard.xiong 2010-10-22 07:26:26 +00:00
parent af2019888f
commit bd6d16ecde
3 changed files with 22 additions and 73 deletions

View File

@ -16,85 +16,28 @@
#ifndef __DFS_CONFIG_H__ #ifndef __DFS_CONFIG_H__
#define __DFS_CONFIG_H__ #define __DFS_CONFIG_H__
/*
+------------------------------------------------------------------------------
| Device Manager options
+------------------------------------------------------------------------------
*/
/* Device Options parameters */
#define DEVICES_MAX 8
#define DEVICE_NAME_MAX 8
/*
+------------------------------------------------------------------------------
| Device Filesystem options
+------------------------------------------------------------------------------
*/
/* the max length of filesystem name */
#define DFS_FS_NAME_MAX 4
/* the max type of filesystem */ /* the max type of filesystem */
#define DFS_FILESYSTEM_TYPES_MAX 2 #define DFS_FILESYSTEM_TYPES_MAX 4
/* the max length of path name */ /* the max length of path name */
#define DFS_PATH_MAX 256 #define DFS_PATH_MAX 256
/* the max length of file name */
#define DFS_FILE_MAX 256
/* options for server task */
#define DFS_MBOX_NUMBER 32
#define DFS_SERVER_STACK 1024
#define DFS_SERVER_PRI 110
#define DFS_SERVER_SLICE 20
/*
+------------------------------------------------------------------------------
| FAT filesystem options
+------------------------------------------------------------------------------
*/
/* file name max length */
#define FAT_NAME_MAX 256
/* max number of FAT filesystem */
#define FATFS_MAX 2
/* the size of sector */ /* the size of sector */
#define SECTOR_SIZE 512 #define SECTOR_SIZE 512
/* FAT table sector cache options */ #define DFS_DEBUG_INFO 0x01
#define FAT_CACHE_SIZE 0x10 /* config parameter */ #define DFS_DEBUG_WARNING 0x02
#define FAT_CACHE_MASK (FAT_CACHE_SIZE-1) #define DFS_DEBUG_ERROR 0x04
#define DFS_DEBUG_LEVEL (DFS_DEBUG_INFO | DFS_DEBUG_WARNING | DFS_DEBUG_ERROR)
#define GET16(x) (*(x)) | (*((x)+1) << 8)
#define GET32(x) (*(x)) | (*((x)+1) << 8) | (*((x)+2) << 16) | (*((x)+3) << 24)
#define SET16(x, v) \
do \
{ \
*(x) = (v) & 0x00ff; \
(*((x)+1)) = (v) >> 8; \
} while ( 0 )
#define SET32(x, v) \
do \
{ \
*(x) = (v) & 0x000000ff; \
(*((x)+1)) = ((v) >> 8) & 0x000000ff; \
(*((x)+2)) = ((v) >> 16) & 0x000000ff; \
(*((x)+3)) = ((v) >> 24); \
} while ( 0 )
#define DFS_DEBUG_INFO 0x01
#define DFS_DEBUG_WARNING 0x02
#define DFS_DEBUG_ERROR 0x04
#define DFS_DEBUG_LEVEL (DFS_DEBUG_INFO | DFS_DEBUG_WARNING | DFS_DEBUG_ERROR)
/* #define DFS_DEBUG */ /* #define DFS_DEBUG */
#ifdef DFS_DEBUG #ifdef DFS_DEBUG
#define dfs_log(level, x) do { if (level & DFS_DEBUG_LEVEL) \ #define dfs_log(level, x) do { if (level & DFS_DEBUG_LEVEL) \
{rt_kprintf("DFS %s, %d:", __FILE__, __LINE__); rt_kprintf x; \ {rt_kprintf("DFS %s, %d:", __FUNCTION__, __LINE__); rt_kprintf x; \
rt_kprintf ("\n");}}while (0) rt_kprintf ("\n");}}while (0)
#else #else
#define dfs_log(level, x) #define dfs_log(level, x)
#endif #endif
#endif #endif

View File

@ -1,3 +1,4 @@
#include <rtthread.h>
#include "ffconf.h" #include "ffconf.h"
#include "ff.h" #include "ff.h"

View File

@ -460,16 +460,21 @@ void ls(const char* pathname)
rt_snprintf(fullpath, DFS_PATH_MAX + 1, "%s%c%s", pathname, '/', dirent.d_name); rt_snprintf(fullpath, DFS_PATH_MAX + 1, "%s%c%s", pathname, '/', dirent.d_name);
else else
rt_snprintf(fullpath, DFS_PATH_MAX + 1, "%s%s", pathname, dirent.d_name); rt_snprintf(fullpath, DFS_PATH_MAX + 1, "%s%s", pathname, dirent.d_name);
dfs_file_stat(fullpath, &stat); if (dfs_file_stat(fullpath, &stat) == 0)
if ( stat.st_mode & DFS_S_IFDIR )
{ {
rt_kprintf("%s\t\t<DIR>\n", dirent.d_name); if ( stat.st_mode & DFS_S_IFDIR )
{
rt_kprintf("%s\t\t<DIR>\n", dirent.d_name);
}
else
{
rt_kprintf("%s\t\t%lu\n", dirent.d_name, stat.st_size);
}
} }
else else
{ rt_kprintf("BAD file: %s\n", dirent.d_name);
rt_kprintf("%s\t\t%lu\n", dirent.d_name, stat.st_size);
}
} }
}while(length > 0); }while(length > 0);