mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-08-01 20:29:00 +00:00
apps: Fix O_ACCMODE bitmask checks after Linux flag alignment
After aligning NuttX open() flag constants with Linux (O_RDONLY=0,
O_WRONLY=1, O_RDWR=2), code that used '(flags & O_RDONLY)' or
'(flags & O_WRONLY)' as a bitmask check is broken because O_RDONLY
is now 0. Fix by using '(flags & O_ACCMODE)' comparisons instead.
- usrsocktest: replace 'flags & O_RDWR' with 'flags & O_ACCMODE'
in fcntl F_GETFL assertions
- dd: verify mode used '(oflags & O_RDONLY)' to detect verify;
replace with '(oflags & O_ACCMODE) == O_RDWR'
- dpopen: replace '(oflag & O_RDWR) == O_RDWR' with
'(oflag & O_ACCMODE) == O_RDWR'
- usbmsc: replace 'flags & O_WRONLY' with
'(flags & O_ACCMODE) == O_RDONLY'
- fcntl_test: replace '(flags & O_WRONLY) == 0' with
'(flags & O_ACCMODE) == O_RDONLY'
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
fc25af7cd7
commit
5ead824fff
9 changed files with 55 additions and 53 deletions
|
|
@ -90,35 +90,36 @@ void test_nuttx_syscall_fcntl01(FAR void **state)
|
|||
/* //block1: */
|
||||
|
||||
flags = fcntl(fd[2], F_GETFL, 0);
|
||||
assert_false((flags & O_WRONLY) == 0);
|
||||
assert_false((flags & O_ACCMODE) == O_RDONLY);
|
||||
|
||||
/* Check setting of no_delay flag */
|
||||
|
||||
assert_false(fcntl(fd[2], F_SETFL, O_NDELAY) == -1);
|
||||
|
||||
flags = fcntl(fd[2], F_GETFL, 0);
|
||||
assert_false((flags & (O_NDELAY | O_WRONLY)) == 0);
|
||||
assert_false((flags & O_NDELAY) == 0 && (flags & O_ACCMODE) == O_RDONLY);
|
||||
|
||||
/* Check of setting append flag */
|
||||
|
||||
assert_false(fcntl(fd[2], F_SETFL, O_APPEND) == -1);
|
||||
|
||||
flags = fcntl(fd[2], F_GETFL, 0);
|
||||
assert_false((flags & (O_APPEND | O_WRONLY)) == 0);
|
||||
assert_false((flags & O_APPEND) == 0 && (flags & O_ACCMODE) == O_RDONLY);
|
||||
|
||||
/* Check setting flags together */
|
||||
|
||||
assert_false(fcntl(fd[2], F_SETFL, O_NDELAY | O_APPEND) < 0);
|
||||
|
||||
flags = fcntl(fd[2], F_GETFL, 0);
|
||||
assert_false((flags & (O_NDELAY | O_APPEND | O_WRONLY)) == 0);
|
||||
assert_false((flags & (O_NDELAY | O_APPEND)) == 0 &&
|
||||
(flags & O_ACCMODE) == O_RDONLY);
|
||||
|
||||
/* Check that flags are not cumulative */
|
||||
|
||||
assert_false(fcntl(fd[2], F_SETFL, 0) == -1);
|
||||
|
||||
flags = fcntl(fd[2], F_GETFL, 0);
|
||||
assert_false((flags & O_WRONLY) == 0);
|
||||
assert_false((flags & O_ACCMODE) == O_RDONLY);
|
||||
assert_false((flags = fcntl(fd[2], F_GETFD, 0)) < 0);
|
||||
assert_false(flags != 0);
|
||||
assert_false((flags = fcntl(fd[2], F_SETFD, 1)) == -1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue