提交 1f16147f 编写于 作者: B Bernard Xiong

Merge the patch to fix fd issue; lwIP protect issue

上级 8e439999
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
* Date Author Notes * Date Author Notes
* 2005-02-22 Bernard The first version. * 2005-02-22 Bernard The first version.
* 2011-12-08 Bernard Merges rename patch from iamcacy. * 2011-12-08 Bernard Merges rename patch from iamcacy.
* 2015-05-27 Bernard Fix the fd clear issue.
*/ */
#include <dfs.h> #include <dfs.h>
...@@ -97,7 +98,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags) ...@@ -97,7 +98,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{ {
/* clear fd */ /* clear fd */
rt_free(fd->path); rt_free(fd->path);
rt_memset(fd, 0, sizeof(*fd)); fd->path = RT_NULL;
return -DFS_STATUS_ENOSYS; return -DFS_STATUS_ENOSYS;
} }
...@@ -106,7 +107,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags) ...@@ -106,7 +107,7 @@ int dfs_file_open(struct dfs_fd *fd, const char *path, int flags)
{ {
/* clear fd */ /* clear fd */
rt_free(fd->path); rt_free(fd->path);
rt_memset(fd, 0, sizeof(*fd)); fd->path = RT_NULL;
dfs_log(DFS_DEBUG_INFO, ("open failed")); dfs_log(DFS_DEBUG_INFO, ("open failed"));
...@@ -143,7 +144,7 @@ int dfs_file_close(struct dfs_fd *fd) ...@@ -143,7 +144,7 @@ int dfs_file_close(struct dfs_fd *fd)
return result; return result;
rt_free(fd->path); rt_free(fd->path);
rt_memset(fd, 0, sizeof(struct dfs_fd)); fd->path = RT_NULL;
return result; return result;
} }
...@@ -652,7 +653,6 @@ static void copyfile(const char *src, const char *dst) ...@@ -652,7 +653,6 @@ static void copyfile(const char *src, const char *dst)
extern int mkdir(const char *path, mode_t mode); extern int mkdir(const char *path, mode_t mode);
static void copydir(const char * src, const char * dst) static void copydir(const char * src, const char * dst)
{ {
struct dfs_fd fd;
struct dirent dirent; struct dirent dirent;
struct stat stat; struct stat stat;
int length; int length;
......
...@@ -230,6 +230,7 @@ off_t lseek(int fd, off_t offset, int whence) ...@@ -230,6 +230,7 @@ off_t lseek(int fd, off_t offset, int whence)
break; break;
default: default:
fd_put(d);
rt_set_errno(-DFS_STATUS_EINVAL); rt_set_errno(-DFS_STATUS_EINVAL);
return -1; return -1;
...@@ -237,6 +238,7 @@ off_t lseek(int fd, off_t offset, int whence) ...@@ -237,6 +238,7 @@ off_t lseek(int fd, off_t offset, int whence)
if (offset < 0) if (offset < 0)
{ {
fd_put(d);
rt_set_errno(-DFS_STATUS_EINVAL); rt_set_errno(-DFS_STATUS_EINVAL);
return -1; return -1;
...@@ -427,6 +429,7 @@ int mkdir(const char *path, mode_t mode) ...@@ -427,6 +429,7 @@ int mkdir(const char *path, mode_t mode)
if (result < 0) if (result < 0)
{ {
fd_put(d);
fd_put(d); fd_put(d);
rt_set_errno(result); rt_set_errno(result);
...@@ -435,6 +438,7 @@ int mkdir(const char *path, mode_t mode) ...@@ -435,6 +438,7 @@ int mkdir(const char *path, mode_t mode)
dfs_file_close(d); dfs_file_close(d);
fd_put(d); fd_put(d);
fd_put(d);
return 0; return 0;
} }
......
...@@ -103,5 +103,9 @@ void sys_arch_assert(const char* file, int line); ...@@ -103,5 +103,9 @@ void sys_arch_assert(const char* file, int line);
#include "string.h" #include "string.h"
#define SYS_ARCH_DECL_PROTECT(level)
#define SYS_ARCH_PROTECT(level) rt_enter_critical()
#define SYS_ARCH_UNPROTECT(level) rt_exit_critical()
#endif /* __ARCH_CC_H__ */ #endif /* __ARCH_CC_H__ */
/* /*
* File : rtdef.h * File : rtdef.h
* This file is part of RT-Thread RTOS * This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team * COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
......
...@@ -1072,8 +1072,8 @@ rt_device_t rt_console_set_device(const char *name) ...@@ -1072,8 +1072,8 @@ rt_device_t rt_console_set_device(const char *name)
} }
/* set new console device */ /* set new console device */
rt_device_open(new, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_STREAM);
_console_device = new; _console_device = new;
rt_device_open(_console_device, RT_DEVICE_OFLAG_RDWR);
} }
return old; return old;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册