summary refs log tree commit diff
path: root/sysdeps/posix/fpathconf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/posix/fpathconf.c')
-rw-r--r--sysdeps/posix/fpathconf.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/sysdeps/posix/fpathconf.c b/sysdeps/posix/fpathconf.c
index 1a2c3742e9..31e1d4bbfa 100644
--- a/sysdeps/posix/fpathconf.c
+++ b/sysdeps/posix/fpathconf.c
@@ -45,7 +45,6 @@ __fpathconf (fd, name)
 #ifdef	LINK_MAX
       return LINK_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -53,7 +52,6 @@ __fpathconf (fd, name)
 #ifdef	MAX_CANON
       return MAX_CANON;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -61,7 +59,6 @@ __fpathconf (fd, name)
 #ifdef	MAX_INPUT
       return MAX_INPUT;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -69,14 +66,21 @@ __fpathconf (fd, name)
 #ifdef	NAME_MAX
       {
 	struct statfs buf;
+	int save_errno = errno;
 
 	if (__fstatfs (fd, &buf) < 0)
-	  return errno == ENOSYS ? NAME_MAX : -1;
+	  {
+	    if (errno == ENOSYS)
+	      {
+		errno = save_errno;
+		return NAME_MAX;
+	      }
+	    return -1;
+	  }
 	else
 	  return buf.f_namelen;
       }
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -84,7 +88,6 @@ __fpathconf (fd, name)
 #ifdef	PATH_MAX
       return PATH_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -92,7 +95,6 @@ __fpathconf (fd, name)
 #ifdef	PIPE_BUF
       return PIPE_BUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -142,13 +144,9 @@ __fpathconf (fd, name)
 #ifdef	SOCK_MAXBUF
       return SOCK_MAXBUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
     }
-
-  __set_errno (ENOSYS);
-  return -1;
 }
 
 weak_alias (__fpathconf, fpathconf)