Regenerate generated files after upstream sync.

Change-Id: Ic66d724f729605eda62932bd1c2aa5d1c41aee35
diff --git a/.config b/.config
index cbc8955..36ae5f2 100644
--- a/.config
+++ b/.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # ToyBox version: KCONFIG_VERSION
-# Sun Dec 21 16:37:20 2014
+# Wed Dec 24 10:58:06 2014
 #
 CONFIG_TOYBOX_CONTAINER=y
 CONFIG_TOYBOX_FIFREEZE=y
@@ -17,6 +17,7 @@
 CONFIG_BASENAME=y
 CONFIG_CAL=y
 CONFIG_CAT=y
+CONFIG_CAT_V=y
 CONFIG_CHGRP=y
 CONFIG_CHMOD=y
 CONFIG_CKSUM=y
@@ -62,6 +63,7 @@
 CONFIG_RENICE=y
 CONFIG_RM=y
 CONFIG_RMDIR=y
+# CONFIG_SED is not set
 CONFIG_SLEEP=y
 CONFIG_SLEEP_FLOAT=y
 CONFIG_SORT=y
@@ -113,6 +115,7 @@
 # CONFIG_FOLD is not set
 # CONFIG_FSCK is not set
 # CONFIG_FTPGET is not set
+CONFIG_GETENFORCE=y
 # CONFIG_GETTY is not set
 # CONFIG_GROUPADD is not set
 # CONFIG_GROUPDEL is not set
@@ -147,7 +150,7 @@
 CONFIG_PS=y
 # CONFIG_RESET is not set
 CONFIG_ROUTE=y
-# CONFIG_SED is not set
+CONFIG_SETENFORCE=y
 # CONFIG_SH is not set
 # CONFIG_SH_INTERACTIVE is not set
 # CONFIG_EXIT is not set
@@ -177,7 +180,6 @@
 # CONFIG_FSTYPE is not set
 CONFIG_BLOCKDEV=y
 CONFIG_BZCAT=y
-CONFIG_CATV=y
 CONFIG_CHROOT=y
 CONFIG_CHVT=y
 CONFIG_CLEAR=y
diff --git a/Android.mk b/Android.mk
index a1de008..8911e6c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -62,7 +62,6 @@
     toys/other/blkid.c \
     toys/other/blockdev.c \
     toys/other/bzcat.c \
-    toys/other/catv.c \
     toys/other/chroot.c \
     toys/other/chvt.c \
     toys/other/clear.c \
@@ -116,10 +115,12 @@
     toys/other/yes.c \
     toys/pending/chcon.c \
     toys/pending/dd.c \
+    toys/pending/getenforce.c \
     toys/pending/more.c \
     toys/pending/ps.c \
     toys/pending/netstat.c \
     toys/pending/route.c \
+    toys/pending/setenforce.c \
     toys/pending/top.c \
     toys/pending/traceroute.c \
     toys/posix/basename.c \
@@ -199,7 +200,6 @@
     blockdev \
     bzcat \
     cal \
-    catv \
     chcon \
     chgrp \
     chmod \
diff --git a/generated/config.h b/generated/config.h
index cb4b6c1..039adbd 100644
--- a/generated/config.h
+++ b/generated/config.h
@@ -18,6 +18,8 @@
 #define USE_CAL(...) __VA_ARGS__
 #define CFG_CAT 1
 #define USE_CAT(...) __VA_ARGS__
+#define CFG_CAT_V 1
+#define USE_CAT_V(...) __VA_ARGS__
 #define CFG_CHGRP 1
 #define USE_CHGRP(...) __VA_ARGS__
 #define CFG_CHMOD 1
@@ -108,6 +110,8 @@
 #define USE_RM(...) __VA_ARGS__
 #define CFG_RMDIR 1
 #define USE_RMDIR(...) __VA_ARGS__
+#define CFG_SED 0
+#define USE_SED(...)
 #define CFG_SLEEP 1
 #define USE_SLEEP(...) __VA_ARGS__
 #define CFG_SLEEP_FLOAT 1
@@ -202,6 +206,8 @@
 #define USE_FSCK(...)
 #define CFG_FTPGET 0
 #define USE_FTPGET(...)
