summaryrefslogtreecommitdiff
path: root/Src/Builtins/rlimits.c
diff options
context:
space:
mode:
authorFrank Terbeck <ft@bewatermyfriend.org>2011-12-01 10:02:04 +0100
committerFrank Terbeck <ft@bewatermyfriend.org>2011-12-01 10:02:04 +0100
commitd8da5ea2f2bc5f837d0b364fff2636ebdb2f90ca (patch)
tree9fd9a57486ac4702608d92088ffd91f52971244f /Src/Builtins/rlimits.c
parentaf2bb4fdb09414d21922d3fafe4e3a0ac1332f01 (diff)
parent9d71f4c207fb34e8d64af0443c83231b1cc3b494 (diff)
downloadzsh-d8da5ea2f2bc5f837d0b364fff2636ebdb2f90ca.tar.gz
zsh-d8da5ea2f2bc5f837d0b364fff2636ebdb2f90ca.zip
Merge commit 'zsh-4.3.13' into debian
Diffstat (limited to 'Src/Builtins/rlimits.c')
-rw-r--r--Src/Builtins/rlimits.c52
1 files changed, 41 insertions, 11 deletions
diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c
index ffcb92052..670516169 100644
--- a/Src/Builtins/rlimits.c
+++ b/Src/Builtins/rlimits.c
@@ -36,6 +36,7 @@ enum {
ZLIMTYPE_MEMORY,
ZLIMTYPE_NUMBER,
ZLIMTYPE_TIME,
+ ZLIMTYPE_MICROSECONDS,
ZLIMTYPE_UNKNOWN
};
@@ -101,9 +102,9 @@ showlimitvalue(int lim, rlim_t val)
printf("%lld\n", val);
# else
# ifdef RLIM_T_IS_UNSIGNED
- printf("%lu\n", val);
+ printf("%lu\n", (unsigned long)val);
# else
- printf("%ld\n", val);
+ printf("%ld\n", (long)val);
# endif /* RLIM_T_IS_UNSIGNED */
# endif /* RLIM_T_IS_LONG_LONG */
# endif /* RLIM_T_IS_QUAD_T */
@@ -113,10 +114,37 @@ showlimitvalue(int lim, rlim_t val)
seconds. */
printf("%d:%02d:%02d\n", (int)(val / 3600),
(int)(val / 60) % 60, (int)(val % 60));
+ } else if (limtype[lim] == ZLIMTYPE_MICROSECONDS) {
+ /* microseconds */
+# ifdef RLIM_T_IS_QUAD_T
+ printf("%qdus\n", val);
+# else
+# ifdef RLIM_T_IS_LONG_LONG
+ printf("%lldus\n", val);
+# else
+# ifdef RLIM_T_IS_UNSIGNED
+ printf("%luus\n", (unsigned long)val);
+# else
+ printf("%ldus\n", (long)val);
+# endif /* RLIM_T_IS_UNSIGNED */
+# endif /* RLIM_T_IS_LONG_LONG */
+# endif /* RLIM_T_IS_QUAD_T */
} else if (limtype[lim] == ZLIMTYPE_NUMBER ||
limtype[lim] == ZLIMTYPE_UNKNOWN) {
/* pure numeric resource */
- printf("%d\n", (int)val);
+# ifdef RLIM_T_IS_QUAD_T
+ printf("%qd\n", val);
+# else
+# ifdef RLIM_T_IS_LONG_LONG
+ printf("%lld\n", val);
+# else
+# ifdef RLIM_T_IS_UNSIGNED
+ printf("%lu\n", (unsigned long)val);
+# else
+ printf("%ld\n", (long)val);
+# endif /* RLIM_T_IS_UNSIGNED */
+# endif /* RLIM_T_IS_LONG_LONG */
+# endif /* RLIM_T_IS_QUAD_T */
} else if (val >= 1024L * 1024L)
/* memory resource -- display with `K' or `M' modifier */
# ifdef RLIM_T_IS_QUAD_T
@@ -125,18 +153,18 @@ showlimitvalue(int lim, rlim_t val)
printf("%qdkB\n", val / 1024L);
# else
# ifdef RLIM_T_IS_LONG_LONG
- printf("%lldMB\n", val / (1024L * 1024L));
+ printf("%lldMB\n", val / (1024L * 1024L));
else
printf("%lldkB\n", val / 1024L);
# else
# ifdef RLIM_T_IS_UNSIGNED
- printf("%luMB\n", val / (1024L * 1024L));
+ printf("%luMB\n", (unsigned long)(val / (1024L * 1024L)));
else
- printf("%lukB\n", val / 1024L);
+ printf("%lukB\n", (unsigned long)(val / 1024L));
# else
- printf("%ldMB\n", val / (1024L * 1024L));
+ printf("%ldMB\n", (long)val / (1024L * 1024L));
else
- printf("%ldkB\n", val / 1024L);
+ printf("%ldkB\n", (long)val / 1024L);
# endif /* RLIM_T_IS_UNSIGNED */
# endif /* RLIM_T_IS_LONG_LONG */
# endif /* RLIM_T_IS_QUAD_T */
@@ -370,9 +398,9 @@ printulimit(char *nam, int lim, int hard, int head)
printf("%lld\n", limit);
# else
# ifdef RLIM_T_IS_UNSIGNED
- printf("%lu\n", limit);
+ printf("%lu\n", (unsigned long)limit);
# else
- printf("%ld\n", limit);
+ printf("%ld\n", (long)limit);
# endif /* RLIM_T_IS_UNSIGNED */
# endif /* RLIM_T_IS_LONG_LONG */
# endif /* RLIM_T_IS_QUAD_T */
@@ -539,7 +567,9 @@ bin_limit(char *nam, char **argv, Options ops, UNUSED(int func))
return 1;
}
}
- } else if (limtype[lim] == ZLIMTYPE_NUMBER || limtype[lim] == ZLIMTYPE_UNKNOWN) {
+ } else if (limtype[lim] == ZLIMTYPE_NUMBER ||
+ limtype[lim] == ZLIMTYPE_UNKNOWN ||
+ limtype[lim] == ZLIMTYPE_MICROSECONDS) {
/* pure numeric resource -- only a straight decimal number is
permitted. */
char *t = s;