#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Finding Utilities"

config CONFIG_FIND
	bool "find"
	default n
	help
	  find is used to search your system to find specified files.

config CONFIG_FEATURE_FIND_MTIME
	bool "  Enable modified time matching (-mtime) option"
	default y
	depends on CONFIG_FIND
	help
	  Allow searching based on the modification time of
	  files.

config CONFIG_FEATURE_FIND_PERM
	bool "  Enable permissions matching (-perm) option"
	default y
	depends on CONFIG_FIND
	help
	  Enable searching based on file permissions.

config CONFIG_FEATURE_FIND_TYPE
	bool "  Enable filetype matching (-type) option"
	default y
	depends on CONFIG_FIND
	help
	  Enable searching based on file type (file,
	  directory, socket, device, etc.).

config CONFIG_FEATURE_FIND_XDEV
	bool "  Enable stay in filesystem (-xdev) option"
	default y
	depends on CONFIG_FIND
	help
	  This option will allow find to restrict searches to a single
	  filesystem.

config CONFIG_FEATURE_FIND_NEWER
	bool "  Enable -newer option for comparing file mtimes"
	default y
	depends on CONFIG_FIND
	help
	  Support the 'find -newer' option for finding any files which have
	  a modified time that is more recent than the specified FILE.

config CONFIG_FEATURE_FIND_INUM
	bool "  Enable inode number matching (-inum) option"
	default y
	depends on CONFIG_FIND
	help
	  Support the 'find -inum' option for searching by inode number.

config CONFIG_GREP
	bool "grep"
	default n
	help
	  grep is used to search files for a specified pattern.

config CONFIG_FEATURE_GREP_EGREP_ALIAS
	bool "  Support extended regular expressions (egrep & grep -E)"
	default y
	depends on CONFIG_GREP
	help
	  Enabled support for extended regular expressions.  Extended
	  regular expressions allow for alternation (foo|bar), grouping,
	  and various repetition operators.

config CONFIG_FEATURE_GREP_FGREP_ALIAS
	bool "  Alias fgrep to grep -f"
	default y
	depends on CONFIG_GREP
	help
          fgrep sees the search pattern as a normal string rather than
	  regular expressions.
	  grep -f is always builtin, this just creates the fgrep alias.

config CONFIG_FEATURE_GREP_CONTEXT
	bool "  Enable before and after context flags (-A, -B and -C)"
	default y
	depends on CONFIG_GREP
	help
	  Print the specified number of leading (-B) and/or trailing (-A)
	  context surrounding our matching lines.
	  Print the specified number of context lines (-C).

config CONFIG_XARGS
	bool "xargs"
	default n
	help
	  xargs is used to execute a specified command on
	  every item from standard input.

config CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
	bool "  Enable prompt and confirmation option -p"
	default n
	depends on CONFIG_XARGS
	help
	  Support prompt the user about whether to run each command
	  line and read a line from the terminal.

config CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
	bool "  Enable support single and double quotes and backslash"
	default n
	depends on CONFIG_XARGS
	help
	  Default xargs unsupport single and double quotes
	  and backslash for can use aruments with spaces.

config CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
	bool "  Enable support options -x"
	default n
	depends on CONFIG_XARGS
	help
	  Enable support exit if the size (see the -s or -n option)
	  is exceeded.

config CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
	bool "  Enable options -0"
	default n
	depends on CONFIG_XARGS
	help
	  Enable input filenames are terminated by a null character
	  instead of by whitespace, and the quotes and backslash
	  are not special.

endmenu
