]> granicus.if.org Git - strace/commit
Fix printing of mode_t, umode_t, and umask types
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 3 Aug 2016 14:05:39 +0000 (14:05 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 3 Aug 2016 23:27:03 +0000 (23:27 +0000)
commit8d3743868ebce77fe03c5b1ff6435baa8d084293
tree8db51ede8eade4de468618ac2a84c7c714ef2c5a
parentc416ff5ffa63dd502e525b36c4614a5e4b7b05f0
Fix printing of mode_t, umode_t, and umask types

Print numeric umode_t type using %#03ho format.
Print return value of umask syscall using %#03lo format.
When printing symbolic mode_t type, always print lower 9 bits,
and print the numeric part using %#03o format.

* defs.h (sprintmode): Remove.
(print_symbolic_mode_t, print_numeric_umode_t,
print_numeric_long_umask): New prototypes.
* printmode.c (sprintmode): Remove.
(print_symbolic_mode_t, print_numeric_umode_t,
print_numeric_long_umask): New functions.
* chmod.c (decode_chmod): Use print_numeric_umode_t.
* ipc_msg.c (SYS_FUNC(msgget)): Likewise.
* ipc_msgctl.c (print_msqid_ds): Likewise.
* ipc_sem.c (SYS_FUNC(semget)): Likewise.
* ipc_shm.c (SYS_FUNC(shmget)): Likewise.
* ipc_shmctl.c (print_shmid_ds): Likewise.
* mq.c (SYS_FUNC(mq_open)): Likewise.
* open.c (decode_open, SYS_FUNC(creat)): Likewise.
* umask.c (SYS_FUNC(umask)): Likewise.
* mknod.c (decode_mknod): Use print_symbolic_mode_t.
* printstat.h (DO_PRINTSTAT): Likewise.
* syscall.c (trace_syscall_exiting): Use print_numeric_long_umask.
* tests/umode_t.c: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/creat.c: Rewrite as a thin wrapper around umode_t.c
* tests/mkdir.c: Likewise.
* tests/mkdirat.c: Likewise.
* tests/mknod.c: Extend test coverage of mknod syscall.
* tests/mknodat.c: Extend test coverage of mknodat syscall.
* tests/umask.c: Extend test coverage of umask syscall.
* tests/creat.test: Update the value specified for strace -a parameter.
* tests/mkdir.test: Likewise.
* tests/mkdirat.test: Likewise.
* tests/mknodat.test: Likewise.
26 files changed:
chmod.c
defs.h
ipc_msg.c
ipc_msgctl.c
ipc_sem.c
ipc_shm.c
ipc_shmctl.c
mknod.c
mq.c
open.c
printmode.c
printstat.h
syscall.c
tests/Makefile.am
tests/creat.c
tests/creat.test
tests/mkdir.c
tests/mkdir.test
tests/mkdirat.c
tests/mkdirat.test
tests/mknod.c
tests/mknodat.c
tests/mknodat.test
tests/umask.c
tests/umode_t.c [new file with mode: 0644]
umask.c