diff options
| author | bernard.xiong <[email protected]> | 2009-08-19 13:14:50 +0000 |
|---|---|---|
| committer | bernard.xiong <[email protected]> | 2009-08-19 13:14:50 +0000 |
| commit | e00da562ed8cf940329ca9c6fbb8318164295762 (patch) | |
| tree | ef17b40da4cfdb59039cdc766546becb9e823ac0 /filesystem | |
| parent | 9eed317daf5c7ab54d14539535a75e7652e55b15 (diff) | |
update stm32 radio code; add backspace key support in finsh;
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@22 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'filesystem')
| -rw-r--r-- | filesystem/dfs/filesystems/efsl/src/fs/vfat/file.c | 60 | ||||
| -rw-r--r-- | filesystem/dfs/src/dfs_raw.c | 8 |
2 files changed, 38 insertions, 30 deletions
diff --git a/filesystem/dfs/filesystems/efsl/src/fs/vfat/file.c b/filesystem/dfs/filesystems/efsl/src/fs/vfat/file.c index 436989edc0..4bd0593f53 100644 --- a/filesystem/dfs/filesystems/efsl/src/fs/vfat/file.c +++ b/filesystem/dfs/filesystems/efsl/src/fs/vfat/file.c @@ -61,40 +61,40 @@ euint32 file_fread(File *file,euint32 offset, euint32 size,euint8 *buf) if( (offset+size > file->FileSize) && size_left!=0) size_left=file->FileSize-offset; - while(size_left>0)
+ while(size_left>0) { cclus = coffset/(512*file->fs->volumeId.SectorsPerCluster); csec = (coffset/(512))%file->fs->volumeId.SectorsPerCluster; cbyte = coffset%512; -
- if ((size_left > 512 * file->fs->volumeId.SectorsPerCluster) &&
- (csec == 0) && (cbyte == 0))
- {
- /* read whole cluster */
- btr = 512 * file->fs->volumeId.SectorsPerCluster;
- }
- else if(cbyte!=0 || size_left<512)
- {
+ + if ((size_left > 512 * file->fs->volumeId.SectorsPerCluster) && + (csec == 0) && (cbyte == 0)) + { + /* read whole cluster */ + btr = 512 * file->fs->volumeId.SectorsPerCluster; + } + else if(cbyte!=0 || size_left<512) + { btr = 512-(coffset%512) >= size_left? size_left:512-(coffset%512); - }
- else
- {
+ } + else + { /* whole sector */ btr = 512; } if((fat_LogicToDiscCluster(file->fs,&(file->Cache),cclus))!=0){ return(0); - }
+ } rclus = file->Cache.DiscCluster; rsec = fs_clusterToSector(file->fs,rclus); - if(btr > 512)
+ if(btr > 512) { part_directSectorRead(file->fs->part, rsec + csec, buf + bytes_read, btr / 512); - }
- else
+ } + else { tbuf = part_getSect(file->fs->part,rsec+csec,IOM_MODE_READONLY); memCpy(tbuf+(coffset%512),buf+bytes_read,btr); @@ -194,18 +194,18 @@ euint32 file_fwrite(File* file,euint32 offset,euint32 size,euint8* buf) csec = (coffset/(512))%file->fs->volumeId.SectorsPerCluster; cbyte = coffset%512; - if ((size_left > 512 * file->fs->volumeId.SectorsPerCluster) &&
- (csec == 0) && (cbyte == 0))
- {
- /* write whole cluster */
- btr = 512 * file->fs->volumeId.SectorsPerCluster;
- }
- else if(cbyte!=0 || size_left<512)
+ if ((size_left > 512 * file->fs->volumeId.SectorsPerCluster) && + (csec == 0) && (cbyte == 0)) + { + /* write whole cluster */ + btr = 512 * file->fs->volumeId.SectorsPerCluster; + } + else if(cbyte!=0 || size_left<512) { btr = 512- (coffset%512) >= size_left? size_left:512-(coffset%512); - }
- else
- {
+ } + else + { /* whole sector */ btr = 512; } @@ -218,11 +218,11 @@ euint32 file_fwrite(File* file,euint32 offset,euint32 size,euint8* buf) rclus=file->Cache.DiscCluster; rsec=fs_clusterToSector(file->fs,rclus); - if(btr > 512)
+ if(btr > 512) { part_directSectorWrite(file->fs->part, rsec + csec, buf + bytes_written, btr / 512); - }
- else
+ } + else { tbuf = part_getSect(file->fs->part,rsec+csec,IOM_MODE_READWRITE); memCpy(buf+bytes_written, tbuf+(coffset%512), btr); diff --git a/filesystem/dfs/src/dfs_raw.c b/filesystem/dfs/src/dfs_raw.c index 816197c5e9..a3be0b6a13 100644 --- a/filesystem/dfs/src/dfs_raw.c +++ b/filesystem/dfs/src/dfs_raw.c @@ -38,7 +38,11 @@ int fd_new(void) rt_sem_take(fd_table_lock, RT_WAITING_FOREVER);
/* find an empty fd entry */
+#ifdef RT_USING_STDIO
for (idx = 3; idx < DFS_FD_MAX && fd_table[idx].ref_count > 0; idx++);
+#else
+ for (idx = 0; idx < DFS_FD_MAX && fd_table[idx].ref_count > 0; idx++);
+#endif
/* can't find an empty fd entry */
if (idx == DFS_FD_MAX)
@@ -69,7 +73,11 @@ struct dfs_fd* fd_get(int fd) {
struct dfs_fd* d;
+#ifdef RT_USING_STDIO
if ( fd < 3 || fd > DFS_FD_MAX ) return RT_NULL;
+#else
+ if ( fd < 0 || fd > DFS_FD_MAX ) return RT_NULL;
+#endif
d = &fd_table[fd];
|
