/* Test of link() function.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
#include <unistd.h>
+#include "signature.h"
+SIGNATURE_CHECK (link, int, (char const *, char const *));
+
#include <errno.h>
+#include <fcntl.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "ignore-value.h"
+#include "macros.h"
-#define ASSERT(expr) \
- do \
- { \
- if (!(expr)) \
- { \
- fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
- fflush (stderr); \
- abort (); \
- } \
- } \
- while (0)
+#define BASE "test-link.t"
+
+#include "test-link.h"
int
-main (int argc, char **argv)
+main (void)
{
- int ret;
-
- ASSERT (argc == 3);
-
- ret = link (argv[1], argv[2]);
- if (ret < 0)
- {
- /* If the device does not support hard links, errno is
- EPERM on Linux, EOPNOTSUPP on FreeBSD. */
- switch (errno)
- {
- case EPERM:
-#ifdef EOPNOTSUPP
- case EOPNOTSUPP:
-#endif
- return 77;
- default:
- perror ("link");
- return 1;
- }
- }
-
- return 0;
+ /* Remove any garbage left from previous partial runs. */
+ ignore_value (system ("rm -rf " BASE "*"));
+
+ return test_link (link, true);
}