Fix io/tst-* so that they do better checks for ENOSYS
authorDavid Bartley <dtbartle@glibc.(none)>
Mon, 2 Feb 2009 08:01:14 +0000 (08:01 +0000)
committerDavid Bartley <dtbartle@glibc.(none)>
Mon, 2 Feb 2009 08:01:14 +0000 (08:01 +0000)
io/tst-faccessat.c
io/tst-fchmodat.c
io/tst-fchownat.c
io/tst-fstatat.c
io/tst-futimesat.c
io/tst-linkat.c
io/tst-readlinkat.c
io/tst-renameat.c
io/tst-symlinkat.c
io/tst-unlinkat.c

index 4853207..355dca4 100644 (file)
@@ -105,7 +105,12 @@ do_test (void)
       puts ("faccessat using descriptor for normal file worked");
       return 1;
     }
-  if (errno != ENOTDIR)
+  if (errno == ENOSYS)
+    {
+         puts ("faccessat function not supported");
+      return 0;
+    }
+  else if (errno != ENOTDIR)
     {
       puts ("\
 error for faccessat using descriptor for normal file not ENOTDIR ");
@@ -135,25 +140,27 @@ error for faccessat using descriptor for normal file not ENOTDIR ");
       result = 1;
     }
 
-  if (fchmodat (dir_fd, "some-file", 0400, 0) != 0)
+  if (fchmodat (dir_fd, "some-file", 0400, 0) != 0 && errno != ENOSYS)
     {
       printf ("fchownat failed: %m\n");
       return 1;
     }
-
-  if (faccessat (dir_fd, "some-file", R_OK, AT_EACCESS))
-    {
-      printf ("faccessat R_OK: %m\n");
-      result = 1;
-    }
-
-  errno = 0;
-  if (faccessat (dir_fd, "some-file", W_OK, AT_EACCESS) == 0
-      ? (geteuid () != 0) : (errno != EACCES))
-    {
-      printf ("faccessat W_OK on unwritable file: %m\n");
-      result = 1;
-    }
+  else if (errno != ENOSYS)
+    {
+      if (faccessat (dir_fd, "some-file", R_OK, AT_EACCESS))
+        {
+          printf ("faccessat R_OK: %m\n");
+          result = 1;
+        }
+
+      errno = 0;
+      if (faccessat (dir_fd, "some-file", W_OK, AT_EACCESS) == 0
+          ? (geteuid () != 0) : (errno != EACCES))
+        {
+          printf ("faccessat W_OK on unwritable file: %m\n");
+          result = 1;
+        }
+  }
 
   /* Create a file descriptor which is closed again right away.  */
   int dir_fd2 = dup (dir_fd);
index bfb75d6..d5a6950 100644 (file)
@@ -114,7 +114,12 @@ do_test (void)
       puts ("fchmodat using descriptor for normal file worked");
       return 1;
     }
-  if (errno != ENOTDIR)
+  if (errno == ENOSYS)
+    {
+         puts ("fchmodat function not supported");
+      return 0;
+    }
+  else if (errno != ENOTDIR)
     {
       puts ("\
 error for fchmodat using descriptor for normal file not ENOTDIR ");
index fd32ac9..3796c46 100644 (file)
@@ -119,7 +119,12 @@ do_test (void)
       puts ("fchownat using descriptor for normal file worked");
       return 1;
     }
-  if (errno != ENOTDIR)
+  if (errno == ENOSYS)
+    {
+         puts ("faccessat function not supported");
+      return 0;
+    }
+  else if (errno != ENOTDIR)
     {
       puts ("\
 error for fchownat using descriptor for normal file not ENOTDIR ");
index 5493102..5c9052e 100644 (file)
@@ -105,7 +105,12 @@ do_test (void)
       puts ("fstatatat using descriptor for normal file worked");
       return 1;
     }
-  if (errno != ENOTDIR)
+  if (errno == ENOSYS)
+    {
+         puts ("fstatat function not supported");
+      return 0;
+    }
+  else if (errno != ENOTDIR)
     {
       puts ("error for fstatat using descriptor for normal file not ENOTDIR ");
       return 1;
index c1e8d93..6df4d55 100644 (file)
@@ -113,6 +113,11 @@ do_test (void)
   tv[1].tv_usec = 0;
   if (futimesat (dir_fd, "some-file", tv) != 0)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("futimesat function not supported");
+          return 0;
+        }
       puts ("futimesat failed");
       return 1;
     }
index d63c982..236219b 100644 (file)
@@ -107,6 +107,11 @@ do_test (void)
 
   if (linkat (dir_fd, "some-file", dir_fd, "another-file", 0) != 0)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("linkat function not supported");
+          return 0;
+        }
       puts ("symlinkat failed");
       return 1;
     }
index 891b6e6..b62a507 100644 (file)
@@ -83,6 +83,11 @@ do_test (void)
   static const char symlinkcontent[] = "some-file";
   if (symlinkat (symlinkcontent, dir_fd, "another-file") != 0)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("symlinkat function not supported");
+          return 0;
+        }
       puts ("symlinkat failed");
       return 1;
     }
@@ -109,6 +114,11 @@ do_test (void)
   int n = readlinkat (dir_fd, "another-file", buf, sizeof (buf));
   if (n == -1)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("readlinkat function not supported");
+          return 0;
+        }
       puts ("readlinkat failed");
       return 1;
     }
index a7c0ec1..3b0f80b 100644 (file)
@@ -109,7 +109,12 @@ do_test (void)
       puts ("renameat with normal file descriptor succeeded");
       return 1;
     }
-  if (errno != ENOTDIR)
+  if (errno == ENOSYS)
+    {
+      puts ("renameat function not supported");
+      return 0;
+    }
+  else if (errno != ENOTDIR)
     {
       puts ("error for renameat with normal file descriptor not ENOTDIR");
       return 1;
index 1e98588..cefab9b 100644 (file)
@@ -107,6 +107,11 @@ do_test (void)
 
   if (symlinkat ("some-file", dir_fd, "another-file") != 0)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("symlinkat function not supported");
+          return 0;
+        }
       puts ("symlinkat failed");
       return 1;
     }
index c25443c..342e7d5 100644 (file)
@@ -140,6 +140,11 @@ do_test (void)
   /* Remove the file now.  */
   if (unlinkat (dir_fd, "some-file", 0) != 0)
     {
+      if (errno == ENOSYS)
+        {
+          puts ("unlinkat function not supported");
+          return 0;
+        }
       puts ("unlinkat failed");
       return 1;
     }