#
# 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 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 SHA3SUM
	bool "sha3sum"
	default y
	help
	  Compute and check SHA3 (512-bit) 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, sha3sum"
	depends on MD5SUM || SHA1SUM || SHA256SUM || SHA512SUM || SHA3SUM

config FEATURE_MD5_SHA1_SUM_CHECK
	bool "Enable -c, -s and -w options"
	default y
	depends on MD5SUM || SHA1SUM || SHA256SUM || SHA512SUM || SHA3SUM
	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
