Commit 3220d5c6 authored by Eric Blake's avatar Eric Blake

tests: silence warning about system return

Silence a compiler warning for platforms that mark system()
with attribute warn_unused_result.

* tests/test-areadlink-with-size.c (main): Ignore system result.
* tests/test-areadlink.c (main): Likewise.
* tests/test-areadlinkat-with-size.c (main): Likewise.
* tests/test-areadlinkat.c (main): Likewise.
* tests/test-canonicalize-lgpl.c (main): Likewise.
* tests/test-canonicalize.c (main): Likewise.
* tests/test-chown.c (main): Likewise.
* tests/test-fchownat.c (main): Likewise.
* tests/test-fdutimensat.c (main): Likewise.
* tests/test-fstatat.c (main): Likewise.
* tests/test-futimens.c (main): Likewise.
* tests/test-lchown.c (main): Likewise.
* tests/test-link.c (main): Likewise.
* tests/test-linkat.c (main): Likewise.
* tests/test-lstat.c (main): Likewise.
* tests/test-mkdir.c (main): Likewise.
* tests/test-mkdirat.c (main): Likewise.
* tests/test-mkfifo.c (main): Likewise.
* tests/test-mkfifoat.c (main): Likewise.
* tests/test-mknod.c (main): Likewise.
* tests/test-readlink.c (main): Likewise.
* tests/test-remove.c (main): Likewise.
* tests/test-rename.c (main): Likewise.
* tests/test-renameat.c (main): Likewise.
* tests/test-rmdir.c (main): Likewise.
* tests/test-symlink.c (main): Likewise.
* tests/test-symlinkat.c (main): Likewise.
* tests/test-unlink.c (main): Likewise.
* tests/test-unlinkat.c (main): Likewise.
* tests/test-utimens.c (main): Likewise.
* tests/test-utimensat.c (main): Likewise.
* modules/areadlink-tests (Depends-on): Add ignore-value.
* modules/areadlink-with-size-tests (Depends-on): Likewise.
* modules/areadlinkat-tests (Depends-on): Likewise.
* modules/areadlinkat-with-size-tests (Depends-on): Likewise.
* modules/canonicalize-lgpl-tests (Depends-on): Likewise.
* modules/canonicalize-tests (Depends-on): Likewise.
* modules/chown-tests (Depends-on): Likewise.
* modules/fdutimensat-tests (Depends-on): Likewise.
* modules/futimens-tests (Depends-on): Likewise.
* modules/lchown-tests (Depends-on): Likewise.
* modules/link-tests (Depends-on): Likewise.
* modules/linkat-tests (Depends-on): Likewise.
* modules/lstat-tests (Depends-on): Likewise.
* modules/mkdir-tests (Depends-on): Likewise.
* modules/mkfifo-tests (Depends-on): Likewise.
* modules/mkfifoat-tests (Depends-on): Likewise.
* modules/mknod-tests (Depends-on): Likewise.
* modules/openat-tests (Depends-on): Likewise.
* modules/readlink-tests (Depends-on): Likewise.
* modules/remove-tests (Depends-on): Likewise.
* modules/rename-tests (Depends-on): Likewise.
* modules/renameat-tests (Depends-on): Likewise.
* modules/rmdir-tests (Depends-on): Likewise.
* modules/symlink-tests (Depends-on): Likewise.
* modules/symlinkat-tests (Depends-on): Likewise.
* modules/unlink-tests (Depends-on): Likewise.
* modules/utimens-tests (Depends-on): Likewise.
* modules/utimensat-tests (Depends-on): Likewise.
Signed-off-by: default avatarEric Blake <ebb9@byu.net>
parent a5b55005
2010-02-01 Eric Blake <ebb9@byu.net>
tests: silence warning about system return
* tests/test-areadlink-with-size.c (main): Ignore system result.
* tests/test-areadlink.c (main): Likewise.
* tests/test-areadlinkat-with-size.c (main): Likewise.
* tests/test-areadlinkat.c (main): Likewise.
* tests/test-canonicalize-lgpl.c (main): Likewise.
* tests/test-canonicalize.c (main): Likewise.
* tests/test-chown.c (main): Likewise.
* tests/test-fchownat.c (main): Likewise.
* tests/test-fdutimensat.c (main): Likewise.
* tests/test-fstatat.c (main): Likewise.
* tests/test-futimens.c (main): Likewise.
* tests/test-lchown.c (main): Likewise.
* tests/test-link.c (main): Likewise.
* tests/test-linkat.c (main): Likewise.
* tests/test-lstat.c (main): Likewise.
* tests/test-mkdir.c (main): Likewise.
* tests/test-mkdirat.c (main): Likewise.
* tests/test-mkfifo.c (main): Likewise.
* tests/test-mkfifoat.c (main): Likewise.
* tests/test-mknod.c (main): Likewise.
* tests/test-readlink.c (main): Likewise.
* tests/test-remove.c (main): Likewise.
* tests/test-rename.c (main): Likewise.
* tests/test-renameat.c (main): Likewise.
* tests/test-rmdir.c (main): Likewise.
* tests/test-symlink.c (main): Likewise.
* tests/test-symlinkat.c (main): Likewise.
* tests/test-unlink.c (main): Likewise.
* tests/test-unlinkat.c (main): Likewise.
* tests/test-utimens.c (main): Likewise.
* tests/test-utimensat.c (main): Likewise.
* modules/areadlink-tests (Depends-on): Add ignore-value.
* modules/areadlink-with-size-tests (Depends-on): Likewise.
* modules/areadlinkat-tests (Depends-on): Likewise.
* modules/areadlinkat-with-size-tests (Depends-on): Likewise.
* modules/canonicalize-lgpl-tests (Depends-on): Likewise.
* modules/canonicalize-tests (Depends-on): Likewise.
* modules/chown-tests (Depends-on): Likewise.
* modules/fdutimensat-tests (Depends-on): Likewise.
* modules/futimens-tests (Depends-on): Likewise.
* modules/lchown-tests (Depends-on): Likewise.
* modules/link-tests (Depends-on): Likewise.
* modules/linkat-tests (Depends-on): Likewise.
* modules/lstat-tests (Depends-on): Likewise.
* modules/mkdir-tests (Depends-on): Likewise.
* modules/mkfifo-tests (Depends-on): Likewise.
* modules/mkfifoat-tests (Depends-on): Likewise.
* modules/mknod-tests (Depends-on): Likewise.
* modules/openat-tests (Depends-on): Likewise.
* modules/readlink-tests (Depends-on): Likewise.
* modules/remove-tests (Depends-on): Likewise.
* modules/rename-tests (Depends-on): Likewise.
* modules/renameat-tests (Depends-on): Likewise.
* modules/rmdir-tests (Depends-on): Likewise.
* modules/symlink-tests (Depends-on): Likewise.
* modules/symlinkat-tests (Depends-on): Likewise.
* modules/unlink-tests (Depends-on): Likewise.
* modules/utimens-tests (Depends-on): Likewise.
* modules/utimensat-tests (Depends-on): Likewise.
2010-01-31 Bruno Haible <bruno@clisp.org>
Perform the same test for many <math.h> functions.
......@@ -4,6 +4,7 @@ tests/test-areadlink.c
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -4,6 +4,7 @@ tests/test-areadlink-with-size.c
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -4,6 +4,7 @@ tests/test-areadlinkat.c
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -4,6 +4,7 @@ tests/test-areadlinkat-with-size.c
tests/macros.h
Depends-on:
ignore-value
stdbool
configure.ac:
......
......@@ -4,6 +4,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
same-inode
symlink
......
......@@ -3,6 +3,7 @@ tests/test-canonicalize.c
tests/macros.h
Depends-on:
ignore-value
progname
same-inode
symlink
......
......@@ -6,6 +6,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
lstat
mgetgroups
progname
......
......@@ -8,6 +8,7 @@ tests/test-fdutimensat.c
tests/macros.h
Depends-on:
ignore-value
progname
timespec
usleep
......
......@@ -7,6 +7,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
timespec
usleep
utimecmp
......
......@@ -6,6 +6,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
mgetgroups
progname
usleep
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
errno
stdbool
sys_stat
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
areadlink-with-size
filenamecat
progname
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
errno
same-inode
stdbool
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
symlink
configure.ac:
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -16,6 +16,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
mgetgroups
pathmax
usleep
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -4,6 +4,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
symlink
sys_stat
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
errno
link
stdbool
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
filenamecat
progname
xgetcwd
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
configure.ac:
......
......@@ -6,6 +6,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
configure.ac:
......
......@@ -5,6 +5,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
stdbool
symlink
unlinkdir
......
......@@ -8,6 +8,7 @@ tests/test-utimens.c
tests/macros.h
Depends-on:
ignore-value
symlink
timespec
usleep
......
......@@ -8,6 +8,7 @@ tests/signature.h
tests/macros.h
Depends-on:
ignore-value
progname
timespec
usleep
......
......@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-areadlink-with-size.t"
......@@ -39,7 +40,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_areadlink (areadlink_with_size, true);
}
......@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-areadlink.t"
......@@ -46,7 +47,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_areadlink (do_areadlink, true);
}
......@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-areadlinkat-with-size.t"
......@@ -50,7 +51,7 @@ main (void)
int result;
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Basic tests. */
result = test_areadlink (do_areadlinkat_with_size, false);
......
......@@ -29,6 +29,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-areadlinkat.t"
......@@ -50,7 +51,7 @@ main (void)
int result;
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Basic tests. */
result = test_areadlink (do_areadlinkat, false);
......
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (canonicalize_file_name, char *, (const char *));
#include <unistd.h>
#include "same-inode.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "t-can-lgpl.tmp"
......@@ -55,7 +56,7 @@ main (void)
any leftovers from a previous partial run. */
{
int fd;
system ("rm -rf " BASE " ise");
ignore_value (system ("rm -rf " BASE " ise"));
ASSERT (mkdir (BASE, 0700) == 0);
fd = creat (BASE "/tra", 0600);
ASSERT (0 <= fd);
......
......@@ -29,6 +29,7 @@
#include <unistd.h>
#include "same-inode.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "t-can.tmp"
......@@ -46,7 +47,7 @@ main (void)
any leftovers from a previous partial run. */
{
int fd;
system ("rm -rf " BASE " ise");
ignore_value (system ("rm -rf " BASE " ise"));
ASSERT (mkdir (BASE, 0700) == 0);
fd = creat (BASE "/tra", 0600);
ASSERT (0 <= fd);
......
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (chown, int, (char const *, uid_t, gid_t));
#include "mgetgroups.h"
#include "stat-time.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-chown.t"
......@@ -42,7 +43,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_chown (chown, true);
}
......@@ -33,6 +33,7 @@ SIGNATURE_CHECK (fchownat, int, (int, char const *, uid_t, gid_t, int));
#include "mgetgroups.h"
#include "openat.h"
#include "stat-time.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-fchownat.t"
......@@ -63,7 +64,7 @@ main (void)
int result2; /* Skip because of no lchown support. */
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Basic tests. */
result1 = test_chown (do_chown, true);
......
......@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-fdutimensat.t"
......@@ -84,7 +85,7 @@ main (void)
int fd;
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Basic tests. */
result1 = test_utimens (do_utimens, true);
......
......@@ -33,6 +33,7 @@ SIGNATURE_CHECK (fstatat, int, (int, char const *, struct stat *, int));
#include "openat.h"
#include "pathmax.h"
#include "same-inode.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-fstatat.t"
......@@ -62,7 +63,7 @@ main (void)
int result;
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
result = test_stat_func (do_stat, false);
ASSERT (test_lstat_func (do_lstat, false) == result);
......
......@@ -34,6 +34,7 @@ SIGNATURE_CHECK (futimens, int, (int, struct timespec const[2]));
#include "stat-time.h"
#include "timespec.h"
#include "utimecmp.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-futimens.t"
......@@ -44,7 +45,7 @@ int
main (void)
{
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_futimens (futimens, true);
}
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (lchown, int, (char const *, uid_t, gid_t));
#include "mgetgroups.h"
#include "stat-time.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-lchown.t"
......@@ -42,7 +43,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_lchown (lchown, true);
}
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (link, int, (char const *, char const *));
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-link.t"
......@@ -40,7 +41,7 @@ int
main (void)
{
/* Remove any garbage left from previous partial runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_link (link, true);
}
......@@ -34,6 +34,7 @@ SIGNATURE_CHECK (linkat, int, (int, char const *, int, char const *, int));
#include "filenamecat.h"
#include "same-inode.h"
#include "xgetcwd.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-linkat.t"
......@@ -81,7 +82,7 @@ main (void)
int result;
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Test basic link functionality, without mentioning symlinks. */
result = test_link (do_link, true);
......
......@@ -35,6 +35,7 @@ SIGNATURE_CHECK (lstat, int, (char const *, struct stat *));
#include <unistd.h>
#include "same-inode.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-lstat.t"
......@@ -53,7 +54,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_lstat_func (do_lstat, true);
}
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (mkdir, int, (char const *, mode_t));
#include <stdlib.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-mkdir.t"
......@@ -40,7 +41,7 @@ int
main (void)
{
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_mkdir (mkdir, true);
}
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (mkdirat, int, (int, char const *, mode_t));
#include <stdlib.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-mkdirat.t"
......@@ -51,7 +52,7 @@ main (void)
int result;
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Test basic mkdir functionality. */
result = test_mkdir (do_mkdir, false);
......
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (mkfifo, int, (char const *, mode_t));
#include <stdlib.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-mkfifo.t"
......@@ -40,7 +41,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_mkfifo (mkfifo, true);
}
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (mknodat, int, (int, char const *, mode_t, dev_t));
#include <string.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-mkfifoat.t"
......@@ -72,7 +73,7 @@ main (void)
int result;
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Basic tests. */
result = test_mkfifo (do_mkfifoat, true);
......
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (mknod, int, (char const *, mode_t, dev_t));
#include <stdlib.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-mknod.t"
......@@ -47,7 +48,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* We can only portably test creation of fifos. Anything else
requires root privileges and knowledge of device numbers. */
......
......@@ -31,6 +31,7 @@ SIGNATURE_CHECK (readlink, ssize_t, (char const *, char *, size_t));
#include <string.h>
#include <sys/stat.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-readlink.t"
......@@ -41,7 +42,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_readlink (readlink, true);
}
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (remove, int, (char const *));
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-remove.t"
......@@ -38,7 +39,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Setup. */
ASSERT (mkdir (BASE "dir", 0700) == 0);
......
......@@ -29,6 +29,7 @@ SIGNATURE_CHECK (rename, int, (char const *, char const *));
#include <sys/stat.h>
#include <unistd.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-rename.t"
......@@ -39,7 +40,7 @@ int
main (void)
{
/* Remove any garbage left from previous partial runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_rename (rename, true);
}
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (renameat, int, (int, char const *, int, char const *));
#include "filenamecat.h"
#include "xgetcwd.h"
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-renameat.t"
......@@ -57,7 +58,7 @@ main (void)
int result;
/* Clean up any trash from prior testsuite runs. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
/* Test basic rename functionality, using current directory. */
result = test_rename (do_rename, false);
......
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (rmdir, int, (char const *));
#include <stdlib.h>
#include <sys/stat.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-rmdir.t"
......@@ -40,7 +41,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_rmdir_func (rmdir, true);
}
......@@ -30,6 +30,7 @@ SIGNATURE_CHECK (symlink, int, (char const *, char const *));
#include <stdlib.h>
#include <sys/stat.h>
#include "ignore-value.h"
#include "macros.h"
#define BASE "test-symlink.t"
......@@ -40,7 +41,7 @@ int
main (void)
{
/* Remove any leftovers from a previous partial run. */
system ("rm -rf " BASE "*");
ignore_value (system ("rm -rf " BASE "*"));
return test_symlink (symlink, true);
}
......@@ -32,6 +32,7 @@ SIGNATURE_CHECK (readlinkat, ssize_t, (int, char const *, char *, size_t));
#include <string.h>
#include <sys/stat.h>