From f7eb91e7952553dc24a734030a6c78f8dc6ed455 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 15 Feb 2011 05:42:27 -0500 Subject: [PATCH] fix getrlimit handling on 32-bit systems, and ease porting to 64-bit --- arch/i386/syscall.h | 2 ++ src/misc/getrlimit.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/i386/syscall.h b/arch/i386/syscall.h index fcdae241..8df9b1b9 100644 --- a/arch/i386/syscall.h +++ b/arch/i386/syscall.h @@ -500,6 +500,8 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5, #define __NR_fstatat __NR_fstatat64 #define __NR_pread __NR_pread64 #define __NR_pwrite __NR_pwrite64 +#undef __NR_getrlimit +#define __NR_getrlimit __NR_ugetrlimit #define __SC_socket 1 #define __SC_bind 2 diff --git a/src/misc/getrlimit.c b/src/misc/getrlimit.c index db25943b..84a659d4 100644 --- a/src/misc/getrlimit.c +++ b/src/misc/getrlimit.c @@ -5,10 +5,10 @@ int getrlimit(int resource, struct rlimit *rlim) { long k_rlim[2]; - if (syscall2(__NR_ugetrlimit, resource, (long)k_rlim) < 0) + if (syscall2(__NR_getrlimit, resource, (long)k_rlim) < 0) return -1; - rlim->rlim_cur = k_rlim[0]; - rlim->rlim_max = k_rlim[1]; + rlim->rlim_cur = k_rlim[0] == -1 ? -1 : (unsigned long)k_rlim[0]; + rlim->rlim_max = k_rlim[1] == -1 ? -1 : (unsigned long)k_rlim[1]; return 0; }