summaryrefslogtreecommitdiff
path: root/components/dfs
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2015-06-04 22:23:53 +0800
committerBernard Xiong <[email protected]>2015-06-04 22:23:53 +0800
commitc6d4407c57d20038e0f5b681eeb7807ccc5dfaff (patch)
tree6d10c55bfe9e58d3a639d640a8c80f2917e17116 /components/dfs
parent951fd5429c2c84a5264092c7c4132f748bab3413 (diff)
[DFS] Fix the fd clear issue.
Diffstat (limited to 'components/dfs')
-rw-r--r--components/dfs/src/dfs_file.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/components/dfs/src/dfs_file.c b/components/dfs/src/dfs_file.c
index 614a349494..aebe2996c6 100644
--- a/components/dfs/src/dfs_file.c
+++ b/components/dfs/src/dfs_file.c
@@ -21,6 +21,7 @@
* Date Author Notes
* 2005-02-22 Bernard The first version.
* 2011-12-08 Bernard Merges rename patch from iamcacy.
+ * 2015-05-27 Bernard Fix the fd clear issue.
*/
#include <dfs.h>
@@ -97,7 +98,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{
/* clear fd */
rt_free(fd->path);
- rt_memset(fd, 0, sizeof(*fd));
+ fd->path = RT_NULL;
return -DFS_STATUS_ENOSYS;
}
@@ -106,7 +107,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{
/* clear fd */
rt_free(fd->path);
- rt_memset(fd, 0, sizeof(*fd));
+ fd->path = RT_NULL;
dfs_log(DFS_DEBUG_INFO, ("open failed"));
@@ -143,7 +144,7 @@ int dfs_file_close(struct dfs_fd *fd)
return result;
rt_free(fd->path);
- rt_memset(fd, 0, sizeof(struct dfs_fd));
+ fd->path = RT_NULL;
return result;
}
@@ -165,7 +166,7 @@ int dfs_file_ioctl(struct dfs_fd *fd, int cmd, void *args)
return -DFS_STATUS_EINVAL;
fs = fd->fs;
- if (fs->ops->ioctl != RT_NULL)
+ if (fs->ops->ioctl != RT_NULL)
return fs->ops->ioctl(fd, cmd, args);
return -DFS_STATUS_ENOSYS;
@@ -186,11 +187,11 @@ int dfs_file_read(struct dfs_fd *fd, void *buf, rt_size_t len)
struct dfs_filesystem *fs;
int result = 0;
- if (fd == RT_NULL)
+ if (fd == RT_NULL)
return -DFS_STATUS_EINVAL;
fs = (struct dfs_filesystem *)fd->fs;
- if (fs->ops->read == RT_NULL)
+ if (fs->ops->read == RT_NULL)
return -DFS_STATUS_ENOSYS;
if ((result = fs->ops->read(fd, buf, len)) < 0)
@@ -213,7 +214,7 @@ int dfs_file_getdents(struct dfs_fd *fd, struct dirent *dirp, rt_size_t nbytes)
struct dfs_filesystem *fs;
/* parameter check */
- if (fd == RT_NULL || fd->type != FT_DIRECTORY)
+ if (fd == RT_NULL || fd->type != FT_DIRECTORY)
return -DFS_STATUS_EINVAL;
fs = (struct dfs_filesystem *)fd->fs;
@@ -267,7 +268,7 @@ int dfs_file_unlink(const char *path)
result = fs->ops->unlink(fs, dfs_subdir(fs->path, fullpath));
}
else
- result = fs->ops->unlink(fs, fullpath);
+ result = fs->ops->unlink(fs, fullpath);
}
else result = -DFS_STATUS_ENOSYS;
@@ -528,7 +529,7 @@ void ls(const char *pathname)
/* build full path for each file */
fullpath = dfs_normalize_path(path, dirent.d_name);
- if (fullpath == RT_NULL)
+ if (fullpath == RT_NULL)
break;
if (dfs_file_stat(fullpath, &stat) == 0)
@@ -555,7 +556,7 @@ void ls(const char *pathname)
{
rt_kprintf("No such directory\n");
}
- if (pathname == RT_NULL)
+ if (pathname == RT_NULL)
rt_free(path);
}
FINSH_FUNCTION_EXPORT(ls, list directory contents);
@@ -632,15 +633,15 @@ static void copyfile(const char *src, const char *dst)
read_bytes = dfs_file_read(&src_fd, block_ptr, BUF_SZ);
if (read_bytes > 0)
{
- int length;
-
+ int length;
+
length = dfs_file_write(&fd, block_ptr, read_bytes);
- if (length != read_bytes)
- {
- /* write failed. */
- rt_kprintf("Write file data failed, errno=%d\n", length);
- break;
- }
+ if (length != read_bytes)
+ {
+ /* write failed. */
+ rt_kprintf("Write file data failed, errno=%d\n", length);
+ break;
+ }
}
} while (read_bytes > 0);
@@ -652,7 +653,6 @@ static void copyfile(const char *src, const char *dst)
extern int mkdir(const char *path, mode_t mode);
static void copydir(const char * src, const char * dst)
{
- struct dfs_fd fd;
struct dirent dirent;
struct stat stat;
int length;