[PATCH v2] tests/fcntl-common.c: extend coverage for other fcntl flags
Dmitry V. Levin
ldv at altlinux.org
Tue Jul 10 11:51:19 UTC 2018
On Wed, Jul 04, 2018 at 12:04:22AM +0300, Dmitry V. Levin wrote:
> 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.
Is there any process with this?
--
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/20180710/9d76f9ef/attachment.bin>
More information about the Strace-devel
mailing list