diff --git a/filesystem/dfs/filesystems/efsl/src/base/efs.c b/filesystem/dfs/filesystems/efsl/src/base/efs.c index 2ac98abb55851d0cbac579e9a6273fc088d1278a..86627f322b6df0a68ffdb4b743e5d4d57589b42b 100644 --- a/filesystem/dfs/filesystems/efsl/src/base/efs.c +++ b/filesystem/dfs/filesystems/efsl/src/base/efs.c @@ -12,11 +12,14 @@ * 2008-08-16 Yi.Qiu The first version. */ + #include + #include "efs.h" +#include "dfs_cache.h" + #include "ls.h" #include "ui.h" #include "fat.h" -#include #define EFS_MAX 2 @@ -24,7 +27,7 @@ struct dfs_filesystem_operation efs; /** * This function will initialize efsl to DFS interface. - * + * * @return 0 on succesful */ int efsl_init() @@ -65,8 +68,8 @@ int efs_mount(struct dfs_filesystem* fs) efsl_fs* efsfs; int result; - /* allocate an EFS filesystem entry */ - efsfs = (efsl_fs*) rt_malloc (sizeof(efsl_fs)); + /* allocate an EFS filesystem entry */ + efsfs = (efsl_fs*) rt_malloc (sizeof(efsl_fs)); /* init efs filesystem struct */ efsfs->partition.ioman = rt_malloc(sizeof(IOManager)); @@ -74,7 +77,7 @@ int efs_mount(struct dfs_filesystem* fs) part_initPartition(&efsfs->partition); ioman_init(efsfs->partition.ioman); - result = fs_initFs(&efsfs->filesystem ,&efsfs->partition); + result = fs_initFs(&efsfs->filesystem ,&efsfs->partition); /* set to DFS filesystem user data */ fs->data = efsfs; @@ -96,7 +99,7 @@ int efs_unmount(struct dfs_filesystem* fs) if ( efsfs == RT_NULL ) return -DFS_STATUS_EINVAL; fs_flushFs(&efsfs->filesystem); - rt_free(efsfs->partition.ioman); + rt_free(efsfs->partition.ioman); rt_free(efsfs); fs->data = RT_NULL; @@ -202,19 +205,19 @@ int efs_close(struct dfs_fd* file) { int result = 0; - if (!file || !(file->flags & DFS_F_OPEN)) return -DFS_STATUS_EBADF; + if (!file || !(file->flags & DFS_F_OPEN)) return -DFS_STATUS_EBADF; if(!(file->flags & DFS_F_DIRECTORY)) result = file_fclose((File *)file->data); - else - { + else + { dfs_log(DFS_DEBUG_INFO, ("close a directory, %s", file->path)); - } + } dfs_log(DFS_DEBUG_INFO, ("close a file, %s", file->path)); /* free directory or file */ - rt_free(file->data); + rt_free(file->data); file->data = RT_NULL; return result; @@ -242,8 +245,8 @@ int efs_read(struct dfs_fd* file, void* buf, rt_size_t len) File* efsfile = file->data; int result = 0; - /* parameter check */ - RT_ASSERT(efsfile != RT_NULL); + /* parameter check */ + RT_ASSERT(efsfile != RT_NULL); result = file_read(efsfile, len, buf); file->pos = efsfile->FilePtr; @@ -264,8 +267,8 @@ int efs_write(struct dfs_fd* file, const void* buf, rt_size_t len) File* efsfile = file->data; int result = 0; - /* parameter check */ - RT_ASSERT(efsfile != RT_NULL); + /* parameter check */ + RT_ASSERT(efsfile != RT_NULL); result = file_write(efsfile, len, (euint8 *)buf); file->pos = efsfile->FilePtr; @@ -286,9 +289,9 @@ int efs_lseek(struct dfs_fd* file, rt_off_t offset) { int result = 0; DirList* efsdir; - efsl_fs* efsfs = (efsl_fs *)file->fs->data; + efsl_fs* efsfs = (efsl_fs *)file->fs->data; - /* parameter check */ + /* parameter check */ RT_ASSERT(efsfs != RT_NULL); /* seek directory */ @@ -365,7 +368,7 @@ int efs_getdents(struct dfs_fd* file, struct dfs_dirent* dirp, rt_uint32_t count result ++; /* is it enough? */ - if ( result * sizeof(struct dfs_dirent) >= count ) + if ( result * sizeof(struct dfs_dirent) >= count ) break; } @@ -380,13 +383,13 @@ int efs_getdents(struct dfs_fd* file, struct dfs_dirent* dirp, rt_uint32_t count */ int efs_unlink(struct dfs_filesystem* fs, const char* path) { - efsl_fs* efsfs; + efsl_fs* efsfs; - RT_ASSERT(fs != RT_NULL); - efsfs = (efsl_fs *)fs->data; + RT_ASSERT(fs != RT_NULL); + efsfs = (efsl_fs *)fs->data; - RT_ASSERT(path != RT_NULL); - RT_ASSERT(efsfs != RT_NULL); + RT_ASSERT(path != RT_NULL); + RT_ASSERT(efsfs != RT_NULL); return un_link(&efsfs->filesystem, (euint8 *)path); } @@ -403,7 +406,7 @@ int efs_stat(struct dfs_filesystem* fs, const char *path, struct dfs_stat *st) FileLocation loc; efsl_fs* efsfs = (efsl_fs*)(fs->data); - /* parameter check */ + /* parameter check */ RT_ASSERT(efsfs != RT_NULL); /* file does not exist */ @@ -446,7 +449,7 @@ int efs_rename(struct dfs_filesystem* fs, const char* oldpath, const char* newpa eint8 fatfilename[11]; efsfs = (efsl_fs*) fs->data ; - RT_ASSERT(efsfs != RT_NULL); + RT_ASSERT(efsfs != RT_NULL); dir_getFatFileName((eint8 *)newpath, &fatfilename[0]); diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/dir.c b/filesystem/dfs/filesystems/efsl/src/fs/vfat/dir.c index 4cf13ca4a0d86ca484348ead7a4cfaea611dce61..1d6da08d66cdfb25f2aa2f8ec7364e7013594ae2 100644 --- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/dir.c +++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/dir.c @@ -217,13 +217,8 @@ euint32 dir_findinBuf(euint8 *buf, eint8 *fatname, FileLocation *loc, euint8 mo switch(mode){ case DIRFIND_FILE: return(dir_findFileinBuf(buf,fatname,loc)); - break; case DIRFIND_FREE: return(dir_findFreeEntryinBuf(buf,loc)); - break; - default: - return(0); - break; } return(0); } @@ -274,10 +269,9 @@ euint32 dir_findinDir(FileSystem *fs, eint8* fatname,euint32 firstcluster, FileL return(dir_findinRootArea(fs,fatname,loc,mode)); } - while(!fat_LogicToDiscCluster(fs,&Cache,c++)){ - if((cluster=dir_findinCluster(fs,Cache.DiscCluster,fatname,loc,mode))){ - return(cluster); - } + while(!fat_LogicToDiscCluster(fs,&Cache,c++)){ + cluster=dir_findinCluster(fs,Cache.DiscCluster,fatname,loc,mode); + if(cluster) return(cluster); } return(0); } @@ -296,8 +290,9 @@ euint32 dir_findinRootArea(FileSystem *fs,eint8* fatname, FileLocation *loc, eui if((fs->type != FAT12) && (fs->type != FAT16))return(0); for(c=fs->FirstSectorRootDir;c<(fs->FirstSectorRootDir+fs->volumeId.RootEntryCount/32);c++){ - buf = part_getSect(fs->part,c,IOM_MODE_READONLY); - if((fclus=dir_findinBuf(buf,fatname,loc,mode))){ + buf = part_getSect(fs->part,c,IOM_MODE_READONLY); + fclus=dir_findinBuf(buf,fatname,loc,mode); + if(fclus){ if(loc)loc->Sector=c; part_relSect(fs->part,buf); return(fclus); @@ -322,10 +317,13 @@ esint8 dir_getFatFileName(eint8* filename, eint8* fatfilename) next = filename; if(*filename=='/')next++; - - while((next=file_normalToFatName(next,ffnamec))){ + + next=file_normalToFatName(next,ffnamec); + while(next){ memCpy(ffnamec,fatfilename,11); - nn++; + nn++; + + next=file_normalToFatName(next,ffnamec); } if(nn)return(1); return(0); diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c b/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c index b9f856cf108cbe1b3cde56fc45cfd2197067f998..4f9a3f4752e7396a1a90cc763955d20c411283f6 100644 --- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c +++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/fat.c @@ -51,26 +51,21 @@ euint32 fat_getSectorAddressFatEntry(FileSystem *fs,euint32 cluster_addr) res=(cluster_addr*3/1024); if(res>=fs->FatSectorCount){ return(0); - }else{ - return(base+res); - } - break; + } + return(base+res); + case FAT16: res=cluster_addr/256; if(res>=fs->FatSectorCount){ return(0); - }else{ - return(base+res); } - break; + return(base+res); case FAT32: res=cluster_addr/128; if(res>=fs->FatSectorCount){ return(0); - }else{ - return(base+res); - } - break; + } + return(base+res); } return(0); } @@ -241,13 +236,10 @@ euint32 fat_giveEocMarker(FileSystem *fs) { case FAT12: return(0xFFF); - break; case FAT16: return(0xFFFF); - break; case FAT32: return(0x0FFFFFFF); - break; } return(0); } diff --git a/filesystem/dfs/include/dfs_def.h b/filesystem/dfs/include/dfs_def.h index 27b05e20e03ea2f3c7cb2a0c86b94c6bca7467dc..d04cbda5db6ce60161f959aa7453d7e68876cb0e 100644 --- a/filesystem/dfs/include/dfs_def.h +++ b/filesystem/dfs/include/dfs_def.h @@ -30,6 +30,7 @@ #endif /* Device error codes */ +#define DFS_STATUS_OK 0 /* no error */ #define DFS_STATUS_ENOENT 2 /* No such file or directory */ #define DFS_STATUS_EIO 5 /* I/O error */ #define DFS_STATUS_ENXIO 6 /* No such device or address */ diff --git a/filesystem/dfs/src/dfs_posix.c b/filesystem/dfs/src/dfs_posix.c index 6ea66a0e7687d971ed4bf2341c56d9b4441406d7..fb4a0ee2edb0ef93e2aac340119f8690a04bcfbf 100644 --- a/filesystem/dfs/src/dfs_posix.c +++ b/filesystem/dfs/src/dfs_posix.c @@ -513,7 +513,7 @@ int chdir(const char *path) { char* fullpath, full_path[DFS_PATH_MAX + 1]; - if(path == RT_NULL || strlen(path) > DFS_PATH_MAX) + if(path == RT_NULL || rt_strlen(path) > DFS_PATH_MAX) return -1; fullpath = (char*)path; diff --git a/filesystem/dfs/src/dfs_util.c b/filesystem/dfs/src/dfs_util.c index 455c9f1f9d791952c87e5761a3d01d53faa9ee76..af7bab3bf6841264e69ccb23e7aa18278020f811 100644 --- a/filesystem/dfs/src/dfs_util.c +++ b/filesystem/dfs/src/dfs_util.c @@ -262,8 +262,6 @@ char *strrchr(const char *t, int c) if ((*t == ch)) l=t; if ((!*t)) return (char*)l; ++t; } - - return (char*)l; } #endif