find: use sysconf(_SC_ARG_MAX) to determine the command-line size limit
The find utility uses a hardcoded value of 32 * 1024 as the limit of the command-line length when calling 'find -exec ... {} +'. This results in over 4 times more execve() calls than in coreutils' find. This patch uses the limit defined in system headers. Based on the patch by Bartosz Golaszewski <bartekgola@gmail.com>. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@@ -92,6 +92,7 @@ lib-y += skip_whitespace.o
|
||||
lib-y += speed_table.o
|
||||
lib-y += str_tolower.o
|
||||
lib-y += strrstr.o
|
||||
lib-y += sysconf.o
|
||||
lib-y += time.o
|
||||
lib-y += trim.o
|
||||
lib-y += u_signal_names.o
|
||||
|
16
libbb/sysconf.c
Normal file
16
libbb/sysconf.c
Normal file
@@ -0,0 +1,16 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Various system configuration helpers.
|
||||
*
|
||||
* Copyright (C) 2014 Bartosz Golaszewski <bartekgola@gmail.com>
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
#include "libbb.h"
|
||||
|
||||
#if defined _SC_ARG_MAX
|
||||
unsigned FAST_FUNC bb_arg_max(void)
|
||||
{
|
||||
return sysconf(_SC_ARG_MAX);
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user