NEWS.stable: log cherry-pick [872f360]->[8248d1a] Copyright: Use LGPL 2.1 instead...
[gnulib.git] / tests / test-link.c
index a358921..cbb4e0b 100644 (file)
@@ -1,9 +1,9 @@
 /* Test of link() function.
 /* Test of link() function.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009-2011 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
 
    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,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
 
 #include <unistd.h>
 
 
 #include <unistd.h>
 
+#include "signature.h"
+SIGNATURE_CHECK (link, int, (char const *, char const *));
+
 #include <errno.h>
 #include <errno.h>
+#include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.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
 
 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.  */
-      if (errno == EPERM || errno == EOPNOTSUPP)
-       return 77;
-      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);
 }
 }