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

menu "Coreutils"

INSERT

config CAL
	bool "cal"
	default y
	help
	  cal is used to display a monthly calender.

config CATV
	bool "catv"
	default y
	help
	  Display nonprinting characters as escape sequences (like some
	  implementations' cat -v option).

config CHGRP
	bool "chgrp"
	default y
	help
	  chgrp is used to change the group ownership of files.

config CHMOD
	bool "chmod"
	default y
	help
	  chmod is used to change the access permission of files.

config CHOWN
	bool "chown"
	default y
	help
	  chown is used to change the user and/or group ownership
	  of files.

config FEATURE_CHOWN_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on CHOWN && LONG_OPTS
	help
	  Enable use of long options

config CHROOT
	bool "chroot"
	default y
	help
	  chroot is used to change the root directory and run a command.
	  The default command is `/bin/sh'.

config CKSUM
	bool "cksum"
	default y
	help
	  cksum is used to calculate the CRC32 checksum of a file.

config COMM
	bool "comm"
	default y
	help
	  comm is used to compare two files line by line and return
	  a three-column output.

config CP
	bool "cp"
	default y
	help
	  cp is used to copy files and directories.

config FEATURE_CP_LONG_OPTIONS
	bool "Enable long options for cp"
	default y
	depends on CP && LONG_OPTS
	help
	  Enable long options for cp.
	  Also add support for --parents option.

config CUT
	bool "cut"
	default y
	help
	  cut is used to print selected parts of lines from
	  each file to stdout.

config DD
	bool "dd"
	default y
	help
	  dd copies a file (from standard input to standard output,
	  by default) using specific input and output blocksizes,
	  while optionally performing conversions on it.

config FEATURE_DD_SIGNAL_HANDLING
	bool "Enable DD signal handling for status reporting"
	default y
	depends on DD
	help
	  Sending a SIGUSR1 signal to a running `dd' process makes it
	  print to standard error the number of records read and written
	  so far, then to resume copying.

	  $ dd if=/dev/zero of=/dev/null&
	  $ pid=$! kill -USR1 $pid; sleep 1; kill $pid
	  10899206+0 records in
	  10899206+0 records out

config FEATURE_DD_THIRD_STATUS_LINE
	bool "Enable the third status line upon signal"
	default y
	depends on DD && FEATURE_DD_SIGNAL_HANDLING
	help
	  Displays a coreutils-like third status line with transferred bytes,
	  elapsed time and speed.

config FEATURE_DD_IBS_OBS
	bool "Enable ibs, obs and conv options"
	default y
	depends on DD
	help
	  Enables support for writing a certain number of bytes in and out,
	  at a time, and performing conversions on the data stream.

config DF
	bool "df"
	default y
	help
	  df reports the amount of disk space used and available
	  on filesystems.

config FEATURE_DF_FANCY
	bool "Enable -a, -i, -B"
	default y
	depends on DF
	help
	  This option enables -a, -i and -B.

	    -a Show all filesystems
	    -i Inodes
	    -B <SIZE> Blocksize

config DIRNAME
	bool "dirname"
	default y
	help
	  dirname is used to strip a non-directory suffix from
	  a file name.

config DOS2UNIX
	bool "dos2unix/unix2dos"
	default y
	help
	  dos2unix is used to convert a text file from DOS format to
	  UNIX format, and vice versa.

config UNIX2DOS
	bool
	default y
	depends on DOS2UNIX
	help
	  unix2dos is used to convert a text file from UNIX format to
	  DOS format, and vice versa.

config DU
	bool "du (default blocksize of 512 bytes)"
	default y
	help
	  du is used to report the amount of disk space used
	  for specified files.

config FEATURE_DU_DEFAULT_BLOCKSIZE_1K
	bool "Use a default blocksize of 1024 bytes (1K)"
	default y
	depends on DU
	help
	  Use a blocksize of (1K) instead of the default 512b.

config ECHO
	bool "echo (basic SuSv3 version taking no options)"
	default y
	help
	  echo is used to print a specified string to stdout.

# this entry also appears in shell/Config.in, next to the echo builtin
config FEATURE_FANCY_ECHO
	bool "Enable echo options (-n and -e)"
	default y
	depends on ECHO || ASH_BUILTIN_ECHO || HUSH
	help
	  This adds options (-n and -e) to echo.

config ENV
	bool "env"
	default y
	help
	  env is used to set an environment variable and run
	  a command; without options it displays the current
	  environment.

config FEATURE_ENV_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on ENV && LONG_OPTS
	help
	  Support long options for the env applet.

config EXPAND
	bool "expand"
	default y
	help
	  By default, convert all tabs to spaces.

config FEATURE_EXPAND_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on EXPAND && LONG_OPTS
	help
	  Support long options for the expand applet.

config EXPR
	bool "expr"
	default y
	help
	  expr is used to calculate numbers and print the result
	  to standard output.

config EXPR_MATH_SUPPORT_64
	bool "Extend Posix numbers support to 64 bit"
	default y
	depends on EXPR
	help
	  Enable 64-bit math support in the expr applet. This will make
	  the applet slightly larger, but will allow computation with very
	  large numbers.

config FALSE
	bool "false"
	default y
	help
	  false returns an exit code of FALSE (1).

config FOLD
	bool "fold"
	default y
	help
	  Wrap text to fit a specific width.

config FSYNC
	bool "fsync"
	default y
	help
	  fsync is used to flush file-related cached blocks to disk.

config HEAD
	bool "head"
	default y
	help
	  head is used to print the first specified number of lines
	  from files.

config FEATURE_FANCY_HEAD
	bool "Enable head options (-c, -q, and -v)"
	default y
	depends on HEAD
	help
	  This enables the head options (-c, -q, and -v).

config HOSTID
	bool "hostid"
	default y
	help
	  hostid prints the numeric identifier (in hexadecimal) for
	  the current host.

config INSTALL
	bool "install"
	default y
	help
	  Copy files and set attributes.

config FEATURE_INSTALL_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on INSTALL && LONG_OPTS
	help
	  Support long options for the install applet.

####config LENGTH
####	bool "length"
####	default y
####	help
####	  length is used to print out the length of a specified string.

config LN
	bool "ln"
	default y
	help
	  ln is used to create hard or soft links between files.

config LOGNAME
	bool "logname"
	default y
	help
	  logname is used to print the current user's login name.

config LS
	bool "ls"
	default y
	help
	  ls is used to list the contents of directories.

config FEATURE_LS_FILETYPES
	bool "Enable filetyping options (-p and -F)"
	default y
	depends on LS
	help
	  Enable the ls options (-p and -F).

config FEATURE_LS_FOLLOWLINKS
	bool "Enable symlinks dereferencing (-L)"
	default y
	depends on LS
	help
	  Enable the ls option (-L).

config FEATURE_LS_RECURSIVE
	bool "Enable recursion (-R)"
	default y
	depends on LS
	help
	  Enable the ls option (-R).

config FEATURE_LS_SORTFILES
	bool "Sort the file names"
	default y
	depends on LS
	help
	  Allow ls to sort file names alphabetically.

config FEATURE_LS_TIMESTAMPS
	bool "Show file timestamps"
	default y
	depends on LS
	help
	  Allow ls to display timestamps for files.

config FEATURE_LS_USERNAME
	bool "Show username/groupnames"
	default y
	depends on LS
	help
	  Allow ls to display username/groupname for files.

config FEATURE_LS_COLOR
	bool "Allow use of color to identify file types"
	default y
	depends on LS && LONG_OPTS
	help
	  This enables the --color option to ls.

config FEATURE_LS_COLOR_IS_DEFAULT
	bool "Produce colored ls output by default"
	default y
	depends on FEATURE_LS_COLOR
	help
	  Saying yes here will turn coloring on by default,
	  even if no "--color" option is given to the ls command.
	  This is not recommended, since the colors are not
	  configurable, and the output may not be legible on
	  many output screens.

config MD5SUM
	bool "md5sum"
	default y
	help
	  md5sum is used to print or check MD5 checksums.

config MKDIR
	bool "mkdir"
	default y
	help
	  mkdir is used to create directories with the specified names.

config FEATURE_MKDIR_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on MKDIR && LONG_OPTS
	help
	  Support long options for the mkdir applet.

config MKFIFO
	bool "mkfifo"
	default y
	help
	  mkfifo is used to create FIFOs (named pipes).
	  The `mknod' program can also create FIFOs.

config MKNOD
	bool "mknod"
	default y
	help
	  mknod is used to create FIFOs or block/character special
	  files with the specified names.

config MV
	bool "mv"
	default y
	help
	  mv is used to move or rename files or directories.

config FEATURE_MV_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on MV && LONG_OPTS
	help
	  Support long options for the mv applet.

config NICE
	bool "nice"
	default y
	help
	  nice runs a program with modified scheduling priority.

config NOHUP
	bool "nohup"
	default y
	help
	  run a command immune to hangups, with output to a non-tty.

config OD
	bool "od"
	default y
	help
	  od is used to dump binary files in octal and other formats.

config PRINTENV
	bool "printenv"
	default y
	help
	  printenv is used to print all or part of environment.

config PRINTF
	bool "printf"
	default y
	help
	  printf is used to format and print specified strings.
	  It's similar to `echo' except it has more options.

config PWD
	bool "pwd"
	default y
	help
	  pwd is used to print the current directory.

config READLINK
	bool "readlink"
	default y
	help
	  This program reads a symbolic link and returns the name
	  of the file it points to

config FEATURE_READLINK_FOLLOW
	bool "Enable canonicalization by following all symlinks (-f)"
	default y
	depends on READLINK
	help
	  Enable the readlink option (-f).

config REALPATH
	bool "realpath"
	default y
	help
	  Return the canonicalized absolute pathname.
	  This isn't provided by GNU shellutils, but where else does it belong.

config RM
	bool "rm"
	default y
	help
	  rm is used to remove files or directories.

config RMDIR
	bool "rmdir"
	default y
	help
	  rmdir is used to remove empty directories.

config FEATURE_RMDIR_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on RMDIR && LONG_OPTS
	help
	  Support long options for the rmdir applet, including
	  --ignore-fail-on-non-empty for compatibility with GNU rmdir.

config SEQ
	bool "seq"
	default y
	help
	  print a sequence of numbers

config SHA1SUM
	bool "sha1sum"
	default y
	help
	  Compute and check SHA1 message digest

config SHA256SUM
	bool "sha256sum"
	default y
	help
	  Compute and check SHA256 message digest

config SHA512SUM
	bool "sha512sum"
	default y
	help
	  Compute and check SHA512 message digest

config SLEEP
	bool "sleep"
	default y
	help
	  sleep is used to pause for a specified number of seconds.
	  It comes in 3 versions:
	  - small: takes one integer parameter
	  - fancy: takes multiple integer arguments with suffixes:
	    sleep 1d 2h 3m 15s
	  - fancy with fractional numbers:
	    sleep 2.3s 4.5h sleeps for 16202.3 seconds
	  Last one is "the most compatible" with coreutils sleep,
	  but it adds around 1k of code.

config FEATURE_FANCY_SLEEP
	bool "Enable multiple arguments and s/m/h/d suffixes"
	default y
	depends on SLEEP
	help
	  Allow sleep to pause for specified minutes, hours, and days.

config FEATURE_FLOAT_SLEEP
	bool "Enable fractional arguments"
	default y
	depends on FEATURE_FANCY_SLEEP
	help
	  Allow for fractional numeric parameters.

config SORT
	bool "sort"
	default y
	help
	  sort is used to sort lines of text in specified files.

config FEATURE_SORT_BIG
	bool "Full SuSv3 compliant sort (support -ktcsbdfiozgM)"
	default y
	depends on SORT
	help
	  Without this, sort only supports -r, -u, and an integer version
	  of -n. Selecting this adds sort keys, floating point support, and
	  more. This adds a little over 3k to a nonstatic build on x86.

	  The SuSv3 sort standard is available at:
	  http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html

config SPLIT
	bool "split"
	default y
	help
	  split a file into pieces.

config FEATURE_SPLIT_FANCY
	bool "Fancy extensions"
	default y
	depends on SPLIT
	help
	  Add support for features not required by SUSv3.
	  Supports additional suffixes 'b' for 512 bytes,
	  'g' for 1GiB for the -b option.

config STAT
	bool "stat"
	default y
	select PLATFORM_LINUX # statfs()
	help
	  display file or filesystem status.

config FEATURE_STAT_FORMAT
	bool "Enable custom formats (-c)"
	default y
	depends on STAT
	help
	  Without this, stat will not support the '-c format' option where
	  users can pass a custom format string for output. This adds about
	  7k to a nonstatic build on amd64.

config STTY
	bool "stty"
	default y
	help
	  stty is used to change and print terminal line settings.

config SUM
	bool "sum"
	default y
	help
	  checksum and count the blocks in a file

config SYNC
	bool "sync"
	default y
	help
	  sync is used to flush filesystem buffers.

config TAC
	bool "tac"
	default y
	help
	  tac is used to concatenate and print files in reverse.

config TAIL
	bool "tail"
	default y
	help
	  tail is used to print the last specified number of lines
	  from files.

config FEATURE_FANCY_TAIL
	bool "Enable extra tail options (-q, -s, -v, and -F)"
	default y
	depends on TAIL
	help
	  The options (-q, -s, and -v) are provided by GNU tail, but
	  are not specific in the SUSv3 standard.

	    -q      Never output headers giving file names
	    -s SEC  Wait SEC seconds between reads with -f
	    -v      Always output headers giving file names

config TEE
	bool "tee"
	default y
	help
	  tee is used to read from standard input and write
	  to standard output and files.

config FEATURE_TEE_USE_BLOCK_IO
	bool "Enable block I/O (larger/faster) instead of byte I/O"
	default y
	depends on TEE
	help
	  Enable this option for a faster tee, at expense of size.

config TRUE
	bool "true"
	default y
	help
	  true returns an exit code of TRUE (0).

config TTY
	bool "tty"
	default y
	help
	  tty is used to print the name of the current terminal to
	  standard output.

config UNAME
	bool "uname"
	default y
	help
	  uname is used to print system information.

config UNEXPAND
	bool "unexpand"
	default y
	help
	  By default, convert only leading sequences of blanks to tabs.

config FEATURE_UNEXPAND_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on UNEXPAND && LONG_OPTS
	help
	  Support long options for the unexpand applet.

config UNIQ
	bool "uniq"
	default y
	help
	  uniq is used to remove duplicate lines from a sorted file.

config USLEEP
	bool "usleep"
	default y
	help
	  usleep is used to pause for a specified number of microseconds.

config UUDECODE
	bool "uudecode"
	default y
	help
	  uudecode is used to decode a uuencoded file.

config UUENCODE
	bool "uuencode"
	default y
	help
	  uuencode is used to uuencode a file.

config WC
	bool "wc"
	default y
	help
	  wc is used to print the number of bytes, words, and lines,
	  in specified files.

config FEATURE_WC_LARGE
	bool "Support very large files in wc"
	default y
	depends on WC
	help
	  Use "unsigned long long" in wc for counter variables.

config WHOAMI
	bool "whoami"
	default y
	help
	  whoami is used to print the username of the current
	  user id (same as id -un).

config YES
	bool "yes"
	default y
	help
	  yes is used to repeatedly output a specific string, or
	  the default string `y'.

comment "Common options for cp and mv"
	depends on CP || MV

config FEATURE_PRESERVE_HARDLINKS
	bool "Preserve hard links"
	default y
	depends on CP || MV
	help
	  Allow cp and mv to preserve hard links.

comment "Common options for ls, more and telnet"
	depends on LS || MORE || TELNET

config FEATURE_AUTOWIDTH
	bool "Calculate terminal & column widths"
	default y
	depends on LS || MORE || TELNET
	help
	  This option allows utilities such as 'ls', 'more' and 'telnet'
	  to determine the width of the screen, which can allow them to
	  display additional text or avoid wrapping text onto the next line.
	  If you leave this disabled, your utilities will be especially
	  primitive and will be unable to determine the current screen width.

comment "Common options for df, du, ls"
	depends on DF || DU || LS

config FEATURE_HUMAN_READABLE
	bool "Support for human readable output (example 13k, 23M, 235G)"
	default y
	depends on DF || DU || LS
	help
	  Allow df, du, and ls to have human readable output.

comment "Common options for md5sum, sha1sum, sha256sum, sha512sum"
	depends on MD5SUM || SHA1SUM || SHA256SUM || SHA512SUM

config FEATURE_MD5_SHA1_SUM_CHECK
	bool "Enable -c, -s and -w options"
	default y
	depends on MD5SUM || SHA1SUM || SHA256SUM || SHA512SUM
	help
	  Enabling the -c options allows files to be checked
	  against pre-calculated hash values.

	  -s and -w are useful options when verifying checksums.

endmenu
