Browse Source

use the newer versions of functions when available (fixes sparc which doesnt provide older versions at all)

Mike Frysinger 18 years ago
parent
commit
831219203b

+ 7 - 2
libc/sysdeps/linux/common/getegid.c

@@ -12,8 +12,13 @@
 
 libc_hidden_proto(getegid)
 
-#ifdef	__NR_getegid
-#define __NR___syscall_getegid __NR_getegid
+#if defined(__NR_getegid32)
+# undef __NR_getegid
+# define __NR_getegid __NR_getegid32
+_syscall0(gid_t, getegid);
+
+#elif defined(__NR_getegid)
+# define __NR___syscall_getegid __NR_getegid
 static inline _syscall0(int, __syscall_getegid);
 gid_t getegid(void)
 {

+ 9 - 3
libc/sysdeps/linux/common/geteuid.c

@@ -12,19 +12,25 @@
 
 libc_hidden_proto(geteuid)
 
-#ifdef	__NR_geteuid
-#define __NR___syscall_geteuid __NR_geteuid
+#if defined(__NR_geteuid32)
+# undef __NR_geteuid
+# define __NR_geteuid __NR_geteuid32
+_syscall0(uid_t, geteuid);
+
+#elif defined(__NR_geteuid)
+# define __NR___syscall_geteuid __NR_geteuid
 static inline _syscall0(int, __syscall_geteuid);
 uid_t geteuid(void)
 {
 	return (__syscall_geteuid());
 }
+
 #else
 libc_hidden_proto(getuid)
-
 uid_t geteuid(void)
 {
 	return (getuid());
 }
 #endif
+
 libc_hidden_def(geteuid)

+ 8 - 3
libc/sysdeps/linux/common/getresgid.c

@@ -10,10 +10,15 @@
 #include "syscalls.h"
 #include <unistd.h>
 
-#ifdef __NR_getresgid
+#if defined(__NR_getresgid32)
+# undef __NR_getresgid
+# define __NR_getresgid __NR_getresgid32
+_syscall3(int, getresgid, gid_t *, rgid, gid_t *, egid, gid_t *, sgid)
+
+#elif defined(__NR_getresgid)
 # define __NR___syscall_getresgid __NR_getresgid
-static inline _syscall3(int, __syscall_getresgid, __kernel_gid_t *, egid,
-		  __kernel_gid_t *, rgid, __kernel_gid_t *, sgid);
+static inline _syscall3(int, __syscall_getresgid, __kernel_gid_t *, rgid,
+		  __kernel_gid_t *, egid, __kernel_gid_t *, sgid);
 
 int getresgid(gid_t * rgid, gid_t * egid, gid_t * sgid)
 {

+ 6 - 1
libc/sysdeps/linux/common/getresuid.c

@@ -10,7 +10,12 @@
 #include "syscalls.h"
 #include <unistd.h>
 
-#ifdef __NR_getresuid
+#if defined(__NR_getresuid32)
+# undef __NR_getresuid
+# define __NR_getresuid __NR_getresuid32
+_syscall3(int, getresuid, uid_t *, ruid, uid_t *, euid, uid_t *, suid)
+
+#elif defined(__NR_getresuid)
 # define __NR___syscall_getresuid __NR_getresuid
 static inline _syscall3(int, __syscall_getresuid, __kernel_uid_t *, ruid,
 		  __kernel_uid_t *, euid, __kernel_uid_t *, suid);