+#define CFG_GETENFORCE 1
+#define USE_GETENFORCE(...) __VA_ARGS__
 #define CFG_GETTY 0
 #define USE_GETTY(...)
 #define CFG_GROUPADD 0
@@ -270,8 +276,8 @@
 #define USE_RESET(...)
 #define CFG_ROUTE 1
 #define USE_ROUTE(...) __VA_ARGS__
-#define CFG_SED 0
-#define USE_SED(...)
+#define CFG_SETENFORCE 1
+#define USE_SETENFORCE(...) __VA_ARGS__
 #define CFG_SH 0
 #define USE_SH(...)
 #define CFG_SH_INTERACTIVE 0
@@ -322,8 +328,6 @@
 #define USE_BLOCKDEV(...) __VA_ARGS__
 #define CFG_BZCAT 1
 #define USE_BZCAT(...) __VA_ARGS__
-#define CFG_CATV 1
-#define USE_CATV(...) __VA_ARGS__
 #define CFG_CHROOT 1
 #define USE_CHROOT(...) __VA_ARGS__
 #define CFG_CHVT 1
diff --git a/generated/flags.h b/generated/flags.h
index 451cb6e..127e7f4 100644
--- a/generated/flags.h
+++ b/generated/flags.h
@@ -103,20 +103,14 @@
 #undef FOR_cal
 #endif
 
-// cat u u
+// cat uvte uvte
 #ifdef CLEANUP_cat
 #undef CLEANUP_cat
 #undef FOR_cat
-#undef FLAG_u
-#endif
-
-// catv vte vte
-#ifdef CLEANUP_catv
-#undef CLEANUP_catv
-#undef FOR_catv
 #undef FLAG_e
 #undef FLAG_t
 #undef FLAG_v
+#undef FLAG_u
 #endif
 
 // cd    
@@ -606,6 +600,12 @@
 #undef FLAG_c
 #endif
 
+// getenforce    
+#ifdef CLEANUP_getenforce
+#undef CLEANUP_getenforce
+#undef FOR_getenforce
+#endif
+
 // getty   <2t#<0H:I:l:f:iwnmLh
 #ifdef CLEANUP_getty
 #undef CLEANUP_getty
@@ -1527,6 +1527,12 @@
 #undef FLAG_f
 #endif
 
+// setenforce <1 <1
+#ifdef CLEANUP_setenforce
+#undef CLEANUP_setenforce
+#undef FOR_setenforce
+#endif
+
 // setsid ^<1t ^<1t
 #ifdef CLEANUP_setsid
 #undef CLEANUP_setsid
@@ -2248,16 +2254,10 @@
 #ifndef TT
 #define TT this.cat
 #endif
-#define FLAG_u (1<<0)
-#endif
-
-#ifdef FOR_catv
-#ifndef TT
-#define TT this.catv
-#endif
 #define FLAG_e (1<<0)
 #define FLAG_t (1<<1)
 #define FLAG_v (1<<2)
+#define FLAG_u (1<<3)
 #endif
 
 #ifdef FOR_cd
@@ -2747,6 +2747,12 @@
 #define FLAG_c 0
 #endif
 
+#ifdef FOR_getenforce
+#ifndef TT
+#define TT this.getenforce
+#endif
+#endif
+
 #ifdef FOR_getty
 #ifndef TT
 #define TT this.getty
@@ -3668,6 +3674,12 @@
 #define FLAG_f (1<<1)
 #endif
 
+#ifdef FOR_setenforce
+#ifndef TT
+#define TT this.setenforce
+#endif
+#endif
+
 #ifdef FOR_setsid
 #ifndef TT
 #define TT this.setsid
diff --git a/generated/globals.h b/generated/globals.h
index 1a37de6..ce1b734 100644
--- a/generated/globals.h
+++ b/generated/globals.h
@@ -672,21 +672,6 @@
   char *family;
 };
 
-// toys/pending/sed.c
-
-struct sed_data {
-  struct arg_list *f;
-  struct arg_list *e;
-
-  // processed pattern list
-  struct double_list *pattern;
-
-  char *nextline, *remember;
-  void *restart, *lastregex;
-  long nextlen, rememberlen, count;
-  int fdout, noeol;
-};
-
 // toys/pending/sh.c
 
 struct sh_data {
@@ -1074,6 +1059,22 @@
   long nArgu;
 };
 
