diff options
| author | Tennn11 <[email protected]> | 2023-07-27 17:23:39 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-07-27 17:23:39 +0800 |
| commit | fb1faa07461ed51a3f09fcaca063bf58a2d3d4b3 (patch) | |
| tree | 7e5706b9ef9f1228006fbbc1370b21133c119dbe /components | |
| parent | db24f1865ad14e484fe1175dea20461ac35713ce (diff) | |
[dfs v2]fix fcntl(F_SETFL) bug,and modify the error code when opening… (#7878)
Diffstat (limited to 'components')
| -rw-r--r-- | components/dfs/dfs_v2/src/dfs_file.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/components/dfs/dfs_v2/src/dfs_file.c b/components/dfs/dfs_v2/src/dfs_file.c index 9ed0a2b2c7..52b1a63210 100644 --- a/components/dfs/dfs_v2/src/dfs_file.c +++ b/components/dfs/dfs_v2/src/dfs_file.c @@ -502,6 +502,7 @@ int dfs_file_open(struct dfs_file *file, const char *path, int oflags, mode_t mo else { LOG_I("lookup file:%s failed in file system", path); + ret = -ENOENT; } } @@ -907,8 +908,25 @@ int dfs_file_fcntl(int fd, int cmd, unsigned long arg) ret = file->flags; break; case F_SETFL: - file->flags = arg; + { + int flags = (int)(rt_base_t)arg; + int mask = +#ifdef O_ASYNC + O_ASYNC | +#endif +#ifdef O_DIRECT + O_DIRECT | +#endif +#ifdef O_NOATIME + O_NOATIME | +#endif + O_APPEND | O_NONBLOCK; + + flags &= mask; + file->flags &= ~mask; + file->flags |= flags; break; + } case F_GETLK: break; case F_SETLK: |
