[PATCH v2] tests/fcntl-common.c: extend coverage for other fcntl flags
Dmitry V. Levin
ldv at altlinux.org
Tue Jul 3 21:04:22 UTC 2018
On Fri, Jun 15, 2018 at 05:00:05PM +0800, Zhibin Li wrote:
[...]
> --- a/tests/fcntl-common.c
> +++ b/tests/fcntl-common.c
> @@ -31,7 +31,9 @@
> #include <stdlib.h>
> #include <string.h>
> #include <unistd.h>
> +#include <assert.h>
> #include "flock.h"
> +#include "signal2name.c"
No need to include "signal2name.c", it's available via libtests,
you can just use signal2name().
>
> #define FILE_LEN 4096
>
> @@ -238,6 +240,135 @@ test_f_owner_ex(void)
> }
> #endif /* TEST_F_OWNER_EX */
>
> +struct fcntl_cmd_check {
> + int fd;
> + int cmd;
> + const char *cmd_str;
> + long arg;
> + const char *arg_str;
> + void (*print_flags)(long rc);
> +};
> +
> +static void
> +print_retval_flags(const struct fcntl_cmd_check *check, long rc)
> +{
> + if (check->print_flags) {
> + check->print_flags(rc);
> + } else {
> + printf("%s", errstr);
> + }
> + printf("\n");
> +}
> +
> +static void
> +test_other_set_cmd(const struct fcntl_cmd_check *check)
> +{
> + invoke_test_syscall(check->fd, check->cmd, (void *) check->arg);
This explicit cast to (void *) is redundant.
> + printf("%s(%d, %s, %s) = %s\n",
> + TEST_SYSCALL_STR, check->fd,
> + check->cmd_str, check->arg_str, errstr);
> +
> + /* bad file fd */
> + invoke_test_syscall(-1, check->cmd, (void *) check->arg);
Likewise.
> + printf("%s(-1, %s, %s) = %s\n",
> + TEST_SYSCALL_STR, check->cmd_str,
> + check->arg_str, errstr);
> +}
> +
> +static void
> +test_other_get_cmd(const struct fcntl_cmd_check *check)
> +{
> + long rc = invoke_test_syscall(check->fd, check->cmd, NULL);
> + printf("%s(%d, %s) = ",
> + TEST_SYSCALL_STR, check->fd, check->cmd_str);
> + print_retval_flags(check, rc);
> +
> + /* bad file fd */
> + invoke_test_syscall(-1, check->cmd, NULL);
> + printf("%s(-1, %s) = %s\n",
> + TEST_SYSCALL_STR, check->cmd_str, errstr);
> +}
> +
> +static void
> +print_flags_getfd(long rc)
> +{
> + assert(rc >= 0);
> + const char *text;
> + text = rc & 1 ? " (flags FD_CLOEXEC)" : "";
> + printf("%#lx%s", rc, text);
This "text" variable looks redundant here.
> +}
> +
> +static void
> +print_flags_getsig(long rc)
> +{
> + assert(rc >= 0);
> + const char *text;
> +
> + if (!rc) {
> + text = "";
This assignment is redundant.
> + printf("%ld", rc);
> + } else {
> + text = signal2name((int) rc);
> + printf("%ld (%s)", rc, text);
This "text" variable looks redundant here.
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20180704/b95b2c21/attachment.bin>
More information about the Strace-devel
mailing list