From f12ca5fd8ee8922c6950a398e21286f2d59a428a Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 4 Apr 2005 10:00:25 +0000 Subject: 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 --- ChangeLog | 3 +++ Src/Builtins/rlimits.c | 4 ++-- Src/watch.c | 13 +++++++++---- configure.ac | 27 +++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index d25f9fd2d..4488e135f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-04-04 Peter Stephenson + * Toby Peterson: 21083: On Mac OS X 10.4, the AS and RSS rlimits + are the same. Also utmpx doesn't have ut_name. + * 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 6fe77afcd..9b2c22bdd 100644 --- a/Src/watch.c +++ b/Src/watch.c @@ -103,6 +103,9 @@ # ifdef HAVE_STRUCT_UTMPX_UT_HOST # define WATCH_UTMP_UT_HOST 1 # endif +# ifdef __APPLE__ +# define ut_name ut_user +# endif #endif #if !defined(WATCH_STRUCT_UTMP) && defined(HAVE_STRUCT_UTMP) && defined(REAL_UTMP_FILE) @@ -491,8 +494,6 @@ dowatch(void) int uct, wct; s = watch; - if (!(fmt = getsparam("WATCHFMT"))) - fmt = DEFAULT_WATCHFMT; holdintr(); if (!wtab) { @@ -542,6 +543,9 @@ dowatch(void) free(utab); return; } + queue_signals(); + if (!(fmt = getsparam("WATCHFMT"))) + fmt = DEFAULT_WATCHFMT; while ((uct || wct) && !errflag) if (!uct || (wct && ucmp(uptr, wptr) > 0)) wct--, watchlog(0, wptr++, s, fmt); @@ -549,6 +553,7 @@ dowatch(void) uct--, watchlog(1, uptr++, s, fmt); else uptr++, wptr++, wct--, uct--; + unqueue_signals(); free(wtab); wtab = utab; wtabsz = utabsz; @@ -557,7 +562,7 @@ dowatch(void) /**/ int -bin_log(char *nam, char **argv, char *ops, int func) +bin_log(UNUSED(char *nam), UNUSED(char **argv), UNUSED(Options ops), UNUSED(int func)) { if (!watch) return 1; @@ -579,7 +584,7 @@ void dowatch(void) /**/ int -bin_log(char *nam, char **argv, char *ops, int func) +bin_log(char *nam, char **argv, Options ops, int func) { return bin_notavail(nam, argv, ops, func); } diff --git a/configure.ac b/configure.ac index dcc0acf96..da38620d0 100644 --- a/configure.ac +++ b/configure.ac @@ -1501,6 +1501,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 +#ifdef HAVE_SYS_TIME_H +#include +#endif +#include +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 -------------------------------------------- -- cgit 1.4.1