diff options
-rw-r--r-- | include/libbb.h | 7 | ||||
-rw-r--r-- | libbb/sysconf.c | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/include/libbb.h b/include/libbb.h index cc2bea32d..17a0089d8 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -731,11 +731,14 @@ extern void *xmalloc_open_read_close(const char *filename, size_t *maxsz_p) FAST /* Never returns NULL */ extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; -#if defined ARG_MAX +#if defined(ARG_MAX) && (ARG_MAX >= 60*1024 || !defined(_SC_ARG_MAX)) +/* Use _constant_ maximum if: defined && (big enough || no variable one exists) */ # define bb_arg_max() ((unsigned)ARG_MAX) -#elif defined _SC_ARG_MAX +#elif defined(_SC_ARG_MAX) +/* Else use variable one (a bit more expensive) */ unsigned bb_arg_max(void) FAST_FUNC; #else +/* If all else fails */ # define bb_arg_max() ((unsigned)(32 * 1024)) #endif unsigned bb_clk_tck(void) FAST_FUNC; diff --git a/libbb/sysconf.c b/libbb/sysconf.c index 031901980..cfad9cdc0 100644 --- a/libbb/sysconf.c +++ b/libbb/sysconf.c @@ -8,7 +8,7 @@ */ #include "libbb.h" -#if !defined(ARG_MAX) && defined(_SC_ARG_MAX) +#if !defined(bb_arg_max) unsigned FAST_FUNC bb_arg_max(void) { return sysconf(_SC_ARG_MAX); |