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

menu "Coreutils"

config BASENAME
	bool "basename"
	default n
	help
	  basename is used to strip the directory and suffix from filenames,
	  leaving just the filename itself. Enable this option if you wish
	  to enable the 'basename' utility.

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

config CAT
	bool "cat"
	default n
	help
	  cat is used to concatenate files and print them to the standard
	  output. Enable this option if you wish to enable the 'cat' utility.

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

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

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

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

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

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

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

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

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

config DATE
	bool "date"
	default n
	help
	  date is used to set the system date or display the
	  current time in the given format.

config FEATURE_DATE_ISOFMT
	bool "Enable ISO date format output (-I)"
	default y
	depends on DATE
	help
	  Enable option (-I) to output an ISO-8601 compliant
	  date/time string.

config DD
	bool "dd"
	default n
	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_IBS_OBS
	bool "Enable ibs, obs and conv options"
	default n
	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 n
	help
	  df reports the amount of disk space used and available
	  on filesystems.

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

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

config DOS2UNIX
	bool "dos2unix/unix2dos"
	default n
	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 n
	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 n
	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 n
	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 n
	depends on ENV && GETOPT_LONG
	help
	  Support long options for the env applet.

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

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

config EXPR
	bool "expr"
	default n
	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 n
	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 n
	help
	  false returns an exit code of FALSE (1).

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

config HEAD
	bool "head"
	default n
	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 n
	depends on HEAD
	help
	  This enables the head options (-c, -q, and -v).

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

config ID
	bool "id"
	default n
	help
	  id displays the current user and group ID names.

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

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

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

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

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

config LS
	bool "ls"
	default n
	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 && GETOPT_LONG
	help
	  This enables the --color option to ls.

config FEATURE_LS_COLOR_IS_DEFAULT
	bool "Produce colored ls output by default"
	default n
	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 n
	help
	  md5sum is used to print or check MD5 checksums.

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

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

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

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

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

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

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

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

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

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

config PRINTF
	bool "printf"
	default n
	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 n
	help
	  pwd is used to print the current directory.

config READLINK
	bool "readlink"
	default n
	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 n
	depends on READLINK
	help
	  Enable the readlink option (-f).

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

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

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

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

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

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

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

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

config SLEEP
	bool "sleep"
	default n
	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 n
	depends on SLEEP
	help
	  Allow sleep to pause for specified minutes, hours, and days.

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

config SORT
	bool "sort"
	default n
	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 n
	help
	  split a file into pieces.

config FEATURE_SPLIT_FANCY
	bool "Fancy extensions"
	default n
	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 n
	help
	  display file or filesystem status.

config FEATURE_STAT_FORMAT
	bool "Enable custom formats (-c)"
	default n
	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 n
	help
	  stty is used to change and print terminal line settings.

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

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

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

config TAIL
	bool "tail"
	default n
	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, and -v)"
	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.

config TEE
	bool "tee"
	default n
	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 n
	depends on TEE
	help
	  Enable this option for a faster tee, at expense of size.

config TEST
	bool "test"
	default n
	help
	  test is used to check file types and compare values,
	  returning an appropriate exit code. The bash shell
	  has test built in, ash can build it in optionally.

config FEATURE_TEST_64
	bool "Extend test to 64 bit"
	default n
	depends on TEST || ASH_BUILTIN_TEST
	help
	  Enable 64-bit support in test.

config TOUCH
	bool "touch"
	default n
	help
	  touch is used to create or change the access and/or
	  modification timestamp of specified files.

config TR
	bool "tr"
	default n
	help
	  tr is used to squeeze, and/or delete characters from standard
	  input, writing to standard output.

config FEATURE_TR_CLASSES
	bool "Enable character classes (such as [:upper:])"
	default n
	depends on TR
	help
	  Enable character classes, enabling commands such as:
	  tr [:upper:] [:lower:] to convert input into lowercase.

config FEATURE_TR_EQUIV
	bool "Enable equivalence classes"
	default n
	depends on TR
	help
	  Enable equivalence classes, which essentially add the enclosed
	  character to the current set. For instance, tr [=a=] xyz would
	  replace all instances of 'a' with 'xyz'. This option is mainly
	  useful for cases when no other way of expressing a character
	  is possible.

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

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

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

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

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

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

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

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

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

config WC
	bool "wc"
	default n
	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 n
	depends on WC
	help
	  Use "unsigned long long" in wc for counter variables.

config WHO
	bool "who"
	default n
	select FEATURE_UTMP
	help
	  who is used to show who is logged on.

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

config YES
	bool "yes"
	default n
	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 n
	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 n
	depends on DF || DU || LS
	help
	  Allow df, du, and ls to have human readable output.

comment "Common options for md5sum, sha1sum"
	depends on MD5SUM || SHA1SUM

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