summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2005-04-04 09:58:44 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2005-04-04 09:58:44 +0000
commit8776b52d7d4c9adc5774a231e3a4a8ecfd8bad7b (patch)
tree638b7fdd0439936514d444badd61e0f61611cd4e
parent82c9c7a42351c5b674153149c761eaa0103cd89e (diff)
downloadzsh-8776b52d7d4c9adc5774a231e3a4a8ecfd8bad7b.tar.gz
zsh-8776b52d7d4c9adc5774a231e3a4a8ecfd8bad7b.zip
Toby Peterson: 21083: RLIMIT_AS and RLIMIT_RSS are the same in Mac OX X
ut_name needs to be ut_user in struct utmpx
-rw-r--r--ChangeLog4
-rw-r--r--Src/Builtins/rlimits.c4
-rw-r--r--Src/watch.c8
-rw-r--r--configure.ac27
4 files changed, 41 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d31840ce..76cf675bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2005-04-04 Peter Stephenson <pws@csr.com>
+ * Toby Peterson: 21083: On Mac OS X 10.4, the AS and RSS rlimits
+ are the same. Also utmpx doesn't have ut_name. In fact, it
+ doesn't seem to have it on any system.
+
* Dan Nelson: 21082: Src/exec.c, Test/A01grammar.ztst: fix zsh -c
exit status on parse error.
diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c
index 9256f25b2..922a182a2 100644
--- a/Src/Builtins/rlimits.c
+++ b/Src/Builtins/rlimits.c
@@ -242,7 +242,7 @@ printulimit(char *nam, int lim, int hard, int head)
# endif /* HAVE_RLIMIT_MEMLOCK */
/* If RLIMIT_VMEM and RLIMIT_RSS are defined and equal, avoid *
* duplicate case statement. Observed on QNX Neutrino 6.1.0. */
-# if defined(HAVE_RLIMIT_RSS) && !defined(RLIMIT_VMEM_IS_RSS)
+# if defined(HAVE_RLIMIT_RSS) && !defined(RLIMIT_VMEM_IS_RSS) && !defined(RLIMIT_RSS_IS_AS)
case RLIMIT_RSS:
if (head)
printf("-m: resident set size (kbytes) ");
@@ -834,7 +834,7 @@ bin_ulimit(char *name, char **argv, UNUSED(Options ops), UNUSED(int func))
case RLIMIT_VMEM:
# endif /* HAVE_RLIMIT_VMEM */
/* ditto RLIMIT_VMEM and RLIMIT_AS */
-# if defined(HAVE_RLIMIT_AS) && !defined(RLIMIT_VMEM_IS_AS)
+# if defined(HAVE_RLIMIT_AS) && !defined(RLIMIT_VMEM_IS_AS) && !defined(RLIMIT_RSS_IS_AS)
case RLIMIT_AS:
# endif /* HAVE_RLIMIT_AS */
# ifdef HAVE_RLIMIT_AIO_MEM
diff --git a/Src/watch.c b/Src/watch.c
index c12625c85..402b160fe 100644
--- a/Src/watch.c
+++ b/Src/watch.c
@@ -87,6 +87,14 @@
#if !defined(WATCH_STRUCT_UTMP) && defined(HAVE_STRUCT_UTMPX) && defined(REAL_UTMPX_FILE)
# define WATCH_STRUCT_UTMP struct utmpx
+/*
+ * In utmpx, the ut_name field is replaced by ut_user.
+ * Howver, on some systems ut_name may already be defined this
+ * way for the purposes of utmp.
+ */
+# ifndef ut_name
+# define ut_name ut_user
+# endif
# ifdef HAVE_STRUCT_UTMPX_UT_XTIME
# undef ut_time
# define ut_time ut_xtime
diff --git a/configure.ac b/configure.ac
index c97fbacf6..8b967f365 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1502,6 +1502,33 @@ if test $zsh_cv_rlimit_vmem_is_as = yes; then
fi
+AH_TEMPLATE([RLIMIT_RSS_IS_AS],
+[Define to 1 if RLIMIT_RSS and RLIMIT_AS both exist and are equal.])
+AC_CACHE_CHECK(if RLIMIT_RSS and RLIMIT_AS are the same,
+zsh_cv_rlimit_rss_is_as,
+[AC_TRY_RUN([
+#include <sys/types.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <sys/resource.h>
+int main()
+{
+int ret = 1;
+#if defined(HAVE_RLIMIT_RSS) && defined(HAVE_RLIMIT_AS)
+if (RLIMIT_AS == RLIMIT_RSS) ret = 0;
+#endif
+return ret;
+}],
+ zsh_cv_rlimit_rss_is_as=yes,
+ zsh_cv_rlimit_rss_is_as=no,
+ zsh_cv_rlimit_rss_is_as=no)])
+
+if test $zsh_cv_rlimit_rss_is_as = yes; then
+ AC_DEFINE(RLIMIT_RSS_IS_AS)
+fi
+
+
dnl --------------------------------------------
dnl Check for members of struct rusage
dnl --------------------------------------------