+// toys/posix/sed.c
+
+struct sed_data {
+  struct arg_list *f;
+  struct arg_list *e;
+
+  // processed pattern list
+  struct double_list *pattern;
+
+  char *nextline, *remember;
+  void *restart, *lastregex;
+  long nextlen, rememberlen, count;
+  int fdout, noeol;
+  unsigned xx;
+};
+
 // toys/posix/sort.c
 
 struct sort_data {
@@ -1234,7 +1235,6 @@
 	struct printf_data printf;
 	struct ps_data ps;
 	struct route_data route;
-	struct sed_data sed;
 	struct sh_data sh;
 	struct sulogin_data sulogin;
 	struct syslogd_data syslogd;
@@ -1273,6 +1273,7 @@
 	struct paste_data paste;
 	struct patch_data patch;
 	struct renice_data renice;
+	struct sed_data sed;
 	struct sort_data sort;
 	struct split_data split;
 	struct strings_data strings;
diff --git a/generated/help.h b/generated/help.h
index 536acb9..e6ff27b 100644
--- a/generated/help.h
+++ b/generated/help.h
@@ -176,8 +176,6 @@
 
 #define help_chroot "usage: chroot NEWPATH [commandline...]\n\nRun command within a new root directory. If no command, run /bin/sh.\n\n"
 
-#define help_catv "usage: catv [-evt] [filename...]\n\nDisplay nonprinting characters as escape sequences. Use M-x for\nhigh ascii characters (>127), and ^x for other nonprinting chars.\n\n-e	Mark each newline with $\n-t	Show tabs as ^I\n-v	Don't use ^x or M-x escapes.\n\n"
-
 #define help_bzcat "usage: bzcat [filename...]\n\nDecompress listed files to stdout. Use stdin if no files listed.\n\n"
 
 #define help_blockdev "usage: blockdev --OPTION... BLOCKDEV...\n\nCall ioctl(s) on each listed block device\n\nOPTIONs:\n--setro		Set read only\n--setrw		Set read write\n--getro		Get read only\n--getss		Get sector size\n--getbsz	Get block size\n--setbsz	BYTES	Set block size\n--getsz		Get device size in 512-byte sectors\n--getsize	Get device size in sectors (deprecated)\n--getsize64	Get device size in bytes\n--flushbufs	Flush buffers\n--rereadpt	Reread partition table\n\n"
@@ -228,7 +226,7 @@
 
 #define help_sh "usage: sh [-c command] [script]\n\nCommand shell.  Runs a shell script, or reads input interactively\nand responds to it.\n\n-c	command line to execute\n\n"
 
-#define help_sed "usage: sed [-inr] [-e SCRIPT]...|SCRIPT [-f SCRIPT_FILE]... [FILE...]\n\nStream editor. Apply one or more editing SCRIPTs to each line of input\n(from FILE or stdin) producing output (by default to stdout).\n\n-e	add SCRIPT to list\n-f	add contents of SCRIPT_FILE to list\n-i	Edit each file in place.\n-n	No default output. (Use the p command to output matched lines.)\n-r	Use extended regular expression syntax.\n-s	Treat input files separately (implied by -i)\n\nA SCRIPT is a series of one or more COMMANDs separated by newlines or\nsemicolons. All -e SCRIPTs are concatenated together as if separated\nby newlines, followed by all lines from -f SCRIPT_FILEs, in order.\nIf no -e or -f SCRIPTs are specified, the first argument is the SCRIPT.\n\nEach COMMAND may be preceded by an address which limits the command to\napply only to the specified line(s). Commands without an address apply to\nevery line. Addresses are of the form:\n\n  [ADDRESS[,ADDRESS]]COMMAND\n\nThe ADDRESS may be a decimal line number (starting at 1), a /regular\nexpression/ within a pair of forward slashes, or the character \"$\" which\nmatches the last line of input. (In -s or -i mode this matches the last\nline of each file, otherwise just the last line of the last file.) A single\naddress matches one line, a pair of comma separated addresses match\neverything from the first address to the second address (inclusive). If\nboth addresses are regular expressions, more than one range of lines in\neach file can match.\n\nREGULAR EXPRESSIONS in sed are started and ended by the same character\n(traditionally / but anything except a backslash or a newline works).\nBackslashes may be used to escape the delimiter if it occurs in the\nregex, and for the usual printf escapes (\\abcefnrtv and octal, hex,\nand unicode). An empty regex repeats the previous one. ADDRESS regexes\n(above) require the first delimeter to be escaped with a backslash when\nit isn't a forward slash (to distinguish it from the COMMANDs below).\n\nSed mostly operates on individual lines one at a time. It reads each line,\nprocesses it, and either writes it to the output or discards it before\nreading the next line. Sed can remember one additional line in a separate\nbuffer (using the h, H, g, G, and x commands), and can read the next line\nof input early (using the n and N command), but other than that command\nscripts operate on individual lines of text.\n\nEach COMMAND starts with a single character. The following commands take\nno arguments:\n\n  {  Start a new command block, continuing until a corresponding \"}\".\n     Command blocks may nest. If the block has an address, commands within\n     the block are only run for lines within the block's address range.\n\n  }  End command block (this command cannot have an address)\n\n  d  Delete this line and move on to the next one\n     (ignores remaining COMMANDs)\n\n  D  Delete one line of input and restart command SCRIPT (same as \"d\"\n     unless you've glued lines together with \"N\" or similar)\n\n  g  Get remembered line (overwriting current line)\n\n  G  Get remembered line (appending to current line)\n\n  h  Remember this line (overwriting remembered line)\n\n  H  Remember this line (appending to remembered line, if any)\n\n  l  Print this line, escaping \\abfrtv (but leaving \\n as a newline),\n     using octal escapes for other nonprintable characters, and\n     wrapping lines to terminal width with a backslash and newline\n\n  n  Print default output and read next line, replacing current line\n     (If no next line available, quit processing script)\n\n  N  Append next line of input to this line, separated by a newline\n     (This advances the line counter for address matching and \"=\", if no\n     next line available quit processing script without default output)\n\n  p  Print this line\n\n  P  Print this line up to first newline (from \"N\")\n\n  q  Quit (print default output, no more commands processed or lines read)\n\n  x  Exchange this line with remembered line (overwrite in both directions)\n\n  =  Print the current line number (followed by a newline)\n\nThe following commands (may) take an argument. The \"text\" arguments (to\nthe \"a\", \"b\", and \"c\" commands) may end with an unescaped \"\\\" to append\nthe next line (for which leading whitespace is not skipped), and also\ntreat \";\" as a literal character (use \"\\;\" instead).\n\n  a [text]   Append text to output before attempting to read next line\n\n  b [label]  Branch, jumps to :label (or with no label, to end of SCRIPT)\n\n  c [text]   Delete line, output text at end of matching address range\n             (ignores remaining COMMANDs)\n\n  i [text]   Print text\n\n  r [file]   Append contents of file to output before attempting to read\n             next line.\n\n  s/S/R/F    Search for regex S, replace matched text with R using flags F.\n             The first character after the \"s\" (anything but newline or\n             backslash) is the delimiter, escape with \\ to use normally.\n\n             The replacement text may contain \"&\" to substitute the matched\n             text (escape it with backslash for a literal &), or \\1 through\n             \\9 to substitute a parenthetical subexpression in the regex.\n             You can also use the normal backslash escapes such as \\n and\n             a backslash at the end of the line appends the next line.\n\n             The flags are:\n\n             [0-9]    A number, substitute only that occurrence of pattern\n             g        Global, substitute all occurrences of pattern\n             i        Ignore case when matching\n             p        Print the line if match was found and replaced\n             w [file] Write (append) line to file if match replaced\n\n  t [label]  Test, jump to :label only if an \"s\" command found a match in\n             this line since last test (replacing with same text counts)\n\n  T [label]  Test false, jump only if \"s\" hasn't found a match.\n\n  w [file]   Write (append) line to file\n\n  y/old/new/ Change each character in 'old' to corresponding character\n             in 'new' (with standard backslash escapes, delimiter can be\n             any repeated character except \\ or \\n)\n\n  : [label]  Labeled target for jump commands\n\n  #  Comment, ignore rest of this line of SCRIPT\n\nDeviations from posix: allow extended regular expressions with -r,\nediting in place with -i, separate with -s, printf escapes in text, line\ncontinuations, semicolons after all commands, 2-address anywhere an\naddress is allowed, \"T\" command, multiline continuations for [abc],\n\\; to end [abc] argument before end of line.\n\n"
+#define help_setenforce "usage: setenforce [enforcing|permissive|1|0]\n\nSets whether SELinux is enforcing (1) or permissive (0).\n\n"
 
 #define help_route "usage: route -neA inet{6} / [{add|del}]\n\nDisplay/Edit kernel routing tables.\n\n-n  Don't resolve names\n-e  Display other/more information\n-A  inet{6} Select Address Family\n\n"
 
@@ -296,6 +294,8 @@
 
 #define help_getty "usage: getty [OPTIONS] BAUD_RATE[,BAUD_RATE]... TTY [TERMTYPE]\n\n-h    Enable hardware RTS/CTS flow control\n-L    Set CLOCAL (ignore Carrier Detect state)\n-m    Get baud rate from modem's CONNECT status message\n-n    Don't prompt for login name\n-w    Wait for CR or LF before sending /etc/issue\n-i    Don't display /etc/issue\n-f ISSUE_FILE  Display ISSUE_FILE instead of /etc/issue\n-l LOGIN  Invoke LOGIN instead of /bin/login\n-t SEC    Terminate after SEC if no login name is read\n-I INITSTR  Send INITSTR before anything else\n-H HOST    Log HOST into the utmp file as the hostname\n\n"
 
+#define help_getenforce "usage: getenforce\n\nShows whether SELinux is disabled, enforcing, or permissive.\n\n"
+
 #define help_ftpget "usage: ftpget [-cv] [-u USER -p PASSWORD -P PORT] HOST_NAME [LOCAL_FILENAME] REMOTE_FILENAME\nusage: ftpput [-v] [-u USER -p PASSWORD -P PORT] HOST_NAME [REMOTE_FILENAME] LOCAL_FILENAME\n\nftpget - Get a remote file from FTP.\nftpput - Upload a local file on remote machine through FTP.\n\n-c Continue previous transfer.\n-v Verbose.\n-u User name.\n-p Password.\n-P Port Number (default 21).\n\n"
 
 #define help_fsck "usage: fsck [-ANPRTV] [-C FD] [-t FSTYPE] [FS_OPTS] [BLOCKDEV]...\n\nCheck and repair filesystems\n\n-A      Walk /etc/fstab and check all filesystems\n-N      Don't execute, just show what would be done\n-P      With -A, check filesystems in parallel\n-R      With -A, skip the root filesystem\n-T      Don't show title on startup\n-V      Verbose\n-C n    Write status information to specified filedescriptor\n-t TYPE List of filesystem types to check\n\n\n"
@@ -384,6 +384,8 @@
 
 #define help_sleep "usage: sleep LENGTH\n\nWait before exiting. An optional suffix can be \"m\" (minutes), \"h\" (hours),\n\"d\" (days), or \"s\" (seconds, the default).\n\n\n"
 
+#define help_sed "usage: sed [-inr] [-e SCRIPT]...|SCRIPT [-f SCRIPT_FILE]... [FILE...]\n\nStream editor. Apply one or more editing SCRIPTs to each line of input\n(from FILE or stdin) producing output (by default to stdout).\n\n-e	add SCRIPT to list\n-f	add contents of SCRIPT_FILE to list\n-i	Edit each file in place.\n-n	No default output. (Use the p command to output matched lines.)\n-r	Use extended regular expression syntax.\n-s	Treat input files separately (implied by -i)\n\nA SCRIPT is a series of one or more COMMANDs separated by newlines or\nsemicolons. All -e SCRIPTs are concatenated together as if separated\nby newlines, followed by all lines from -f SCRIPT_FILEs, in order.\nIf no -e or -f SCRIPTs are specified, the first argument is the SCRIPT.\n\nEach COMMAND may be preceded by an address which limits the command to\napply only to the specified line(s). Commands without an address apply to\nevery line. Addresses are of the form:\n\n  [ADDRESS[,ADDRESS]]COMMAND\n\nThe ADDRESS may be a decimal line number (starting at 1), a /regular\nexpression/ within a pair of forward slashes, or the character \"$\" which\nmatches the last line of input. (In -s or -i mode this matches the last\nline of each file, otherwise just the last line of the last file.) A single\naddress matches one line, a pair of comma separated addresses match\neverything from the first address to the second address (inclusive). If\nboth addresses are regular expressions, more than one range of lines in\neach file can match.\n\nREGULAR EXPRESSIONS in sed are started and ended by the same character\n(traditionally / but anything except a backslash or a newline works).\nBackslashes may be used to escape the delimiter if it occurs in the\nregex, and for the usual printf escapes (\\abcefnrtv and octal, hex,\nand unicode). An empty regex repeats the previous one. ADDRESS regexes\n(above) require the first delimeter to be escaped with a backslash when\nit isn't a forward slash (to distinguish it from the COMMANDs below).\n\nSed mostly operates on individual lines one at a time. It reads each line,\nprocesses it, and either writes it to the output or discards it before\nreading the next line. Sed can remember one additional line in a separate\nbuffer (using the h, H, g, G, and x commands), and can read the next line\nof input early (using the n and N command), but other than that command\nscripts operate on individual lines of text.\n\nEach COMMAND starts with a single character. The following commands take\nno arguments:\n\n  {  Start a new command block, continuing until a corresponding \"}\".\n     Command blocks may nest. If the block has an address, commands within\n     the block are only run for lines within the block's address range.\n\n  }  End command block (this command cannot have an address)\n\n  d  Delete this line and move on to the next one\n     (ignores remaining COMMANDs)\n\n  D  Delete one line of input and restart command SCRIPT (same as \"d\"\n     unless you've glued lines together with \"N\" or similar)\n\n  g  Get remembered line (overwriting current line)\n\n  G  Get remembered line (appending to current line)\n\n  h  Remember this line (overwriting remembered line)\n\n  H  Remember this line (appending to remembered line, if any)\n\n  l  Print line, escaping \\abfrtv (but not newline), octal escaping other\n     nonprintable characters, wrapping lines to terminal width with a\n     backslash, and appending $ to actual end of line.\n\n  n  Print default output and read next line, replacing current line\n     (If no next line available, quit processing script)\n\n  N  Append next line of input to this line, separated by a newline\n     (This advances the line counter for address matching and \"=\", if no\n     next line available quit processing script without default output)\n\n  p  Print this line\n\n  P  Print this line up to first newline (from \"N\")\n\n  q  Quit (print default output, no more commands processed or lines read)\n\n  x  Exchange this line with remembered line (overwrite in both directions)\n\n  =  Print the current line number (followed by a newline)\n\nThe following commands (may) take an argument. The \"text\" arguments (to\nthe \"a\", \"b\", and \"c\" commands) may end with an unescaped \"\\\" to append\nthe next line (for which leading whitespace is not skipped), and also\ntreat \";\" as a literal character (use \"\\;\" instead).\n\n  a [text]   Append text to output before attempting to read next line\n\n  b [label]  Branch, jumps to :label (or with no label, to end of SCRIPT)\n\n  c [text]   Delete line, output text at end of matching address range\n             (ignores remaining COMMANDs)\n\n  i [text]   Print text\n\n  r [file]   Append contents of file to output before attempting to read\n             next line.\n\n  s/S/R/F    Search for regex S, replace matched text with R using flags F.\n             The first character after the \"s\" (anything but newline or\n             backslash) is the delimiter, escape with \\ to use normally.\n\n             The replacement text may contain \"&\" to substitute the matched\n             text (escape it with backslash for a literal &), or \\1 through\n             \\9 to substitute a parenthetical subexpression in the regex.\n             You can also use the normal backslash escapes such as \\n and\n             a backslash at the end of the line appends the next line.\n\n             The flags are:\n\n             [0-9]    A number, substitute only that occurrence of pattern\n             g        Global, substitute all occurrences of pattern\n             i        Ignore case when matching\n             p        Print the line if match was found and replaced\n             w [file] Write (append) line to file if match replaced\n\n  t [label]  Test, jump to :label only if an \"s\" command found a match in\n             this line since last test (replacing with same text counts)\n\n  T [label]  Test false, jump only if \"s\" hasn't found a match.\n\n  w [file]   Write (append) line to file\n\n  y/old/new/ Change each character in 'old' to corresponding character\n             in 'new' (with standard backslash escapes, delimiter can be\n             any repeated character except \\ or \\n)\n\n  : [label]  Labeled target for jump commands\n\n  #  Comment, ignore rest of this line of SCRIPT\n\nDeviations from posix: allow extended regular expressions with -r,\nediting in place with -i, separate with -s, printf escapes in text, line\ncontinuations, semicolons after all commands, 2-address anywhere an\naddress is allowed, \"T\" command, multiline continuations for [abc],\n\\; to end [abc] argument before end of line.\n\n"
+
 #define help_rmdir "usage: rmdir [-p] [dirname...]\n\nRemove one or more directories.\n\n-p	Remove path.\n\n"
 
 #define help_rm "usage: rm [-fiRr] FILE...\n\nRemove each argument from the filesystem.\n\n-f	force: remove without confirmation, no error if it doesn't exist\n-i	interactive: prompt for confirmation\n-rR	recursive: remove directory contents\n\n"
@@ -470,7 +472,9 @@
 
 #define help_chgrp "usage: chown [-RHLP] [-fvh] [owner][:group] file...\nusage: chgrp [-RHLP] [-fvh] group file...\n\nChange ownership of one or more files.\n\n-f	suppress most error messages.\n-h	change symlinks instead of what they point to\n-R	recurse into subdirectories (implies -h).\n-H	with -R change target of symlink, follow command line symlinks\n-L	with -R change target of symlink, follow all symlinks\n-P	with -R change symlink, do not follow symlinks (default)\n-v	verbose output.\n\n"
 
-#define help_cat "usage: cat [-u] [file...]\n\nCopy (concatenate) files to stdout.  If no files listed, copy from stdin.\nFilename \"-\" is a synonym for stdin.\n\n-u	Copy one byte at a time (slow).\n\n"
+#define help_cat_v "	high ascii characters (>127), and ^x for other nonprinting chars.\n\nusage: cat [-etuv] [file...]\n\nCopy (concatenate) files to stdout.  If no files listed, copy from stdin.\nFilename \"-\" is a synonym for stdin.\n\nDisplay nonprinting characters as escape sequences. Use M-x for\n\n-e	Mark each newline with $\n-t	Show tabs as ^I\n-u	Copy one byte at a time (slow).\n-v	Display nonprinting characters as escape sequences. Use M-x for\n"
+
+#define help_cat "usage: cat [-etuv] [file...]\n\nCopy (concatenate) files to stdout.  If no files listed, copy from stdin.\nFilename \"-\" is a synonym for stdin.\n\nDisplay nonprinting characters as escape sequences. Use M-x for\n\n-e	Mark each newline with $\n-t	Show tabs as ^I\n-u	Copy one byte at a time (slow).\n-v	Display nonprinting characters as escape sequences. Use M-x for\n	high ascii characters (>127), and ^x for other nonprinting chars.\n\n"
 
 #define help_cal "usage: cal [[month] year]\n\nPrint a calendar.\n\nWith one argument, prints all months of the specified year.\nWith two arguments, prints calendar for month and year.\n\n"
 
diff --git a/generated/newtoys.h b/generated/newtoys.h
index d7366ef..b7925ab 100644
--- a/generated/newtoys.h
+++ b/generated/newtoys.h
@@ -13,8 +13,7 @@
 USE_BRCTL(NEWTOY(brctl, "<1", TOYFLAG_USR|TOYFLAG_SBIN))
 USE_BZCAT(NEWTOY(bzcat, NULL, TOYFLAG_USR|TOYFLAG_BIN))
 USE_CAL(NEWTOY(cal, ">2", TOYFLAG_USR|TOYFLAG_BIN))
-USE_CAT(NEWTOY(cat, "u", TOYFLAG_BIN))
-USE_CATV(NEWTOY(catv, "vte", TOYFLAG_USR|TOYFLAG_BIN))
+USE_CAT(NEWTOY(cat, "u"USE_CAT_V("vte"), TOYFLAG_BIN))
 USE_SH(NEWTOY(cd, NULL, TOYFLAG_NOFORK))
 USE_CHATTR(NEWTOY(chattr, NULL, TOYFLAG_BIN))
 USE_CHCON(NEWTOY(chcon, "hRv", TOYFLAG_USR|TOYFLAG_BIN))
@@ -69,6 +68,7 @@
 USE_FSTYPE(NEWTOY(fstype, "<1", TOYFLAG_BIN))
 USE_FTPGET(NEWTOY(ftpget, "<2cvu:p:P#<0=21>65535", TOYFLAG_BIN))
 USE_FTPGET(OLDTOY(ftpput,ftpget, "<2vu:p:P#<0=21>65535", TOYFLAG_BIN))
+USE_GETENFORCE(NEWTOY(getenforce, "", TOYFLAG_USR|TOYFLAG_SBIN))
 USE_GETTY(NEWTOY(getty, "<2t#<0H:I:l:f:iwnmLh",TOYFLAG_SBIN))
 USE_GREP(NEWTOY(grep, "ZzEFHabhinorsvwclqe*f*m#x[!wx][!EFw]", TOYFLAG_BIN))
 USE_GROUPADD(NEWTOY(groupadd, "<1>2g#<0S", TOYFLAG_NEEDROOT|TOYFLAG_SBIN))
@@ -173,6 +173,7 @@
 USE_ROUTE(NEWTOY(route, "?neA:", TOYFLAG_BIN))
 USE_SED(NEWTOY(sed, "(version)e*f*inr", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
 USE_SEQ(NEWTOY(seq, "<1>3?f:s:", TOYFLAG_USR|TOYFLAG_BIN))
+USE_SETENFORCE(NEWTOY(setenforce, "<1", TOYFLAG_USR|TOYFLAG_SBIN))
 USE_SETSID(NEWTOY(setsid, "^<1t", TOYFLAG_USR|TOYFLAG_BIN))
 USE_SH(NEWTOY(sh, "c:"USE_SH_INTERACTIVE("i"), TOYFLAG_BIN))
 USE_SHA1SUM(NEWTOY(sha1sum, "b", TOYFLAG_USR|TOYFLAG_BIN))
diff --git a/generated/oldtoys.h b/generated/oldtoys.h
index a912bd7..9b3515d 100644
--- a/generated/oldtoys.h
+++ b/generated/oldtoys.h
@@ -7,8 +7,7 @@
 #define OPTSTR_blockdev	"<1>1(setro)(setrw)(getro)(getss)(getbsz)(setbsz)#<0(getsz)(getsize)(getsize64)(flushbufs)(rereadpt)"
 #define OPTSTR_brctl	"<1"
 #define OPTSTR_cal	">2"
-#define OPTSTR_cat	"u"
-#define OPTSTR_catv	"vte"
+#define OPTSTR_cat	"u"USE_CAT_V("vte")
 #define OPTSTR_chcon	"hRv"
 #define OPTSTR_chgrp	"<2hPLHRfv"
 #define OPTSTR_chmod	"<2?vRf[-vf]"
@@ -47,6 +46,7 @@
 #define OPTSTR_fsfreeze	"<1>1f|u|[!fu]"
 #define OPTSTR_fstype	"<1"
 #define OPTSTR_ftpget	"<2cvu:p:P#<0=21>65535"
+#define OPTSTR_getenforce	""
 #define OPTSTR_getty	"<2t#<0H:I:l:f:iwnmLh"
 #define OPTSTR_grep	"ZzEFHabhinorsvwclqe*f*m#x[!wx][!EFw]"
 #define OPTSTR_groupadd	"<1>2g#<0S"
@@ -126,6 +126,7 @@
 #define OPTSTR_route	"?neA:"
 #define OPTSTR_sed	"(version)e*f*inr"
 #define OPTSTR_seq	"<1>3?f:s:"
+#define OPTSTR_setenforce	"<1"
 #define OPTSTR_setsid	"^<1t"
 #define OPTSTR_sh	"c:"USE_SH_INTERACTIVE("i")
 #define OPTSTR_sha1sum	"b"