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

menu "Coreutils"

config 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 CONFIG_CAL
	bool "cal"
	default n
	help
	  cal is used to display a monthly calender.

config 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 CONFIG_CATV
	bool "catv"
	default n
	help
	  Display nonprinting characters as escape sequences (like some
	  implementations' cat -v option).

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

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

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

config 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 CONFIG_CKSUM
	bool "cksum"
	default n
	help
	  cksum is used to calculate the CRC32 checksum of a file.

config CONFIG_CMP
	bool "cmp"
	default n
	help
	  cmp is used to compare two files and returns the result
	  to standard output.

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

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

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

config 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 CONFIG_FEATURE_DATE_ISOFMT
	bool "Enable ISO date format output (-I)"
	default y
	depends on CONFIG_DATE
	help
	  Enable option (-I) to output an ISO-8601 compliant
	  date/time string.

config 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 CONFIG_FEATURE_DD_SIGNAL_HANDLING
	bool "Enable DD signal handling for status reporting"
	default y
	depends on CONFIG_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 CONFIG_FEATURE_DD_IBS_OBS
	bool "Enable ibs, obs and conv options"
	default n
	depends on CONFIG_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 CONFIG_DF
	bool "df"
	default n
	help
	  df reports the amount of disk space used and available
	  on filesystems.

config CONFIG_DIFF
	bool "diff"
	default n
	help
	  diff compares two files or directories and outputs the
	  differences between them in a form that can be given to
	  the patch command.

config CONFIG_FEATURE_DIFF_BINARY
	bool "Enable checks for binary files"
	default y
	depends on CONFIG_DIFF
	help
	  This option enables support for checking for binary files
	  before a comparison is carried out.

config CONFIG_FEATURE_DIFF_DIR
	bool "Enable directory support"
	default y
	depends on CONFIG_DIFF
	help
	  This option enables support for directory and subdirectory
	  comparison.

config CONFIG_FEATURE_DIFF_MINIMAL
	bool "Enable -d option to find smaller sets of changes"
	default n
	depends on CONFIG_DIFF
	help
	  Enabling this option allows the use of -d to make diff
	  try hard to find the smallest possible set of changes.

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

config 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 CONFIG_UNIX2DOS
	bool
	default y
	depends on CONFIG_DOS2UNIX
	help
	  unix2dos is used to convert a text file from UNIX format to
	  DOS format, and vice versa.

config 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 CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
	bool "Use a default blocksize of 1024 bytes (1K)"
	default y
	depends on CONFIG_DU
	help
	  Use a blocksize of (1K) instead of the default 512b.

config 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 CONFIG_FEATURE_FANCY_ECHO
	bool "Enable echo options (-n and -e)"
	default y
	depends on CONFIG_ECHO
	help
	  This adds options (-n and -e) to echo.

config 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 CONFIG_FEATURE_ENV_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_ENV && CONFIG_GETOPT_LONG
	help
	  Support long options for the env applet.

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

config CONFIG_EXPR_MATH_SUPPORT_64
	bool "Extend Posix numbers support to 64 bit"
	default n
	depends on CONFIG_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 CONFIG_FALSE
	bool "false"
	default n
	help
	  false returns an exit code of FALSE (1).

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

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

config CONFIG_FEATURE_FANCY_HEAD
	bool "Enable head options (-c, -q, and -v)"
	default n
	depends on CONFIG_HEAD
	help
	  This enables the head options (-c, -q, and -v).

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

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

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

config CONFIG_FEATURE_INSTALL_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_INSTALL && CONFIG_GETOPT_LONG
	help
	  Support long options for the install applet.

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

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

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

config CONFIG_LS
	bool "ls"
	default n
	help
	  ls is used to list the contents of directories.

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

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

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

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

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

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

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

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

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

config CONFIG_FEATURE_MKDIR_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_MKDIR && CONFIG_GETOPT_LONG
	help
	  Support long options for the mkdir applet.

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

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

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

config CONFIG_FEATURE_MV_LONG_OPTIONS
	bool "Enable long options"
	default n
	depends on CONFIG_MV && CONFIG_GETOPT_LONG
	help
	  Support long options for the mv applet.

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

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

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

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

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

config 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 CONFIG_RM
	bool "rm"
	default n
	help
	  rm is used to remove files or directories.

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

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

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

config CONFIG_SLEEP
	bool "sleep (single integer arg with no suffix)"
	default n
	help
	  sleep is used to pause for a specified number of seconds,

config CONFIG_FEATURE_FANCY_SLEEP
	bool "Enable multiple integer args and optional time suffixes"
	default n
	depends on CONFIG_SLEEP
	help
	  Allow sleep to pause for specified minutes, hours, and days.

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

config CONFIG_FEATURE_SORT_BIG
	bool "full SuSv3 compliant sort (Support -ktcsbdfiozgM)"
	default y
	depends on CONFIG_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 CONFIG_STAT
	bool "stat"
	default n
	help
	  display file or filesystem status.

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

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

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

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

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

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

config CONFIG_FEATURE_TEE_USE_BLOCK_IO
	bool "Enable block i/o (larger/faster) instead of byte i/o."
	default n
	depends on CONFIG_TEE
	help
	  Enable this option for a faster tee, at expense of size.

config 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 CONFIG_FEATURE_TEST_64
	bool "Extend test to 64 bit"
	default n
	depends on CONFIG_TEST
	help
	  Enable 64-bit support in test.

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

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

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

config CONFIG_FEATURE_TR_EQUIV
	bool "Enable equivalence classes"
	default n
	depends on CONFIG_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 CONFIG_TRUE
	bool "true"
	default n
	help
	  true returns an exit code of TRUE (0).

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

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

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

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

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

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

config CONFIG_WATCH
	bool "watch"
	default n
	select CONFIG_DATE
	help
	  watch is used to execute a program periodically, showing
	  output to the screen.

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

config CONFIG_WHO
	bool "who"
	default n
	select CONFIG_FEATURE_UTMP
	help
	  who is used to show who is logged on.

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

config 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 CONFIG_CP || CONFIG_MV

config CONFIG_FEATURE_PRESERVE_HARDLINKS
	bool "Preserve hard links"
	default n
	depends on CONFIG_CP || CONFIG_MV
	help
	  Allow cp and mv to preserve hard links.

comment "Common options for ls, more and telnet"
	depends on CONFIG_LS || CONFIG_MORE || CONFIG_TELNET

config CONFIG_FEATURE_AUTOWIDTH
	bool "Calculate terminal & column widths"
	default y
	depends on CONFIG_LS || CONFIG_MORE || CONFIG_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 CONFIG_DF || CONFIG_DU || CONFIG_LS

config CONFIG_FEATURE_HUMAN_READABLE
	bool "Support for human readable output (example 13k, 23M, 235G)"
	default n
	depends on CONFIG_DF || CONFIG_DU || CONFIG_LS
	help
	  Allow df, du, and ls to have human readable output.

comment "Common options for md5sum, sha1sum"
	depends on CONFIG_MD5SUM || CONFIG_SHA1SUM

config CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
	bool "Enable -c, -s and -w options"
	default n
	depends on CONFIG_MD5SUM || CONFIG_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
