On Thu, Mar 10, 2016 at 12:09:22AM +0000, Fabien Siron wrote: > * tests/fchmod.c: New file. > * tests/fchmod.test: New test. > * tests/.gitignore: Add fchmod. > * tests/Makefile.am (check_PROGRAMS): Likewise. > (TESTS): Add fchmod.test. > --- > tests/.gitignore | 1 + > tests/Makefile.am | 2 ++ > tests/fchmod.c | 82 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/fchmod.test | 11 ++++++++ > 4 files changed, 96 insertions(+) > create mode 100644 tests/fchmod.c > create mode 100755 tests/fchmod.test > > diff --git a/tests/.gitignore b/tests/.gitignore > index c6a94d8..f212fde 100644 > --- a/tests/.gitignore > +++ b/tests/.gitignore > @@ -25,6 +25,7 @@ execve-v > execveat > execveat-v > fanotify_mark > +fchmod > fcntl > fcntl64 > file_handle > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 92d3255..81b56e8 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -75,6 +75,7 @@ check_PROGRAMS = \ > execveat \ > execveat-v \ > fanotify_mark \ > + fchmod \ > fcntl \ > fcntl64 \ > file_handle \ > @@ -239,6 +240,7 @@ TESTS = \ > execveat.test \ > execveat-v.test \ > fanotify_mark.test \ > + fchmod.test \ > fcntl.test \ > fcntl64.test \ > file_handle.test \ > diff --git a/tests/fchmod.c b/tests/fchmod.c > new file mode 100644 > index 0000000..192c8c3 > --- /dev/null > +++ b/tests/fchmod.c > @@ -0,0 +1,82 @@ > +/* > + * Copyright (c) 2016 Fabien Siron <[email protected]> > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * 3. The name of the author may not be used to endorse or promote products > + * derived from this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR > + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT > + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF > + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include "tests.h" > +#include <sys/syscall.h> > + > +#if defined __NR_fchmod > + > +#include <fcntl.h> > +#include <sys/stat.h> > +#include <stdio.h> > +#include <unistd.h> > +#include <errno.h> > + > +int > +main(void) > +{ > + static const char fname[] = "fchmod_test_file"; > + > + int fd = open(fname, O_CREAT|O_RDONLY, 0x400);
File access permissions are usually specified in octal form,
0x400 looks like a typo.
> + if (fd == -1)
> + perror_msg_and_fail("open");
> +
> + int fchmod_res = syscall(__NR_fchmod, fd, 0600);
> +
> + if (fchmod_res == 0) {
> + printf("fchmod(%i, 0600) = 0\n", fd);
In strace we prefer to use %d instead of %i.
> + } else {
> + if (errno == ENOSYS) {
> + printf("fchmod(%i, 0600) = -1 ENOSYS (%m)\n", fd);
> + } else {
> + perror_msg_and_fail("fchmod");
> + }
> + }
> +
> + if (unlink(fname) == -1)
> + perror_msg_and_fail("unlink");
Unlike chmod, fchmod doesn't need a file name, so you can unlink
the file as soon as you've got the descriptor.
This would open the way for further simplification of the test.
--
ldv
pgpVplZsh2tw_.pgp
Description: PGP signature
------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
