]> git.saurik.com Git - apple/shell_cmds.git/commitdiff
shell_cmds-170.tar.gz mac-os-x-108 mac-os-x-1081 mac-os-x-1082 mac-os-x-1083 mac-os-x-1084 mac-os-x-1085 v170
authorApple <opensource@apple.com>
Wed, 11 Jan 2012 01:10:35 +0000 (01:10 +0000)
committerApple <opensource@apple.com>
Wed, 11 Jan 2012 01:10:35 +0000 (01:10 +0000)
96 files changed:
Makefile [deleted file]
Manpages/builtin.1 [deleted file]
PROJECT [deleted file]
alias/Makefile [deleted file]
alias/alias.c [deleted file]
alias/builtin.1 [new file with mode: 0644]
apply/Makefile [deleted file]
basename/Makefile [deleted file]
chroot/Makefile [deleted file]
date/Makefile [deleted file]
dirname/Makefile [deleted file]
echo/Makefile [deleted file]
env/Makefile [deleted file]
expr/Makefile [deleted file]
expr/expr.1
expr/expr.c [deleted file]
expr/expr.y [new file with mode: 0644]
false/Makefile [deleted file]
find/Makefile [deleted file]
find/extern.h
find/find.1
find/find.c
find/find.h
find/function.c
find/getdate.y
find/ls.c
find/main.c
find/misc.c
find/operator.c
find/option.c
getopt/Makefile [deleted file]
hexdump/conv.c [new file with mode: 0644]
hexdump/display.c [new file with mode: 0644]
hexdump/hexdump.1 [new file with mode: 0644]
hexdump/hexdump.c [new file with mode: 0644]
hexdump/hexdump.h [new file with mode: 0644]
hexdump/hexsyntax.c [new file with mode: 0644]
hexdump/od.1 [new file with mode: 0644]
hexdump/odsyntax.c [new file with mode: 0644]
hexdump/parse.c [new file with mode: 0644]
hostname/Makefile [deleted file]
id/Makefile [deleted file]
id/id.c
jot/Makefile [deleted file]
kill/Makefile [deleted file]
killall/Makefile [deleted file]
lastcomm/Makefile [deleted file]
locate/Makefile [deleted file]
locate/bigram/Makefile [deleted file]
locate/bigram/Makefile.postamble [deleted file]
locate/bigram/Makefile.preamble [deleted file]
locate/bigram/locate.bigram.8 [new file with mode: 0644]
locate/code/Makefile [deleted file]
locate/code/Makefile.postamble [deleted file]
locate/code/Makefile.preamble [deleted file]
locate/code/locate.code.8 [new file with mode: 0644]
locate/locate.code.8 [deleted file]
locate/locate/Makefile [deleted file]
locate/locate/Makefile.postamble [deleted file]
locate/locate/Makefile.preamble [deleted file]
logname/Makefile [deleted file]
machine/Makefile [deleted file]
machine/machine.1 [deleted file]
machine/machine.c [deleted file]
mktemp/Makefile [deleted file]
nice/Makefile [deleted file]
nohup/Makefile [deleted file]
path_helper/Makefile [deleted file]
printenv/Makefile [deleted file]
printf/Makefile [deleted file]
pwd/Makefile [deleted file]
renice/Makefile [deleted file]
script/Makefile [deleted file]
seq/Makefile [deleted file]
shell_cmds.xcodeproj/project.pbxproj [new file with mode: 0644]
shlock/Makefile [deleted file]
sleep/Makefile [deleted file]
su/Makefile [deleted file]
su/su.c
tee/Makefile [deleted file]
test/Makefile [deleted file]
time/Makefile [deleted file]
true/Makefile [deleted file]
uname/Makefile [deleted file]
users/Makefile [deleted file]
w/Makefile [deleted file]
what/what.1 [new file with mode: 0644]
what/what.c [new file with mode: 0644]
whereis/Makefile [deleted file]
which/Makefile [deleted file]
who/Makefile [deleted file]
xargs/Makefile [deleted file]
xcodescripts/builtins-manpages.txt [new file with mode: 0644]
xcodescripts/builtins.txt [new file with mode: 0644]
xcodescripts/install-files.sh [new file with mode: 0644]
yes/Makefile [deleted file]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 8b86ab0..0000000
--- a/Makefile
+++ /dev/null
@@ -1,110 +0,0 @@
-Project = shell_cmds
-
-Embedded=$(shell tconf --test TARGET_OS_EMBEDDED)
-
-SubProjects = alias apply basename chroot date dirname echo env expr false \
-        find getopt hostname id jot kill killall lastcomm locate logname mktemp \
-        nice nohup path_helper printenv printf pwd renice script seq shlock sleep \
-        tee test time true uname users w whereis which who xargs yes
-
-ifeq ($(Embedded),NO)
-# su requires PAM
-SubProjects += su
-endif
-
-MANPAGES = Manpages/builtin.1
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-BUILTIN_LINKS = alias.1 \
-       alloc.1 \
-       bg.1 \
-       bind.1 \
-       bindkey.1 \
-       break.1 \
-       breaksw.1 \
-       builtins.1 \
-       case.1 \
-       cd.1 \
-       chdir.1 \
-       command.1 \
-       complete.1 \
-       continue.1 \
-       default.1 \
-       dirs.1 \
-       do.1 \
-       done.1 \
-       echotc.1 \
-       elif.1 \
-       else.1 \
-       end.1 \
-       endif.1 \
-       endsw.1 \
-       esac.1 \
-       eval.1 \
-       exec.1 \
-       exit.1 \
-       export.1 \
-       fc.1 \
-       fg.1 \
-       fi.1 \
-       filetest.1 \
-       for.1 \
-       foreach.1 \
-       getopts.1 \
-       glob.1 \
-       goto.1 \
-       hash.1 \
-       hashstat.1 \
-       history.1 \
-       hup.1 \
-       if.1 \
-       jobid.1 \
-       jobs.1 \
-       limit.1 \
-       log.1 \
-       logout.1 \
-       ls-F.1 \
-       notify.1 \
-       onintr.1 \
-       popd.1 \
-       pushd.1 \
-       read.1 \
-       readonly.1 \
-       rehash.1 \
-       repeat.1 \
-       return.1 \
-       sched.1 \
-       set.1 \
-       setenv.1 \
-       settc.1 \
-       setty.1 \
-       setvar.1 \
-       shift.1 \
-       source.1 \
-       stop.1 \
-       suspend.1 \
-       switch.1 \
-       telltc.1 \
-       then.1 \
-       times.1 \
-       trap.1 \
-       type.1 \
-       ulimit.1 \
-       umask.1 \
-       unalias.1 \
-       uncomplete.1 \
-       unhash.1 \
-       unlimit.1 \
-       unset.1 \
-       unsetenv.1 \
-       until.1 \
-       wait.1 \
-       where.1 \
-       while.1
-
-after_install:
-       @echo Installing manpage links...
-       @for manpage in $(BUILTIN_LINKS); do \
-               $(LN) -f $(DSTROOT)/usr/share/man/man1/builtin.1 $(DSTROOT)/usr/share/man/man1/$${manpage}; \
-       done
diff --git a/Manpages/builtin.1 b/Manpages/builtin.1
deleted file mode 100644 (file)
index 562e855..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-.\"
-.\" Copyright (c) 1999 Sheldon Hearn
-.\"
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD: /repoman/r/ncvs/src/share/man/man1/builtin.1,v 1.25 2005/09/09 17:02:08 garys Exp $
-.\"
-.Dd February 23, 2005
-.Dt BUILTIN 1
-.Os
-.Sh NAME
-.Nm builtin ,
-.Nm \&! ,
-.Nm \&% ,
-.Nm \&. ,
-.Nm \&: ,
-.Nm \&@ ,
-.Nm \&{ ,
-.Nm \&} ,
-.Nm alias ,
-.Nm alloc ,
-.Nm bg ,
-.Nm bind ,
-.Nm bindkey ,
-.Nm break ,
-.Nm breaksw ,
-.Nm builtins ,
-.Nm case ,
-.Nm cd ,
-.Nm chdir ,
-.Nm command ,
-.Nm complete ,
-.Nm continue ,
-.Nm default ,
-.Nm dirs ,
-.Nm do ,
-.Nm done ,
-.Nm echo ,
-.Nm echotc ,
-.Nm elif ,
-.Nm else ,
-.Nm end ,
-.Nm endif ,
-.Nm endsw ,
-.Nm esac ,
-.Nm eval ,
-.Nm exec ,
-.Nm exit ,
-.Nm export ,
-.Nm false ,
-.Nm fc ,
-.Nm fg ,
-.Nm filetest ,
-.Nm fi ,
-.Nm for ,
-.Nm foreach ,
-.Nm getopts ,
-.Nm glob ,
-.Nm goto ,
-.Nm hash ,
-.Nm hashstat ,
-.Nm history ,
-.Nm hup ,
-.Nm if ,
-.Nm jobid ,
-.Nm jobs ,
-.Nm kill ,
-.Nm limit ,
-.Nm local ,
-.Nm log ,
-.Nm login ,
-.Nm logout ,
-.Nm ls-F ,
-.Nm nice ,
-.Nm nohup ,
-.Nm notify ,
-.Nm onintr ,
-.Nm popd ,
-.Nm printenv ,
-.Nm pushd ,
-.Nm pwd ,
-.Nm read ,
-.Nm readonly ,
-.Nm rehash ,
-.Nm repeat ,
-.Nm return ,
-.Nm sched ,
-.Nm set ,
-.Nm setenv ,
-.Nm settc ,
-.Nm setty ,
-.Nm setvar ,
-.Nm shift ,
-.Nm source ,
-.Nm stop ,
-.Nm suspend ,
-.Nm switch ,
-.Nm telltc ,
-.Nm test ,
-.Nm then ,
-.Nm time ,
-.Nm times ,
-.Nm trap ,
-.Nm true ,
-.Nm type ,
-.Nm ulimit ,
-.Nm umask ,
-.Nm unalias ,
-.Nm uncomplete ,
-.Nm unhash ,
-.Nm unlimit ,
-.Nm unset ,
-.Nm unsetenv ,
-.Nm until ,
-.Nm wait ,
-.Nm where ,
-.Nm which ,
-.Nm while
-.Nd shell built-in commands
-.Sh SYNOPSIS
-.Nm
-.Op Fl options
-.Op Ar args ...
-.Sh DESCRIPTION
-Shell builtin commands are commands that can be executed within the
-running shell's process.
-Note that, in the case of
-.Xr csh 1
-builtin commands, the command is executed in a subshell if it occurs as
-any component of a pipeline except the last.
-.Pp
-If a command specified to the shell contains a slash
-.Dq \&/ ,
-the shell will not execute a builtin command, even if the last component
-of the specified command matches the name of a builtin command.
-Thus, while specifying
-.Dq Ic echo
-causes a builtin command to be executed under shells that support the
-.Nm echo
-builtin command,
-specifying
-.Dq Ic /bin/echo
-or
-.Dq Ic ./echo
-does not.
-.Pp
-While some builtin commands may exist in more than one shell, their
-operation may be different under each shell which supports them.
-Below is a table which lists shell builtin commands, the standard shells
-that support them and whether they exist as standalone utilities.
-.Pp
-Only builtin commands for the
-.Xr csh 1
-and
-.Xr sh 1
-shells are listed here.
-Consult a shell's manual page for
-details on the operation of its builtin commands.
-Beware that the
-.Xr sh 1
-manual page, at least, calls some of these commands
-.Dq built-in commands
-and some of them
-.Dq reserved words .
-Users of other shells may need to consult an
-.Xr info 1
-page or other sources of documentation.
-.Pp
-Commands marked
-.Dq Li No**
-under
-.Em External
-do exist externally,
-but are implemented as scripts using a builtin command of the same name.
-.Bl -column ".Ic uncomplete" ".Em External" ".Xr csh 1" ".Xr sh 1" -offset indent
-.It Xo
-.Em "Command   External" Ta Xr csh 1 Ta Xr sh 1
-.Xc
-.It Ic ! Ta \&No Ta \&No Ta \&Yes
-.It Ic % Ta \&No Ta Yes Ta \&No
-.It Ic . Ta \&No Ta \&No Ta Yes
-.It Ic : Ta \&No Ta Yes Ta Yes
-.It Ic @ Ta \&No Ta Yes Ta Yes
-.It Ic { Ta \&No Ta \&No Ta \&Yes
-.It Ic } Ta \&No Ta \&No Ta \&Yes
-.It Ic alias Ta \&No** Ta Yes Ta Yes
-.It Ic alloc Ta \&No Ta Yes Ta \&No
-.It Ic bg Ta No** Ta Yes Ta Yes
-.It Ic bind Ta \&No Ta \&No Ta Yes
-.It Ic bindkey Ta \&No Ta Yes Ta \&No
-.It Ic break Ta \&No Ta Yes Ta \&Yes
-.It Ic breaksw Ta \&No Ta Yes Ta \&No
-.It Ic builtin Ta \&No Ta \&No Ta Yes
-.It Ic builtins Ta \&No Ta Yes Ta \&No
-.It Ic case Ta \&No Ta Yes Ta Yes
-.It Ic cd Ta \&No** Ta Yes Ta Yes
-.It Ic chdir Ta \&No Ta Yes Ta \&Yes
-.It Ic command Ta \&No** Ta \&No Ta Yes
-.It Ic complete Ta \&No Ta Yes Ta \&No
-.It Ic continue Ta \&No Ta Yes Ta \&Yes
-.It Ic default Ta \&No Ta Yes Ta \&No
-.It Ic dirs Ta \&No Ta Yes Ta \&No
-.It Ic do Ta \&No Ta \&No Ta Yes
-.It Ic done Ta \&No Ta \&No Ta Yes
-.It Ic echo Ta Yes Ta Yes Ta Yes
-.It Ic echotc Ta \&No Ta Yes Ta \&No
-.It Ic elif Ta \&No Ta \&No Ta Yes
-.It Ic else Ta \&No Ta Yes Ta \&Yes
-.It Ic end Ta \&No Ta Yes Ta \&No
-.It Ic endif Ta \&No Ta Yes Ta \&No
-.It Ic endsw Ta \&No Ta Yes Ta \&No
-.It Ic esac Ta \&No Ta \&No Ta Yes
-.It Ic eval Ta \&No Ta Yes Ta Yes
-.It Ic exec Ta \&No Ta Yes Ta Yes
-.It Ic exit Ta \&No Ta Yes Ta Yes
-.It Ic export Ta \&No Ta \&No Ta Yes
-.It Ic false Ta Yes Ta \&No Ta Yes
-.It Ic fc Ta \&No** Ta \&No Ta Yes
-.It Ic fg Ta \&No** Ta Yes Ta Yes
-.It Ic filetest Ta \&No Ta Yes Ta \&No
-.It Ic fi Ta \&No Ta \&No Ta Yes
-.It Ic for Ta \&No Ta \&No Ta Yes
-.It Ic foreach Ta \&No Ta Yes Ta \&No
-.It Ic getopts Ta \&No** Ta \&No Ta Yes
-.It Ic glob Ta \&No Ta Yes Ta \&No
-.It Ic goto Ta \&No Ta Yes Ta \&No
-.It Ic hash Ta \&No Ta \&No Ta Yes
-.It Ic hashstat Ta \&No Ta Yes Ta \&No
-.It Ic history Ta \&No Ta Yes Ta \&No
-.It Ic hup Ta \&No Ta Yes Ta \&No
-.It Ic if Ta \&No Ta Yes Ta \&Yes
-.It Ic jobid Ta \&No Ta \&No Ta Yes
-.It Ic jobs Ta \&No** Ta Yes Ta Yes
-.It Ic kill Ta Yes Ta Yes Ta \&No
-.It Ic limit Ta \&No Ta Yes Ta \&No
-.It Ic local Ta \&No Ta \&No Ta Yes
-.It Ic log Ta \&No Ta Yes Ta \&No
-.It Ic login Ta Yes Ta Yes Ta \&No
-.It Ic logout Ta \&No Ta Yes Ta \&No
-.It Ic ls-F Ta \&No Ta Yes Ta \&No
-.It Ic nice Ta Yes Ta Yes Ta \&No
-.It Ic nohup Ta Yes Ta Yes Ta \&No
-.It Ic notify Ta \&No Ta Yes Ta \&No
-.It Ic onintr Ta \&No Ta Yes Ta \&No
-.It Ic popd Ta \&No Ta Yes Ta \&No
-.It Ic printenv Ta Yes Ta Yes Ta \&No
-.It Ic pushd Ta \&No Ta Yes Ta \&No
-.It Ic pwd Ta Yes Ta \&No Ta Yes
-.It Ic read Ta \&No** Ta \&No Ta Yes
-.It Ic readonly Ta \&No Ta \&No Ta Yes
-.It Ic rehash Ta \&No Ta Yes Ta \&No
-.It Ic repeat Ta \&No Ta Yes Ta \&No
-.It Ic return Ta \&No Ta \&No Ta Yes
-.It Ic sched Ta \&No Ta Yes Ta \&No
-.It Ic set Ta \&No Ta Yes Ta \&Yes
-.It Ic setenv Ta \&No Ta Yes Ta \&No
-.It Ic settc Ta \&No Ta Yes Ta \&No
-.It Ic setty Ta \&No Ta Yes Ta \&No
-.It Ic setvar Ta \&No Ta \&No Ta Yes
-.It Ic shift Ta \&No Ta Yes Ta Yes
-.It Ic source Ta \&No Ta Yes Ta \&No
-.It Ic stop Ta \&No Ta Yes Ta \&No
-.It Ic suspend Ta \&No Ta Yes Ta \&No
-.It Ic switch Ta \&No Ta Yes Ta \&No
-.It Ic telltc Ta \&No Ta Yes Ta \&No
-.It Ic test Ta Yes Ta \&No Ta Yes
-.It Ic then Ta \&No Ta \&No Ta Yes
-.It Ic time Ta Yes Ta Yes Ta \&No
-.It Ic times Ta \&No Ta \&No Ta Yes
-.It Ic trap Ta \&No Ta \&No Ta Yes
-.It Ic true Ta Yes Ta \&No Ta Yes
-.It Ic type Ta \&No Ta \&No Ta Yes
-.It Ic ulimit Ta \&No Ta \&No Ta Yes
-.It Ic umask Ta \&No** Ta Yes Ta Yes
-.It Ic unalias Ta \&No** Ta Yes Ta Yes
-.It Ic uncomplete Ta \&No Ta Yes Ta \&No
-.It Ic unhash Ta \&No Ta Yes Ta \&No
-.It Ic unlimit Ta \&No Ta Yes Ta \&No
-.It Ic unset Ta \&No Ta Yes Ta Yes
-.It Ic unsetenv Ta \&No Ta Yes Ta \&No
-.It Ic until Ta \&No Ta \&No Ta Yes
-.It Ic wait Ta \&No** Ta Yes Ta Yes
-.It Ic where Ta \&No Ta Yes Ta \&No
-.It Ic which Ta Yes Ta Yes Ta \&No
-.It Ic while Ta \&No Ta Yes Ta \&Yes
-.El
-.Sh SEE ALSO
-.Xr csh 1 ,
-.Xr echo 1 ,
-.Xr false 1 ,
-.Xr info 1 ,
-.Xr kill 1 ,
-.Xr login 1 ,
-.Xr nice 1 ,
-.Xr nohup 1 ,
-.Xr printenv 1 ,
-.Xr pwd 1 ,
-.Xr sh 1 ,
-.Xr test 1 ,
-.Xr time 1 ,
-.Xr true 1 ,
-.Xr which 1
-.Sh HISTORY
-The
-.Nm
-manual page first appeared in
-.Fx 3.4 .
-.Sh AUTHORS
-This manual page was written by
-.An Sheldon Hearn Aq sheldonh@FreeBSD.org .
diff --git a/PROJECT b/PROJECT
deleted file mode 100644 (file)
index 41782bc..0000000
--- a/PROJECT
+++ /dev/null
@@ -1,12 +0,0 @@
-Project                : shell_cmds
-Description    : Shell Commands
-Distribution   : NetBSD Fri Oct  9 20:13:59 PDT 1998
-Source         : NetBSD Foundation, Inc.
-Location       : cvs.netbsd.org:/cvsroot
-Owner          : wsanchez
-Releases       : Titan
-Dependancies   : 
-
-machine is disabled in favor of arch, which installs a link to itself as machine.
-
-w/fmt.c is copied from ps/fmt.c. We aren't doing the CVS trick of checking out that code from ps, because we don't use BSD ps; ps is a Mach client.
diff --git a/alias/Makefile b/alias/Makefile
deleted file mode 100644 (file)
index 123299b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Project = alias
-Install_Dir = /usr/bin
-
-MANPAGES = alias.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-BUILTINS = bg cd command fc fg getopts hash jobs read type ulimit umask unalias wait
-
-after_install:
-       $(INSTALL_SCRIPT) generic.sh $(DSTROOT)$(Install_Dir)/alias
-       @for builtin in $(BUILTINS); do \
-               $(LN) $(DSTROOT)/$(Install_Dir)/alias \
-                       "$(DSTROOT)/$(Install_Dir)/$${builtin}" ; \
-       done
-#              $(LN) $(DSTROOT)/usr/share/man/man1/alias.1 \
-#                      "$(DSTROOT)/usr/share/man/man1/$${builtin}.1" ; \
diff --git a/alias/alias.c b/alias/alias.c
deleted file mode 100644 (file)
index 23abd94..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-/* This file is a dummy file to make the Makefile to work correctly to install
-   the shell scripts. It does not lead to any deliverable. Do not remove this
-   file from this (..../shell_cmds/alias) directory.
-*/
-int main()
-{
-  exit(0);
-}
-
diff --git a/alias/builtin.1 b/alias/builtin.1
new file mode 100644 (file)
index 0000000..562e855
--- /dev/null
@@ -0,0 +1,331 @@
+.\"
+.\" Copyright (c) 1999 Sheldon Hearn
+.\"
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: /repoman/r/ncvs/src/share/man/man1/builtin.1,v 1.25 2005/09/09 17:02:08 garys Exp $
+.\"
+.Dd February 23, 2005
+.Dt BUILTIN 1
+.Os
+.Sh NAME
+.Nm builtin ,
+.Nm \&! ,
+.Nm \&% ,
+.Nm \&. ,
+.Nm \&: ,
+.Nm \&@ ,
+.Nm \&{ ,
+.Nm \&} ,
+.Nm alias ,
+.Nm alloc ,
+.Nm bg ,
+.Nm bind ,
+.Nm bindkey ,
+.Nm break ,
+.Nm breaksw ,
+.Nm builtins ,
+.Nm case ,
+.Nm cd ,
+.Nm chdir ,
+.Nm command ,
+.Nm complete ,
+.Nm continue ,
+.Nm default ,
+.Nm dirs ,
+.Nm do ,
+.Nm done ,
+.Nm echo ,
+.Nm echotc ,
+.Nm elif ,
+.Nm else ,
+.Nm end ,
+.Nm endif ,
+.Nm endsw ,
+.Nm esac ,
+.Nm eval ,
+.Nm exec ,
+.Nm exit ,
+.Nm export ,
+.Nm false ,
+.Nm fc ,
+.Nm fg ,
+.Nm filetest ,
+.Nm fi ,
+.Nm for ,
+.Nm foreach ,
+.Nm getopts ,
+.Nm glob ,
+.Nm goto ,
+.Nm hash ,
+.Nm hashstat ,
+.Nm history ,
+.Nm hup ,
+.Nm if ,
+.Nm jobid ,
+.Nm jobs ,
+.Nm kill ,
+.Nm limit ,
+.Nm local ,
+.Nm log ,
+.Nm login ,
+.Nm logout ,
+.Nm ls-F ,
+.Nm nice ,
+.Nm nohup ,
+.Nm notify ,
+.Nm onintr ,
+.Nm popd ,
+.Nm printenv ,
+.Nm pushd ,
+.Nm pwd ,
+.Nm read ,
+.Nm readonly ,
+.Nm rehash ,
+.Nm repeat ,
+.Nm return ,
+.Nm sched ,
+.Nm set ,
+.Nm setenv ,
+.Nm settc ,
+.Nm setty ,
+.Nm setvar ,
+.Nm shift ,
+.Nm source ,
+.Nm stop ,
+.Nm suspend ,
+.Nm switch ,
+.Nm telltc ,
+.Nm test ,
+.Nm then ,
+.Nm time ,
+.Nm times ,
+.Nm trap ,
+.Nm true ,
+.Nm type ,
+.Nm ulimit ,
+.Nm umask ,
+.Nm unalias ,
+.Nm uncomplete ,
+.Nm unhash ,
+.Nm unlimit ,
+.Nm unset ,
+.Nm unsetenv ,
+.Nm until ,
+.Nm wait ,
+.Nm where ,
+.Nm which ,
+.Nm while
+.Nd shell built-in commands
+.Sh SYNOPSIS
+.Nm
+.Op Fl options
+.Op Ar args ...
+.Sh DESCRIPTION
+Shell builtin commands are commands that can be executed within the
+running shell's process.
+Note that, in the case of
+.Xr csh 1
+builtin commands, the command is executed in a subshell if it occurs as
+any component of a pipeline except the last.
+.Pp
+If a command specified to the shell contains a slash
+.Dq \&/ ,
+the shell will not execute a builtin command, even if the last component
+of the specified command matches the name of a builtin command.
+Thus, while specifying
+.Dq Ic echo
+causes a builtin command to be executed under shells that support the
+.Nm echo
+builtin command,
+specifying
+.Dq Ic /bin/echo
+or
+.Dq Ic ./echo
+does not.
+.Pp
+While some builtin commands may exist in more than one shell, their
+operation may be different under each shell which supports them.
+Below is a table which lists shell builtin commands, the standard shells
+that support them and whether they exist as standalone utilities.
+.Pp
+Only builtin commands for the
+.Xr csh 1
+and
+.Xr sh 1
+shells are listed here.
+Consult a shell's manual page for
+details on the operation of its builtin commands.
+Beware that the
+.Xr sh 1
+manual page, at least, calls some of these commands
+.Dq built-in commands
+and some of them
+.Dq reserved words .
+Users of other shells may need to consult an
+.Xr info 1
+page or other sources of documentation.
+.Pp
+Commands marked
+.Dq Li No**
+under
+.Em External
+do exist externally,
+but are implemented as scripts using a builtin command of the same name.
+.Bl -column ".Ic uncomplete" ".Em External" ".Xr csh 1" ".Xr sh 1" -offset indent
+.It Xo
+.Em "Command   External" Ta Xr csh 1 Ta Xr sh 1
+.Xc
+.It Ic ! Ta \&No Ta \&No Ta \&Yes
+.It Ic % Ta \&No Ta Yes Ta \&No
+.It Ic . Ta \&No Ta \&No Ta Yes
+.It Ic : Ta \&No Ta Yes Ta Yes
+.It Ic @ Ta \&No Ta Yes Ta Yes
+.It Ic { Ta \&No Ta \&No Ta \&Yes
+.It Ic } Ta \&No Ta \&No Ta \&Yes
+.It Ic alias Ta \&No** Ta Yes Ta Yes
+.It Ic alloc Ta \&No Ta Yes Ta \&No
+.It Ic bg Ta No** Ta Yes Ta Yes
+.It Ic bind Ta \&No Ta \&No Ta Yes
+.It Ic bindkey Ta \&No Ta Yes Ta \&No
+.It Ic break Ta \&No Ta Yes Ta \&Yes
+.It Ic breaksw Ta \&No Ta Yes Ta \&No
+.It Ic builtin Ta \&No Ta \&No Ta Yes
+.It Ic builtins Ta \&No Ta Yes Ta \&No
+.It Ic case Ta \&No Ta Yes Ta Yes
+.It Ic cd Ta \&No** Ta Yes Ta Yes
+.It Ic chdir Ta \&No Ta Yes Ta \&Yes
+.It Ic command Ta \&No** Ta \&No Ta Yes
+.It Ic complete Ta \&No Ta Yes Ta \&No
+.It Ic continue Ta \&No Ta Yes Ta \&Yes
+.It Ic default Ta \&No Ta Yes Ta \&No
+.It Ic dirs Ta \&No Ta Yes Ta \&No
+.It Ic do Ta \&No Ta \&No Ta Yes
+.It Ic done Ta \&No Ta \&No Ta Yes
+.It Ic echo Ta Yes Ta Yes Ta Yes
+.It Ic echotc Ta \&No Ta Yes Ta \&No
+.It Ic elif Ta \&No Ta \&No Ta Yes
+.It Ic else Ta \&No Ta Yes Ta \&Yes
+.It Ic end Ta \&No Ta Yes Ta \&No
+.It Ic endif Ta \&No Ta Yes Ta \&No
+.It Ic endsw Ta \&No Ta Yes Ta \&No
+.It Ic esac Ta \&No Ta \&No Ta Yes
+.It Ic eval Ta \&No Ta Yes Ta Yes
+.It Ic exec Ta \&No Ta Yes Ta Yes
+.It Ic exit Ta \&No Ta Yes Ta Yes
+.It Ic export Ta \&No Ta \&No Ta Yes
+.It Ic false Ta Yes Ta \&No Ta Yes
+.It Ic fc Ta \&No** Ta \&No Ta Yes
+.It Ic fg Ta \&No** Ta Yes Ta Yes
+.It Ic filetest Ta \&No Ta Yes Ta \&No
+.It Ic fi Ta \&No Ta \&No Ta Yes
+.It Ic for Ta \&No Ta \&No Ta Yes
+.It Ic foreach Ta \&No Ta Yes Ta \&No
+.It Ic getopts Ta \&No** Ta \&No Ta Yes
+.It Ic glob Ta \&No Ta Yes Ta \&No
+.It Ic goto Ta \&No Ta Yes Ta \&No
+.It Ic hash Ta \&No Ta \&No Ta Yes
+.It Ic hashstat Ta \&No Ta Yes Ta \&No
+.It Ic history Ta \&No Ta Yes Ta \&No
+.It Ic hup Ta \&No Ta Yes Ta \&No
+.It Ic if Ta \&No Ta Yes Ta \&Yes
+.It Ic jobid Ta \&No Ta \&No Ta Yes
+.It Ic jobs Ta \&No** Ta Yes Ta Yes
+.It Ic kill Ta Yes Ta Yes Ta \&No
+.It Ic limit Ta \&No Ta Yes Ta \&No
+.It Ic local Ta \&No Ta \&No Ta Yes
+.It Ic log Ta \&No Ta Yes Ta \&No
+.It Ic login Ta Yes Ta Yes Ta \&No
+.It Ic logout Ta \&No Ta Yes Ta \&No
+.It Ic ls-F Ta \&No Ta Yes Ta \&No
+.It Ic nice Ta Yes Ta Yes Ta \&No
+.It Ic nohup Ta Yes Ta Yes Ta \&No
+.It Ic notify Ta \&No Ta Yes Ta \&No
+.It Ic onintr Ta \&No Ta Yes Ta \&No
+.It Ic popd Ta \&No Ta Yes Ta \&No
+.It Ic printenv Ta Yes Ta Yes Ta \&No
+.It Ic pushd Ta \&No Ta Yes Ta \&No
+.It Ic pwd Ta Yes Ta \&No Ta Yes
+.It Ic read Ta \&No** Ta \&No Ta Yes
+.It Ic readonly Ta \&No Ta \&No Ta Yes
+.It Ic rehash Ta \&No Ta Yes Ta \&No
+.It Ic repeat Ta \&No Ta Yes Ta \&No
+.It Ic return Ta \&No Ta \&No Ta Yes
+.It Ic sched Ta \&No Ta Yes Ta \&No
+.It Ic set Ta \&No Ta Yes Ta \&Yes
+.It Ic setenv Ta \&No Ta Yes Ta \&No
+.It Ic settc Ta \&No Ta Yes Ta \&No
+.It Ic setty Ta \&No Ta Yes Ta \&No
+.It Ic setvar Ta \&No Ta \&No Ta Yes
+.It Ic shift Ta \&No Ta Yes Ta Yes
+.It Ic source Ta \&No Ta Yes Ta \&No
+.It Ic stop Ta \&No Ta Yes Ta \&No
+.It Ic suspend Ta \&No Ta Yes Ta \&No
+.It Ic switch Ta \&No Ta Yes Ta \&No
+.It Ic telltc Ta \&No Ta Yes Ta \&No
+.It Ic test Ta Yes Ta \&No Ta Yes
+.It Ic then Ta \&No Ta \&No Ta Yes
+.It Ic time Ta Yes Ta Yes Ta \&No
+.It Ic times Ta \&No Ta \&No Ta Yes
+.It Ic trap Ta \&No Ta \&No Ta Yes
+.It Ic true Ta Yes Ta \&No Ta Yes
+.It Ic type Ta \&No Ta \&No Ta Yes
+.It Ic ulimit Ta \&No Ta \&No Ta Yes
+.It Ic umask Ta \&No** Ta Yes Ta Yes
+.It Ic unalias Ta \&No** Ta Yes Ta Yes
+.It Ic uncomplete Ta \&No Ta Yes Ta \&No
+.It Ic unhash Ta \&No Ta Yes Ta \&No
+.It Ic unlimit Ta \&No Ta Yes Ta \&No
+.It Ic unset Ta \&No Ta Yes Ta Yes
+.It Ic unsetenv Ta \&No Ta Yes Ta \&No
+.It Ic until Ta \&No Ta \&No Ta Yes
+.It Ic wait Ta \&No** Ta Yes Ta Yes
+.It Ic where Ta \&No Ta Yes Ta \&No
+.It Ic which Ta Yes Ta Yes Ta \&No
+.It Ic while Ta \&No Ta Yes Ta \&Yes
+.El
+.Sh SEE ALSO
+.Xr csh 1 ,
+.Xr echo 1 ,
+.Xr false 1 ,
+.Xr info 1 ,
+.Xr kill 1 ,
+.Xr login 1 ,
+.Xr nice 1 ,
+.Xr nohup 1 ,
+.Xr printenv 1 ,
+.Xr pwd 1 ,
+.Xr sh 1 ,
+.Xr test 1 ,
+.Xr time 1 ,
+.Xr true 1 ,
+.Xr which 1
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.4 .
+.Sh AUTHORS
+This manual page was written by
+.An Sheldon Hearn Aq sheldonh@FreeBSD.org .
diff --git a/apply/Makefile b/apply/Makefile
deleted file mode 100644 (file)
index 6b0bc94..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = apply
-Install_Dir = /usr/bin
-
-CFILES = apply.c
-MANPAGES = apply.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/basename/Makefile b/basename/Makefile
deleted file mode 100644 (file)
index a645b3c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = basename
-Install_Dir = /usr/bin
-
-CFILES = basename.c
-MANPAGES = basename.1 dirname.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/chroot/Makefile b/chroot/Makefile
deleted file mode 100644 (file)
index cb53772..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = chroot
-Install_Dir = /usr/sbin
-
-CFILES = chroot.c
-MANPAGES = chroot.8
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/date/Makefile b/date/Makefile
deleted file mode 100644 (file)
index eb3ac02..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Project = date
-Install_Dir = /bin
-
-HFILES = extern.h vary.h
-CFILES = date.c netdate.c vary.c
-MANPAGES = date.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/dirname/Makefile b/dirname/Makefile
deleted file mode 100644 (file)
index be93458..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-Project = dirname
-Install_Dir = /usr/bin
-
-CFILES = dirname.c
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/echo/Makefile b/echo/Makefile
deleted file mode 100644 (file)
index 1763229..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = echo
-Install_Dir = /bin
-
-CFILES = echo.c
-MANPAGES = echo.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/env/Makefile b/env/Makefile
deleted file mode 100644 (file)
index a1f3756..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = env
-Install_Dir = /usr/bin
-
-CFILES = env.c
-MANPAGES = env.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/expr/Makefile b/expr/Makefile
deleted file mode 100644 (file)
index 109008b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = expr
-Install_Dir = /bin
-
-CFILES = expr.c
-MANPAGES = expr.1
-
-Extra_CC_Flags = -Wall \
-       -D__DARWIN_UNIX03=1
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
index ffc901589b573499019f6d8b216827a2fd0462ae..9c8090c4c95d33e170678d3303ea87d7c66201f6 100644 (file)
@@ -1,9 +1,36 @@
-.\"    $NetBSD: expr.1,v 1.10 1997/10/20 08:51:56 enami Exp $
+.\" -*- nroff -*-
+.\"-
+.\" Copyright (c) 1993 Winning Strategies, Inc.
+.\" All rights reserved.
 .\"
-.\" Written by J.T. Conklin <jtc@netbsd.org>.
-.\" Public domain.
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"      This product includes software developed by Winning Strategies, Inc.
+.\" 4. The name of the author may not be used to endorse or promote products
+.\"    derived from this software without specific prior written permission
 .\"
-.Dd July 3, 1993
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD: src/bin/expr/expr.1,v 1.31 2011/07/09 12:05:53 se Exp $
+.\"
+.Dd September 9, 2010
 .Dt EXPR 1
 .Os
 .Sh NAME
 .Sh DESCRIPTION
 The
 .Nm
-utility evaluates 
+utility evaluates
 .Ar expression
 and writes the result on standard output.
 .Pp
-All operators are separate arguments to the
-.Nm
-utility.
-Characters special to the command interpreter must be escaped.
+All operators and operands must be passed as separate arguments.
+Several of the operators have special meaning to command interpreters
+and must therefore be quoted appropriately.
+All integer operands are interpreted in base 10 and must consist of only
+an optional leading minus sign followed by one or more digits.
 .Pp
-Operators are listed below in order of increasing precedence.
-Operators with equal precedence are grouped within { } symbols.
+Arithmetic operations are performed using signed integer math with a
+range according to the C
+.Vt intmax_t
+data type (the largest signed integral type available).
+All conversions and operations are checked for overflow.
+Overflow results in program termination with an error message on stdout
+and with an error status.
+.Pp
+Operators are listed below in order of increasing precedence; all
+are left-associative.
+Operators with equal precedence are grouped within symbols
+.Ql {
+and
+.Ql } .
 .Bl -tag -width indent
 .It Ar expr1 Li | Ar expr2
-Returns the evaluation of 
-.Ar expr1 
+Return the evaluation of
+.Ar expr1
 if it is neither an empty string nor zero;
 otherwise, returns the evaluation of
-.Ar expr2 .
+.Ar expr2
+if it is not an empty string;
+otherwise, returns zero.
 .It Ar expr1 Li & Ar expr2
-Returns the evaluation of
+Return the evaluation of
 .Ar expr1
 if neither expression evaluates to an empty string or zero;
 otherwise, returns zero.
 .It Ar expr1 Li "{=, >, >=, <, <=, !=}" Ar expr2
-Returns the results of integer comparison if both arguments are integers; 
+Return the results of integer comparison if both arguments are integers;
 otherwise, returns the results of string comparison using the locale-specific
 collation sequence.
 The result of each comparison is 1 if the specified relation is true,
 or 0 if the relation is false.
 .It Ar expr1 Li "{+, -}" Ar expr2
-Returns the results of addition or subtraction of integer-valued arguments.
+Return the results of addition or subtraction of integer-valued arguments.
 .It Ar expr1 Li "{*, /, %}" Ar expr2
-Returns the results of multiplication, integer division, or remainder of integer-valued arguments.
+Return the results of multiplication, integer division, or remainder of integer-valued arguments.
 .It Ar expr1 Li : Ar expr2
-The 
-.Dq \&:
-operator matches 
-.Ar expr1 
-against 
+The
+.Dq Li \&:
+operator matches
+.Ar expr1
+against
 .Ar expr2 ,
-which must be a regular expression.  The regular expression is anchored
-to the beginning of  the string with an implicit 
-.Dq ^ .
-.Nm
-expects "basic" regular expressions, see 
-.Xr re_format 7
-for more information on regular expressions.
+which must be a basic regular expression.
+The regular expression is anchored
+to the beginning of the string with an implicit
+.Dq Li ^ .
 .Pp
 If the match succeeds and the pattern contains at least one regular
-expression subexpression 
-.Dq "\e(...\e)" , 
-the string corresponding to 
-.Dq "\e1"
+expression subexpression
+.Dq Li "\e(...\e)" ,
+the string corresponding to
+.Dq Li \e1
 is returned;
-otherwise the matching operator returns the number of characters matched. 
+otherwise the matching operator returns the number of characters matched.
 If the match fails and the pattern contains a regular expression subexpression
 the null string is returned;
 otherwise 0.
 .El
 .Pp
 Parentheses are used for grouping in the usual manner.
-.Sh EXAMPLES
-.Bl -enum
-.It 
-The following example adds one to the variable a.
-.Dl a=`expr $a + 1`
-.It
-The following example returns the filename portion of a pathname stored
-in variable a.  The // characters act to eliminate ambiguity with the
-division operator.
-.Dl expr "//$a" Li : '.*/\e(.*\e)'
-.It
-The following example returns the number of characters in variable a.
-.Dl expr $a Li : '.*'
-.El
-.Sh DIAGNOSTICS
+.Pp
+The
+.Nm
+utility makes no lexical distinction between arguments which may be
+operators and arguments which may be operands.
+An operand which is lexically identical to an operator will be considered a
+syntax error.
+See the examples below for a work-around.
+.Pp
+The syntax of the
+.Nm
+command in general is historic and inconvenient.
+New applications are advised to use shell arithmetic rather than
+.Nm .
+.Sh EXIT STATUS
 The
 .Nm
 utility exits with one of the following values:
-.Bl -tag -width Ds -compact
+.Bl -tag -width indent -compact
 .It 0
 the expression is neither an empty string nor 0.
 .It 1
@@ -102,8 +141,95 @@ the expression is an empty string or 0.
 .It 2
 the expression is invalid.
 .El
+.Sh EXAMPLES
+.Bl -bullet
+.It
+The following example (in
+.Xr sh 1
+syntax) adds one to the variable
+.Va a :
+.Dl "a=$(expr $a + 1)"
+.It
+This will fail if the value of
+.Va a
+is a negative number.
+To protect negative values of
+.Va a
+from being interpreted as options to the
+.Nm
+command, one might rearrange the expression:
+.Dl "a=$(expr 1 + $a)"
+.It
+More generally, parenthesize possibly-negative values:
+.Dl "a=$(expr \e( $a \e) + 1)"
+.It
+With shell arithmetic, no escaping is required:
+.Dl "a=$((a + 1))"
+.It
+This example prints the filename portion of a pathname stored
+in variable
+.Va a .
+Since
+.Va a
+might represent the path
+.Pa / ,
+it is necessary to prevent it from being interpreted as the division operator.
+The
+.Li //
+characters resolve this ambiguity.
+.Dl "expr \*q//$a\*q \&: '.*/\e(.*\e)'"
+.It
+With modern
+.Xr sh 1
+syntax,
+.Dl "\*q${a##*/}\*q"
+expands to the same value.
+.El
+.Pp
+The following examples output the number of characters in variable
+.Va a .
+Again, if
+.Va a
+might begin with a hyphen, it is necessary to prevent it from being
+interpreted as an option to
+.Nm ,
+and
+.Va a
+might be interpreted as an operator.
+.Bl -bullet
+.It
+To deal with all of this, a complicated command
+is required:
+.Dl "expr \e( \*qX$a\*q \&: \*q.*\*q \e) - 1"
+.It
+With modern
+.Xr sh 1
+syntax, this can be done much more easily:
+.Dl "${#a}"
+expands to the required number.
+.El
+.Sh SEE ALSO
+.Xr sh 1 ,
+.Xr test 1
 .Sh STANDARDS
 The
 .Nm
 utility conforms to
-.St -p1003.2 .
+.St -p1003.1-2008 .
+.Pp
+The extended arithmetic range and overflow checks do not conflict with
+POSIX's requirement that arithmetic be done using signed longs, since
+they only make a difference to the result in cases where using signed
+longs would give undefined behavior.
+.Pp
+According to the
+.Tn POSIX
+standard, the use of string arguments
+.Va length ,
+.Va substr ,
+.Va index ,
+or
+.Va match
+produces undefined results. In this version of
+.Nm ,
+these arguments are treated just as their respective string values.
diff --git a/expr/expr.c b/expr/expr.c
deleted file mode 100644 (file)
index 590608c..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-/*     $NetBSD: expr.c,v 1.9 1998/07/28 11:41:48 mycroft Exp $ */
-
-/*
- * Written by J.T. Conklin <jtc@netbsd.org>.
- * Public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-#include <ctype.h>
-#include <regex.h>
-#include <err.h>
-
-
-enum token {
-       OR, AND, EQ, LT, GT, ADD, SUB, MUL, DIV, MOD, MATCH, RP, LP,
-       NE, LE, GE, OPERAND, EOI
-};
-
-struct val {
-       enum {
-               integer,
-               string
-       } type;
-
-       union {
-               char           *s;
-               int64_t             i;
-       } u;
-};
-
-enum token     token;
-struct val     *tokval;
-char          **av;
-
-struct val *make_int __P((int64_t));
-struct val *make_str __P((char *));
-void free_value __P((struct val *));
-int is_integer __P((struct val *, int64_t *));
-int to_integer __P((struct val *));
-void to_string __P((struct val *));
-int is_null __P((struct val *));
-int is_zero_or_null __P((struct val *));
-void nexttoken __P((void));
-void error __P((void)) __attribute__((__noreturn__));
-struct val *eval6 __P((void));
-struct val *eval5 __P((void));
-struct val *eval4 __P((void));
-struct val *eval3 __P((void));
-struct val *eval2 __P((void));
-struct val *eval1 __P((void));
-struct val *eval0 __P((void));
-int main __P((int, char **));
-
-
-struct val *
-make_int(i)
-       int64_t             i;
-{
-       struct val     *vp;
-
-       vp = (struct val *) malloc(sizeof(*vp));
-       if (vp == NULL) {
-               err(2, "%s", "");
-       }
-       vp->type = integer;
-       vp->u.i = i;
-       return vp;
-}
-
-
-struct val *
-make_str(s)
-       char           *s;
-{
-       struct val     *vp;
-
-       vp = (struct val *) malloc(sizeof(*vp));
-       if (vp == NULL || ((vp->u.s = strdup(s)) == NULL)) {
-               err(2, "%s", "");
-       }
-       vp->type = string;
-       return vp;
-}
-
-
-void
-free_value(vp)
-       struct val     *vp;
-{
-       if (vp->type == string)
-               free(vp->u.s);
-       free(vp);
-}
-
-
-/* determine if vp is an integer; if so, return it's value in *r */
-int
-is_integer(vp, r)
-       struct val     *vp;
-       int64_t        *r;
-{
-       char           *s;
-       int             neg;
-       int64_t             i;
-
-       if (vp->type == integer) {
-               *r = vp->u.i;
-               return 1;
-       }
-
-       /*
-        * POSIX.2 defines an "integer" as an optional unary minus 
-        * followed by digits.
-        */
-       s = vp->u.s;
-       i = 0;
-
-       neg = (*s == '-');
-       if (neg) {
-               s++;
-               /* the optional unary minus *must* be followed by digits to 
-                * be considered an integer.  A '-' alone is not an integer.
-                */
-               if(!*s)
-                       return 0;
-       }
-
-       while (*s) {
-               if (!isdigit(*s))
-                       return 0;
-
-               i *= 10;
-               i += *s - '0';
-
-               s++;
-       }
-
-       if (neg)
-               i *= -1;
-
-       *r = i;
-       return 1;
-}
-
-
-/* coerce to vp to an integer */
-int
-to_integer(vp)
-       struct val     *vp;
-{
-       int64_t             r;
-
-       if (vp->type == integer)
-               return 1;
-
-       if (is_integer(vp, &r)) {
-               free(vp->u.s);
-               vp->u.i = r;
-               vp->type = integer;
-               return 1;
-       }
-
-       return 0;
-}
-
-
-/* coerce to vp to an string */
-void
-to_string(vp)
-       struct val     *vp;
-{
-       char           *tmp;
-
-       if (vp->type == string)
-               return;
-
-       tmp = malloc(100);
-       if (tmp == NULL) {
-               err(2, "%s", "");
-       }
-       (void)snprintf(tmp, 100, "%lld", vp->u.i);
-       vp->type = string;
-       vp->u.s = tmp;
-}
-
-int is_null(vp)
-       struct val     *vp;
-{
-       if ((vp->type != integer) && (*vp->u.s == 0))
-               return 1;
-       return 0;
-}
-
-int
-is_zero_or_null(vp)
-       struct val     *vp;
-{
-       if (vp->type == integer)
-               return (vp->u.i == 0);
-       else
-               return (*vp->u.s == 0 || (to_integer(vp) && vp->u.i == 0));
-       /* NOTREACHED */
-}
-
-void
-nexttoken()
-{
-       char           *p;
-
-       if ((p = *av) == NULL) {
-               token = EOI;
-               return;
-       }
-       av++;
-
-       if (p[0] != '\0') {
-               if (p[1] == '\0') {
-                       const char     *x = "|&=<>+-*/%:()";
-                       char           *i;      /* index */
-
-                       if ((i = strchr(x, *p)) != NULL) {
-                               token = i - x;
-                               return;
-                       }
-               } else if (p[1] == '=' && p[2] == '\0') {
-                       switch (*p) {
-                       case '<':
-                               token = LE;
-                               return;
-                       case '>':
-                               token = GE;
-                               return;
-                       case '!':
-                               token = NE;
-                               return;
-                       }
-               }
-       }
-       tokval = make_str(p);
-       token = OPERAND;
-       return;
-}
-
-void
-error()
-{
-       errx(2, "syntax error");
-       /* NOTREACHED */
-}
-
-struct val *
-eval6()
-{
-       struct val *v;
-
-       if (token == OPERAND) {
-               nexttoken();
-               return tokval;
-
-       } else if (token == RP) {
-               nexttoken();
-               v = eval0();
-
-               if (token != LP)
-                       error();
-                 
-               nexttoken();
-               return v;
-       } else {
-          
-               switch (token) {
-               case DIV:
-                        nexttoken();
-                        tokval = make_str("/");
-                        break;
-               case MUL: 
-                        nexttoken();
-                        tokval = make_str("*");
-                        break;
-               case OR: 
-                        nexttoken();
-                        tokval = make_str("|");
-                        break;
-               case AND: 
-                        nexttoken();
-                        tokval = make_str("&");
-                        break;
-               case EQ: 
-                        nexttoken();
-                        tokval = make_str("=");
-                        break;
-               case LT: 
-                        nexttoken();
-                        tokval = make_str("<");
-                        break;
-               case GT: 
-                        nexttoken();
-                        tokval = make_str(">");
-                        break;
-               case ADD: 
-                        nexttoken();
-                        tokval = make_str("+");
-                        break;
-               case SUB: 
-                        nexttoken();
-                        tokval = make_str("-");
-                        break;
-               case MOD: 
-                        nexttoken();
-                        tokval = make_str("%");
-                        break;
-               case NE: 
-                        nexttoken();
-                        tokval = make_str("!=");
-                        break;
-               case LE: 
-                        nexttoken();
-                        tokval = make_str("<=");
-                        break;
-               case MATCH:
-                        nexttoken();
-                        tokval = make_str(":");
-                        break;
-               case GE: 
-                        nexttoken();
-                        tokval = make_str(">=");
-                        break;
-               case EOI:
-                        error();
-               }
-               return tokval;
-       }
-       /* NOTREACHED */
-}
-
-/* Parse and evaluate match (regex) expressions */
-struct val *
-eval5()
-{
-       regex_t         rp;
-       regmatch_t      rm[2];
-       char            errbuf[256];
-       int             eval;
-       struct val     *l, *r;
-       struct val     *v;
-
-       l = eval6();
-       while (token == MATCH) {
-               nexttoken();
-               r = eval6();
-
-               /* coerce to both arguments to strings */
-               to_string(l);
-               to_string(r);
-
-               /* compile regular expression */
-               if ((eval = regcomp(&rp, r->u.s, 0)) != 0) {
-                       (void)regerror(eval, &rp, errbuf, sizeof(errbuf));
-                       errx(2, "%s", errbuf);
-               }
-
-               /* compare string against pattern --  remember that patterns 
-                  are anchored to the beginning of the line */
-               if (regexec(&rp, l->u.s, 2, rm, 0) == 0 && rm[0].rm_so == 0) {
-                       if (rm[1].rm_so >= 0) {
-                               *(l->u.s + rm[1].rm_eo) = '\0';
-                               v = make_str(l->u.s + rm[1].rm_so);
-
-                       } else {
-                               v = make_int((int)(rm[0].rm_eo - rm[0].rm_so));
-                       }
-               } else {
-                       if (rp.re_nsub == 0) {
-                               v = make_int(0);
-                       } else {
-                               v = make_str("");
-                       }
-               }
-
-               /* free arguments and pattern buffer */
-               free_value(l);
-               free_value(r);
-               regfree(&rp);
-
-               l = v;
-       }
-
-       return l;
-}
-
-/* Parse and evaluate multiplication and division expressions */
-struct val *
-eval4()
-{
-       struct val     *l, *r;
-       enum token      op;
-
-       l = eval5();
-       while ((op = token) == MUL || op == DIV || op == MOD) {
-               nexttoken();
-               r = eval5();
-
-               if (!to_integer(l) || !to_integer(r)) {
-                       errx(2, "non-numeric argument");
-               }
-
-               if (op == MUL) {
-                       l->u.i *= r->u.i;
-               } else {
-                       if (r->u.i == 0) {
-                               errx(2, "division by zero");
-                       }
-                       if (op == DIV) {
-                               l->u.i /= r->u.i;
-                       } else {
-                               l->u.i %= r->u.i;
-                       }
-               }
-
-               free_value(r);
-       }
-
-       return l;
-}
-
-/* Parse and evaluate addition and subtraction expressions */
-struct val *
-eval3()
-{
-       struct val     *l, *r;
-       enum token      op;
-
-       l = eval4();
-       while ((op = token) == ADD || op == SUB) {
-               nexttoken();
-               r = eval4();
-
-               if (!to_integer(l) || !to_integer(r)) {
-                       errx(2, "non-numeric argument");
-               }
-
-               if (op == ADD) {
-                       l->u.i += r->u.i;
-               } else {
-                       l->u.i -= r->u.i;
-               }
-
-               free_value(r);
-       }
-
-       return l;
-}
-
-/* Parse and evaluate comparison expressions */
-struct val *
-eval2()
-{
-       struct val     *l, *r;
-       enum token      op;
-       int             v = 0;  /* pacify gcc */
-       int64_t         li, ri;
-
-       l = eval3();
-       while ((op = token) == EQ || op == NE || op == LT || op == GT || op == LE || op == GE) {
-               nexttoken();
-               r = eval3();
-
-               if (is_integer(l, &li) && is_integer(r, &ri)) {
-                       switch (op) {
-                       case GT:
-                               v = (li >  ri);
-                               break;
-                       case GE:
-                               v = (li >= ri);
-                               break;
-                       case LT:
-                               v = (li <  ri);
-                               break;
-                       case LE:
-                               v = (li <= ri);
-                               break;
-                       case EQ:
-                               v = (li == ri);
-                               break;
-                       case NE:
-                               v = (li != ri);
-                               break;
-                       case MOD:
-                       case EOI:
-                       case OPERAND:
-                       case LP:
-                       case RP:
-                       case MATCH:
-                       case DIV:
-                       case MUL:
-                       case SUB:
-                       case ADD:
-                       case AND:
-                       case OR:
-                               /* Can't happen */
-                               abort();
-                               break;
-                       }
-               } else {
-                       to_string(l);
-                       to_string(r);
-
-                       switch (op) {
-                       case GT:
-                               v = (strcoll(l->u.s, r->u.s) > 0);
-                               break;
-                       case GE:
-                               v = (strcoll(l->u.s, r->u.s) >= 0);
-                               break;
-                       case LT:
-                               v = (strcoll(l->u.s, r->u.s) < 0);
-                               break;
-                       case LE:
-                               v = (strcoll(l->u.s, r->u.s) <= 0);
-                               break;
-                       case EQ:
-                               v = (strcoll(l->u.s, r->u.s) == 0);
-                               break;
-                       case NE:
-                               v = (strcoll(l->u.s, r->u.s) != 0);
-                               break;
-                       case MUL:
-                       case SUB:
-                       case ADD:
-                       case AND:
-                       case OR:
-                       case DIV:
-                       case OPERAND:
-                       case EOI:
-                       case MOD:
-                       case RP:
-                       case MATCH:
-                       case LP:
-                               /* Can't happen */
-                               abort();
-                               break;
-                       }
-               } 
-
-               free_value(l);
-               free_value(r);
-               l = make_int(v);
-       }
-
-       return l;
-}
-
-/* Parse and evaluate & expressions */
-struct val *
-eval1()
-{
-       struct val     *l, *r;
-
-       l = eval2();
-       while (token == AND) {
-               nexttoken();
-               r = eval2();
-
-               if (is_zero_or_null(l) || is_zero_or_null(r)) {
-                       free_value(l);
-                       free_value(r);
-                       l = make_int(0);
-               } else {
-                       free_value(r);
-               }
-       }
-
-       return l;
-}
-
-/* Parse and evaluate | expressions */
-struct val *
-eval0()
-{
-       struct val     *l, *r;
-
-       l = eval1();
-       while (token == OR) {
-               nexttoken();
-               r = eval1();
-
-               if (is_zero_or_null(l)) {
-                       free_value(l);
-                       l = r;
-                       if( is_null(r) ) {
-                               free_value(r);
-                               l = make_int(0);
-                       }
-               } else {
-                       free_value(r);
-               }
-       }
-
-       return l;
-}
-
-
-int
-main(argc, argv)
-       int             argc;
-       char          **argv;
-{
-       struct val     *vp;
-
-       (void) setlocale(LC_ALL, "");
-       av = argv + 1;
-       if (*av && !strcmp(*av, "--"))
-           av++;
-       nexttoken();
-       vp = eval0();
-
-       if (token != EOI)
-               error();
-        if (vp->type == string && vp->u.s[0]) 
-               to_integer(vp);         /* -0 is not a string */
-       if (vp->type == integer)
-               (void)printf("%lld\n", vp->u.i);
-       else
-               (void)printf("%s\n", vp->u.s);
-
-       exit(is_zero_or_null(vp));
-       /* NOTREACHED */
-}
diff --git a/expr/expr.y b/expr/expr.y
new file mode 100644 (file)
index 0000000..1aa9474
--- /dev/null
@@ -0,0 +1,571 @@
+%{
+/*-
+ * Written by Pace Willisson (pace@blitz.com)
+ * and placed in the public domain.
+ *
+ * Largely rewritten by J.T. Conklin (jtc@wimsey.com)
+ *
+ * $FreeBSD: src/bin/expr/expr.y,v 1.28 2011/07/09 12:20:15 se Exp $
+ */
+
+#include <sys/types.h>
+
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+#include <unistd.h>
+
+/*
+ * POSIX specifies a specific error code for syntax errors.  We exit
+ * with this code for all errors.
+ */
+#define        ERR_EXIT        2
+
+enum valtype {
+       integer, numeric_string, string
+} ;
+
+struct val {
+       enum valtype type;
+       union {
+               char *s;
+               intmax_t i;
+       } u;
+} ;
+
+char           **av;
+int            nonposix;
+struct val     *result;
+
+void           assert_to_integer(struct val *);
+void           assert_div(intmax_t, intmax_t);
+void           assert_minus(intmax_t, intmax_t, intmax_t);
+void           assert_plus(intmax_t, intmax_t, intmax_t);
+void           assert_times(intmax_t, intmax_t, intmax_t);
+int            compare_vals(struct val *, struct val *);
+void           free_value(struct val *);
+int            is_integer(const char *);
+int            is_string(struct val *);
+int            is_zero_or_null(struct val *);
+struct val     *make_integer(intmax_t);
+struct val     *make_str(const char *);
+struct val     *op_and(struct val *, struct val *);
+struct val     *op_colon(struct val *, struct val *);
+struct val     *op_div(struct val *, struct val *);
+struct val     *op_eq(struct val *, struct val *);
+struct val     *op_ge(struct val *, struct val *);
+struct val     *op_gt(struct val *, struct val *);
+struct val     *op_le(struct val *, struct val *);
+struct val     *op_lt(struct val *, struct val *);
+struct val     *op_minus(struct val *, struct val *);
+struct val     *op_ne(struct val *, struct val *);
+struct val     *op_or(struct val *, struct val *);
+struct val     *op_plus(struct val *, struct val *);
+struct val     *op_rem(struct val *, struct val *);
+struct val     *op_times(struct val *, struct val *);
+int            to_integer(struct val *);
+void           to_string(struct val *);
+int            yyerror(const char *);
+int            yylex(void);
+int            yyparse(void);
+
+%}
+
+%union
+{
+       struct val *val;
+}
+
+%left <val> '|'
+%left <val> '&'
+%left <val> '=' '>' '<' GE LE NE
+%left <val> '+' '-'
+%left <val> '*' '/' '%'
+%left <val> ':'
+
+%token <val> TOKEN
+%type <val> start expr
+
+%%
+
+start: expr { result = $$; }
+
+expr:  TOKEN
+       | '(' expr ')' { $$ = $2; }
+       | expr '|' expr { $$ = op_or($1, $3); }
+       | expr '&' expr { $$ = op_and($1, $3); }
+       | expr '=' expr { $$ = op_eq($1, $3); }
+       | expr '>' expr { $$ = op_gt($1, $3); }
+       | expr '<' expr { $$ = op_lt($1, $3); }
+       | expr GE expr  { $$ = op_ge($1, $3); }
+       | expr LE expr  { $$ = op_le($1, $3); }
+       | expr NE expr  { $$ = op_ne($1, $3); }
+       | expr '+' expr { $$ = op_plus($1, $3); }
+       | expr '-' expr { $$ = op_minus($1, $3); }
+       | expr '*' expr { $$ = op_times($1, $3); }
+       | expr '/' expr { $$ = op_div($1, $3); }
+       | expr '%' expr { $$ = op_rem($1, $3); }
+       | expr ':' expr { $$ = op_colon($1, $3); }
+       ;
+
+%%
+
+struct val *
+make_integer(intmax_t i)
+{
+       struct val *vp;
+
+       vp = (struct val *)malloc(sizeof(*vp));
+       if (vp == NULL)
+               errx(ERR_EXIT, "malloc() failed");
+
+       vp->type = integer;
+       vp->u.i  = i;
+       return (vp);
+}
+
+struct val *
+make_str(const char *s)
+{
+       struct val *vp;
+
+       vp = (struct val *)malloc(sizeof(*vp));
+       if (vp == NULL || ((vp->u.s = strdup(s)) == NULL))
+               errx(ERR_EXIT, "malloc() failed");
+
+       if (is_integer(s))
+               vp->type = numeric_string;
+       else
+               vp->type = string;
+
+       return (vp);
+}
+
+void
+free_value(struct val *vp)
+{
+       if (vp->type == string || vp->type == numeric_string)
+               free(vp->u.s);
+}
+
+int
+to_integer(struct val *vp)
+{
+       intmax_t i;
+
+       /* we can only convert numeric_string to integer, here */
+       if (vp->type == numeric_string) {
+               errno = 0;
+               i  = strtoimax(vp->u.s, (char **)NULL, 10);
+               /* just keep as numeric_string, if the conversion fails */
+               if (errno != ERANGE) {
+                       free(vp->u.s);
+                       vp->u.i = i;
+                       vp->type = integer;
+               }
+       }
+       return (vp->type == integer);
+}
+
+void
+assert_to_integer(struct val *vp)
+{
+       if (vp->type == string)
+               errx(ERR_EXIT, "not a decimal number: '%s'", vp->u.s);
+       if (!to_integer(vp))
+               errx(ERR_EXIT, "operand too large: '%s'", vp->u.s);
+}
+
+void
+to_string(struct val *vp)
+{
+       char *tmp;
+
+       if (vp->type == string || vp->type == numeric_string)
+               return;
+
+       /*
+        * log_10(x) ~= 0.3 * log_2(x).  Rounding up gives the number
+        * of digits; add one each for the sign and terminating null
+        * character, respectively.
+        */
+#define        NDIGITS(x) (3 * (sizeof(x) * CHAR_BIT) / 10 + 1 + 1 + 1)
+       tmp = malloc(NDIGITS(vp->u.i));
+       if (tmp == NULL)
+               errx(ERR_EXIT, "malloc() failed");
+
+       sprintf(tmp, "%jd", vp->u.i);
+       vp->type = string;
+       vp->u.s  = tmp;
+}
+
+int
+is_integer(const char *s)
+{
+       if (nonposix) {
+               if (*s == '\0')
+                       return (1);
+               while (isspace((unsigned char)*s))
+                       s++;
+       }
+       if (*s == '-' || (nonposix && *s == '+'))
+               s++;
+       if (*s == '\0')
+               return (0);
+       while (isdigit((unsigned char)*s))
+               s++;
+       return (*s == '\0');
+}
+
+int
+is_string(struct val *vp)
+{
+       /* only TRUE if this string is not a valid integer */
+       return (vp->type == string);
+}
+
+int
+yylex(void)
+{
+       char *p;
+
+       if (*av == NULL)
+               return (0);
+
+       p = *av++;
+
+       if (strlen(p) == 1) {
+               if (strchr("|&=<>+-*/%:()", *p))
+                       return (*p);
+       } else if (strlen(p) == 2 && p[1] == '=') {
+               switch (*p) {
+               case '>': return (GE);
+               case '<': return (LE);
+               case '!': return (NE);
+               }
+       }
+
+       yylval.val = make_str(p);
+       return (TOKEN);
+}
+
+int
+is_zero_or_null(struct val *vp)
+{
+       if (vp->type == integer)
+               return (vp->u.i == 0);
+
+       return (*vp->u.s == 0 || (to_integer(vp) && vp->u.i == 0));
+}
+
+int
+main(int argc, char *argv[])
+{
+#ifndef __APPLE__
+       int c;
+#endif
+
+       setlocale(LC_ALL, "");
+#ifdef __APPLE__
+       av = argv + 1;
+       if (*av && !strcmp(*av, "--"))
+               av++;
+#else
+       if (getenv("EXPR_COMPAT") != NULL
+           || check_utility_compat("expr")) {
+               av = argv + 1;
+               nonposix = 1;
+       } else {
+               while ((c = getopt(argc, argv, "e")) != -1) {
+                       switch (c) {
+                       case 'e':
+                               nonposix = 1;
+                               break;
+                       default:
+                               errx(ERR_EXIT,
+                                   "usage: expr [-e] expression\n");
+                       }
+               }
+               av = argv + optind;
+       }
+#endif
+
+       yyparse();
+
+#ifdef __APPLE__
+       if (to_integer(result))
+#else
+       if (result->type == integer)
+#endif
+               printf("%jd\n", result->u.i);
+       else
+               printf("%s\n", result->u.s);
+
+       return (is_zero_or_null(result));
+}
+
+int
+yyerror(const char *s __unused)
+{
+       errx(ERR_EXIT, "syntax error");
+}
+
+struct val *
+op_or(struct val *a, struct val *b)
+{
+       if (!is_zero_or_null(a)) {
+               free_value(b);
+               return (a);
+       }
+       free_value(a);
+       if (!is_zero_or_null(b))
+               return (b);
+       free_value(b);
+       return (make_integer((intmax_t)0));
+}
+
+struct val *
+op_and(struct val *a, struct val *b)
+{
+       if (is_zero_or_null(a) || is_zero_or_null(b)) {
+               free_value(a);
+               free_value(b);
+               return (make_integer((intmax_t)0));
+       } else {
+               free_value(b);
+               return (a);
+       }
+}
+
+int
+compare_vals(struct val *a, struct val *b)
+{
+       int r;
+
+       if (is_string(a) || is_string(b)) {
+               to_string(a);
+               to_string(b);
+               r = strcoll(a->u.s, b->u.s);
+       } else {
+               assert_to_integer(a);
+               assert_to_integer(b);
+               if (a->u.i > b->u.i)
+                       r = 1;
+               else if (a->u.i < b->u.i)
+                       r = -1;
+               else
+                       r = 0;
+       }
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+struct val *
+op_eq(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) == 0)));
+}
+
+struct val *
+op_gt(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) > 0)));
+}
+
+struct val *
+op_lt(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) < 0)));
+}
+
+struct val *
+op_ge(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) >= 0)));
+}
+
+struct val *
+op_le(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) <= 0)));
+}
+
+struct val *
+op_ne(struct val *a, struct val *b)
+{
+       return (make_integer((intmax_t)(compare_vals(a, b) != 0)));
+}
+
+void
+assert_plus(intmax_t a, intmax_t b, intmax_t r)
+{
+       /*
+        * sum of two positive numbers must be positive,
+        * sum of two negative numbers must be negative
+        */
+       if ((a > 0 && b > 0 && r <= 0) ||
+           (a < 0 && b < 0 && r >= 0))
+               errx(ERR_EXIT, "overflow");
+}
+
+struct val *
+op_plus(struct val *a, struct val *b)
+{
+       struct val *r;
+
+       assert_to_integer(a);
+       assert_to_integer(b);
+       r = make_integer(a->u.i + b->u.i);
+       assert_plus(a->u.i, b->u.i, r->u.i);
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+void
+assert_minus(intmax_t a, intmax_t b, intmax_t r)
+{
+       /* special case subtraction of INTMAX_MIN */
+       if (b == INTMAX_MIN && a < 0)
+               errx(ERR_EXIT, "overflow");
+       /* check addition of negative subtrahend */
+       assert_plus(a, -b, r);
+}
+
+struct val *
+op_minus(struct val *a, struct val *b)
+{
+       struct val *r;
+
+       assert_to_integer(a);
+       assert_to_integer(b);
+       r = make_integer(a->u.i - b->u.i);
+       assert_minus(a->u.i, b->u.i, r->u.i);
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+void
+assert_times(intmax_t a, intmax_t b, intmax_t r)
+{
+       /*
+        * if first operand is 0, no overflow is possible,
+        * else result of division test must match second operand
+        */
+       if (a != 0 && r / a != b)
+               errx(ERR_EXIT, "overflow");
+}
+
+struct val *
+op_times(struct val *a, struct val *b)
+{
+       struct val *r;
+
+       assert_to_integer(a);
+       assert_to_integer(b);
+       r = make_integer(a->u.i * b->u.i);
+       assert_times(a->u.i, b->u.i, r->u.i);
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+void
+assert_div(intmax_t a, intmax_t b)
+{
+       if (b == 0)
+               errx(ERR_EXIT, "division by zero");
+       /* only INTMAX_MIN / -1 causes overflow */
+       if (a == INTMAX_MIN && b == -1)
+               errx(ERR_EXIT, "overflow");
+}
+
+struct val *
+op_div(struct val *a, struct val *b)
+{
+       struct val *r;
+
+       assert_to_integer(a);
+       assert_to_integer(b);
+       /* assert based on operands only, not on result */
+       assert_div(a->u.i, b->u.i);
+       r = make_integer(a->u.i / b->u.i);
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+struct val *
+op_rem(struct val *a, struct val *b)
+{
+       struct val *r;
+
+       assert_to_integer(a);
+       assert_to_integer(b);
+       /* pass a=1 to only check for div by zero */
+       assert_div(1, b->u.i);
+       r = make_integer(a->u.i % b->u.i);
+
+       free_value(a);
+       free_value(b);
+       return (r);
+}
+
+struct val *
+op_colon(struct val *a, struct val *b)
+{
+       regex_t rp;
+       regmatch_t rm[2];
+       char errbuf[256];
+       int eval;
+       struct val *v;
+
+       /* coerce both arguments to strings */
+       to_string(a);
+       to_string(b);
+
+       /* compile regular expression */
+       if ((eval = regcomp(&rp, b->u.s, 0)) != 0) {
+               regerror(eval, &rp, errbuf, sizeof(errbuf));
+               errx(ERR_EXIT, "%s", errbuf);
+       }
+
+       /* compare string against pattern */
+       /* remember that patterns are anchored to the beginning of the line */
+       if (regexec(&rp, a->u.s, (size_t)2, rm, 0) == 0 && rm[0].rm_so == 0)
+               if (rm[1].rm_so >= 0) {
+                       *(a->u.s + rm[1].rm_eo) = '\0';
+                       v = make_str(a->u.s + rm[1].rm_so);
+#ifdef __APPLE__
+                       v->type = string; /* 8319378 */
+#endif
+
+               } else
+                       v = make_integer((intmax_t)(rm[0].rm_eo - rm[0].rm_so));
+       else
+               if (rp.re_nsub == 0)
+                       v = make_integer((intmax_t)0);
+               else
+                       v = make_str("");
+
+       /* free arguments and pattern buffer */
+       free_value(a);
+       free_value(b);
+       regfree(&rp);
+
+       return (v);
+}
diff --git a/false/Makefile b/false/Makefile
deleted file mode 100644 (file)
index e6448b3..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = false
-Install_Dir = /usr/bin
-
-CFILES = false.c
-MANPAGES = false.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/find/Makefile b/find/Makefile
deleted file mode 100644 (file)
index 7040d66..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Project = find
-Install_Dir = /usr/bin
-
-HFILES = extern.h find.h
-CFILES = find.c function.c ls.c main.c misc.c operator.c option.c
-YFILES = getdate.y
-MANPAGES = find.1
-
-Extra_CC_Flags = -Wall -Werror \
-       -D__FBSDID=__RCSID -D_DARWIN_USE_64_BIT_INODE
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
index 6de0ad2b149bf1dc1f77955bb0877c0b4c4255df..f4282f71ad7712a382b0dd4acb73549fdbc67559 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -31,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     @(#)extern.h    8.3 (Berkeley) 4/16/94
- *     $FreeBSD: src/usr.bin/find/extern.h,v 1.24 2008/02/23 16:29:04 imp Exp $
+ *     $FreeBSD: src/usr.bin/find/extern.h,v 1.26 2010/12/11 08:32:16 joel Exp $
  */
 
 #include <sys/cdefs.h>
@@ -43,8 +39,7 @@ PLAN  *find_formplan(char **);
 PLAN   *not_squish(PLAN *);
 PLAN   *or_squish(PLAN *);
 PLAN   *paren_squish(PLAN *);
-struct timeb;
-time_t  get_date(char *, struct timeb *);
+time_t  get_date(char *);
 struct stat;
 void    printlong(char *, char *, struct stat *);
 int     queryuser(char **);
@@ -126,3 +121,4 @@ extern int regexp_flags;
 extern time_t now;
 extern int dotfd;
 extern FTS *tree;
+extern int execplus_error;
index 21734f18026c923778869cf8ac579d9f09c3d0c2..0d5e133431e3c4dac1d04ec247d5d835bb08d80f 100644 (file)
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
 .\" 4. Neither the name of the University nor the names of its contributors
 .\"    may be used to endorse or promote products derived from this software
 .\"    without specific prior written permission.
@@ -33,9 +29,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"    @(#)find.1      8.7 (Berkeley) 5/9/95
-.\" $FreeBSD: src/usr.bin/find/find.1,v 1.87 2009/09/20 16:47:56 jilles Exp $
+.\" $FreeBSD: src/usr.bin/find/find.1,v 1.91 2011/09/28 18:53:36 ed Exp $
 .\"
-.Dd February 24, 2008
+.Dd September 28, 2011
 .Dt FIND 1
 .Os
 .Sh NAME
@@ -181,6 +177,18 @@ This option is equivalent to the deprecated
 primary.
 .El
 .Sh PRIMARIES
+.Pp
+All primaries which take a numeric argument allow the number to be
+preceded by a plus sign
+.Pq Dq Li +
+or a minus sign
+.Pq Dq Li - .
+A preceding plus sign means
+.Dq more than n ,
+a preceding minus sign means
+.Dq less than n
+and neither means
+.Dq exactly n .
 .Bl -tag -width indent
 .It Ic -Bmin Ar n
 True if the difference between the time of a file's inode creation
@@ -429,12 +437,9 @@ bits match those of
 True if the file is contained in a file system of type
 .Ar type .
 The
-.Xr sysctl 8
+.Xr lsvfs 1
 command can be used to find out the types of file systems
-that are available on the system:
-.Pp
-.Dl "sysctl vfs"
-.Pp
+that are available on the system.
 In addition, there are two pseudo-types,
 .Dq Li local
 and
@@ -502,7 +507,7 @@ This primary always evaluates to true.
 The following information for the current file is written to standard output:
 its inode number, size in 512-byte blocks, file permissions, number of hard
 links, owner, group, size in bytes, last modification time, and pathname.
-If the file is a block or character special file, the major and minor numbers
+If the file is a block or character special file, the device number
 will be displayed instead of the size in bytes.
 If the file is a symbolic link, the pathname of the linked-to file will be
 displayed preceded by
@@ -828,18 +833,6 @@ True if the file has any extended attributes.
 True if the file has an extended attribute with the specified
 .Ar name .
 .El
-.Pp
-All primaries which take a numeric argument allow the number to be
-preceded by a plus sign
-.Pq Dq Li +
-or a minus sign
-.Pq Dq Li - .
-A preceding plus sign means
-.Dq more than n ,
-a preceding minus sign means
-.Dq less than n
-and neither means
-.Dq exactly n .
 .Sh OPERATORS
 The primaries may be combined using the following operators.
 The operators are listed in order of decreasing precedence.
@@ -953,6 +946,7 @@ section below for details.
 .Xr chmod 1 ,
 .Xr cvs 1 ,
 .Xr locate 1 ,
+.Xr lsvfs 1 ,
 .Xr whereis 1 ,
 .Xr which 1 ,
 .Xr xargs 1 ,
index 48bcd2d874aeb665ad37efd207edd5613a0934f1..c59a75ab3789bdfb96492b6aacc493c34b15e960 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -42,7 +38,7 @@ static char sccsid[] = "@(#)find.c    8.5 (Berkeley) 8/5/94";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/find.c,v 1.20 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/find.c,v 1.23 2010/12/11 08:32:16 joel Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -317,6 +313,9 @@ find_execute(PLAN *plan, char *paths[])
        }
        free (myPaths);
        finish_execplus();
+       if (execplus_error) {
+               exit(execplus_error);
+       }
        if (errno)
                err(1, "fts_read");
        fts_close(tree);
index a37a613f3bf55806a030a3faeaea10d02cbf7a0a..8960a0b3808552799a87e9354263fb0b21830227 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *     @(#)find.h      8.1 (Berkeley) 6/6/93
- *     $FreeBSD: src/usr.bin/find/find.h,v 1.20 2008/02/23 16:29:04 imp Exp $
+ *     $FreeBSD: src/usr.bin/find/find.h,v 1.21 2010/12/11 08:32:16 joel Exp $
  */
 
 #include <regex.h>
index 01e45eaac107abbf91b47091c24a9d966eba2dc6..4e3950dbbaf5647cd0814694d612dc01ddb9d7f5 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -41,7 +37,7 @@ static const char sccsid[] = "@(#)function.c  8.10 (Berkeley) 5/4/95";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.63 2009/09/04 20:01:16 trasz Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.71 2011/06/13 05:22:07 avatar Exp $");
 
 #include <sys/param.h>
 #include <sys/ucred.h>
@@ -50,10 +46,6 @@ __FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.63 2009/09/04 20:01:16 trasz
 #include <sys/acl.h>
 #include <sys/wait.h>
 #include <sys/mount.h>
-#include <sys/timeb.h>
-#ifdef __APPLE__
-#include <sys/xattr.h>
-#endif /* __APPLE__ */
 
 #include <dirent.h>
 #include <err.h>
@@ -70,16 +62,17 @@ __FBSDID("$FreeBSD: src/usr.bin/find/function.c,v 1.63 2009/09/04 20:01:16 trasz
 #include <unistd.h>
 #include <ctype.h>
 
-#include "find.h"
-
 #ifdef __APPLE__
 #include <sys/sysctl.h>
+#include <sys/xattr.h>
 #include <libgen.h>
 #include <get_compat.h>
 #else
 #define COMPAT_MODE(func, mode) 1
 #endif
 
+#include "find.h"
+
 static PLAN *palloc(OPTION *);
 static long long find_parsenum(PLAN *, const char *, char *, char *);
 static long long find_parsetime(PLAN *, const char *, char *);
@@ -88,6 +81,7 @@ static char *nextarg(OPTION *, char ***);
 extern char **environ;
 
 static PLAN *lastexecplus = NULL;
+int execplus_error;
 
 #define        COMPARE(a, b) do {                                              \
        switch (plan->flags & F_ELG_MASK) {                             \
@@ -622,7 +616,7 @@ f_empty(PLAN *plan __unused, FTSENT *entry)
                empty = 1;
                dir = opendir(entry->fts_accpath);
                if (dir == NULL)
-                       err(1, "%s", entry->fts_accpath);
+                       return 0;
                for (dp = readdir(dir); dp; dp = readdir(dir))
                        if (dp->d_name[0] != '.' ||
                            (dp->d_name[1] != '\0' &&
@@ -726,8 +720,10 @@ doexec:    if ((plan->flags & F_NEEDOK) && !queryuser(plan->e_argv))
                plan->e_psize = plan->e_pbsize;
        }
        pid = waitpid(pid, &status, 0);
-       if (plan->flags & F_EXECPLUS && WIFEXITED(status) && WEXITSTATUS(status))
-               _exit(WEXITSTATUS(status));
+       if (plan->flags & F_EXECPLUS && WIFEXITED(status) && WEXITSTATUS(status) && !execplus_error) {
+               /* Test 140 (8907531, 10656525) */
+               execplus_error = WEXITSTATUS(status);
+       }
        return (pid != -1 && WIFEXITED(status) && !WEXITSTATUS(status));
 }
 
@@ -834,7 +830,7 @@ done:       *argvp = argv + 1;
 
 /* Finish any pending -exec ... {} + functions. */
 void
-finish_execplus()
+finish_execplus(void)
 {
        PLAN *p;
 
@@ -915,7 +911,8 @@ f_fstype(PLAN *plan, FTSENT *entry)
        static dev_t curdev;    /* need a guaranteed illegal dev value */
        static int first = 1;
        struct statfs sb;
-       static int val_type, val_flags;
+       static int val_flags;
+       static char fstype[sizeof(sb.f_fstypename)];
        char *p, save[2] = {0,0};
 
        if ((plan->flags & F_MTMASK) == F_MTUNKNOWN)
@@ -957,13 +954,13 @@ f_fstype(PLAN *plan, FTSENT *entry)
                 * always copy both of them.
                 */
                val_flags = sb.f_flags;
-               val_type = sb.f_type;
+               strlcpy(fstype, sb.f_fstypename, sizeof(fstype));
        }
        switch (plan->flags & F_MTMASK) {
        case F_MTFLAG:
                return val_flags & plan->mt_data;
        case F_MTTYPE:
-               return val_type == plan->mt_data;
+               return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0);
        default:
                abort();
        }
@@ -974,22 +971,11 @@ c_fstype(OPTION *option, char ***argvp)
 {
        char *fsname;
        PLAN *new;
-       struct vfsconf vfc;
 
        fsname = nextarg(option, argvp);
        ftsoptions &= ~FTS_NOSTAT;
 
        new = palloc(option);
-
-       /*
-        * Check first for a filesystem name.
-        */
-       if (getvfsbyname(fsname, &vfc) == 0) {
-               new->flags |= F_MTTYPE;
-               new->mt_data = vfc.vfc_typenum;
-               return new;
-       }
-
        switch (*fsname) {
        case 'l':
                if (!strcmp(fsname, "local")) {
@@ -1007,12 +993,8 @@ c_fstype(OPTION *option, char ***argvp)
                break;
        }
 
-       /*
-        * We need to make filesystem checks for filesystems
-        * that exists but aren't in the kernel work.
-        */
-       fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname);
-       new->flags |= F_MTUNKNOWN;
+       new->flags |= F_MTTYPE;
+       new->c_data = fsname;
        return new;
 }
 
@@ -1221,7 +1203,7 @@ c_newer(OPTION *option, char ***argvp)
        new = palloc(option);
        /* compare against what */
        if (option->flags & F_TIME2_T) {
-               new->t_data = get_date(fn_or_tspec, (struct timeb *) 0);
+               new->t_data = get_date(fn_or_tspec);
                if (new->t_data == (time_t) -1)
                        errx(1, "Can't parse date/time: %s", fn_or_tspec);
        } else {
@@ -1231,6 +1213,8 @@ c_newer(OPTION *option, char ***argvp)
                        new->t_data = sb.st_ctime;
                else if (option->flags & F_TIME2_A)
                        new->t_data = sb.st_atime;
+               else if (option->flags & F_TIME2_B)
+                       new->t_data = sb.st_birthtime;
                else
                        new->t_data = sb.st_mtime;
        }
index 1e56080e9bb57c19275479ac516d8d9fe56ea183..5a97c2c8641eca4ab4cf10dac225b38b66215d38 100644 (file)
@@ -13,7 +13,7 @@
 /* SUPPRESS 288 on yyerrlab *//* Label unused */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/getdate.y,v 1.6 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/getdate.y,v 1.7 2010/02/09 21:24:41 ed Exp $");
 
 #include <stdio.h>
 #include <ctype.h>
@@ -28,7 +28,6 @@ __FBSDID("$FreeBSD: src/usr.bin/find/getdate.y,v 1.6 2009/12/13 03:14:06 delphij
 #else /* defined(vms) */
 # include <sys/types.h>
 # include <sys/time.h>
-# include <sys/timeb.h>
 #endif /* !defined(vms) */
 
 #if defined (__STDC__) || defined (USG)
@@ -69,7 +68,7 @@ static int yyparse(void);
 static int yylex(void);
 static int yyerror(const char *);
 
-time_t get_date(char *, struct timeb *);
+time_t get_date(char *);
 
 #define EPOCH          1970
 #define HOUR(x)                ((time_t)(x) * 60)
@@ -849,58 +848,50 @@ difftm (struct tm *a, struct tm *b)
 }
 
 time_t
-get_date(char *p, struct timeb *now)
+get_date(char *p)
 {
-    struct tm          *tm, gmt;
-    struct timeb       ftz;
+    struct tm          *tm, *gmt_ptr, gmt;
+    int                        tzoff;
     time_t             Start;
     time_t             tod;
     time_t nowtime;
 
     bzero (&gmt, sizeof(struct tm));
     yyInput = p;
-    if (now == NULL) {
-       struct tm *gmt_ptr;
 
-        now = &ftz;
-       (void)time (&nowtime);
+    (void)time (&nowtime);
 
-       gmt_ptr = gmtime (&nowtime);
-       if (gmt_ptr != NULL)
-       {
-           /* Make a copy, in case localtime modifies *tm (I think
-              that comment now applies to *gmt_ptr, but I am too
-              lazy to dig into how gmtime and locatime allocate the
-              structures they return pointers to).  */
-           gmt = *gmt_ptr;
-       }
+    gmt_ptr = gmtime (&nowtime);
+    if (gmt_ptr != NULL)
+    {
+       /* Make a copy, in case localtime modifies *tm (I think
+          that comment now applies to *gmt_ptr, but I am too
+          lazy to dig into how gmtime and locatime allocate the
+          structures they return pointers to).  */
+       gmt = *gmt_ptr;
+    }
 
-       if (! (tm = localtime (&nowtime)))
-           return -1;
+    if (! (tm = localtime (&nowtime)))
+       return -1;
 
-       if (gmt_ptr != NULL)
-           ftz.timezone = difftm (&gmt, tm) / 60;
-       else
-           /* We are on a system like VMS, where the system clock is
-              in local time and the system has no concept of timezones.
-              Hopefully we can fake this out (for the case in which the
-              user specifies no timezone) by just saying the timezone
-              is zero.  */
-           ftz.timezone = 0;
-
-       if(tm->tm_isdst)
-           ftz.timezone += 60;
-    }
+    if (gmt_ptr != NULL)
+       tzoff = difftm (&gmt, tm) / 60;
     else
-    {
-       nowtime = now->time;
-    }
+       /* We are on a system like VMS, where the system clock is
+          in local time and the system has no concept of timezones.
+          Hopefully we can fake this out (for the case in which the
+          user specifies no timezone) by just saying the timezone
+          is zero.  */
+       tzoff = 0;
+
+    if(tm->tm_isdst)
+       tzoff += 60;
 
     tm = localtime(&nowtime);
     yyYear = tm->tm_year + 1900;
     yyMonth = tm->tm_mon + 1;
     yyDay = tm->tm_mday;
-    yyTimezone = now->timezone;
+    yyTimezone = tzoff;
     yyDSTmode = DSTmaybe;
     yyHour = 0;
     yyMinutes = 0;
@@ -956,7 +947,7 @@ main(int ac, char *av[])
     (void)printf("Enter date, or blank line to exit.\n\t> ");
     (void)fflush(stdout);
     while (gets(buff) && buff[0]) {
-       d = get_date(buff, (struct timeb *)NULL);
+       d = get_date(buff);
        if (d == -1)
            (void)printf("Bad format - couldn't convert.\n");
        else
index 5e62da8ea58697fd163ef511568104ee65aebc8d..f58d9694275c0c160323916c9d5d8ff028b77bc3 100644 (file)
--- a/find/ls.c
+++ b/find/ls.c
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -38,7 +34,7 @@ static char sccsid[] = "@(#)ls.c      8.1 (Berkeley) 6/6/93";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/ls.c,v 1.19 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/ls.c,v 1.23 2011/09/28 18:53:36 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -79,8 +75,7 @@ printlong(char *name, char *accpath, struct stat *sb)
            group_from_gid(sb->st_gid, 0));
 
        if (S_ISCHR(sb->st_mode) || S_ISBLK(sb->st_mode))
-               (void)printf("%3d, %3d ", major(sb->st_rdev),
-                   minor(sb->st_rdev));
+               (void)printf("%#8jx ", (uintmax_t)sb->st_rdev);
        else
                (void)printf("%8"PRId64" ", sb->st_size);
        printtime(sb->st_mtime);
index 5603517c8f31ea14f5e86490574245bc9fbea915..e95e6482e853a1fb4318633b470195ba4b63ab9f 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -35,7 +31,7 @@
  */
 
 #ifndef lint
-char copyright[] =
+static const char copyright[] =
 "@(#) Copyright (c) 1990, 1993, 1994\n\
        The Regents of the University of California.  All rights reserved.\n";
 #endif /* not lint */
@@ -47,7 +43,7 @@ static char sccsid[] = "@(#)main.c    8.4 (Berkeley) 5/4/95";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/main.c,v 1.18 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/main.c,v 1.23 2011/12/10 18:11:06 ed Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -124,7 +120,7 @@ main(int argc, char *argv[])
                        break;
                case '?':
                default:
-                       break;
+                       usage();
                }
 
        argc -= optind;
index 8245bb869de4caa5bf8f91e6ef713907aabc32ed..d6b11231a83e96e411e64eb4c106f285717ad744 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -42,7 +38,7 @@ static char sccsid[] = "@(#)misc.c    8.2 (Berkeley) 4/1/94";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/misc.c,v 1.10 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/misc.c,v 1.13 2010/12/11 08:32:16 joel Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
index f04d12adaffd32ff295c54286987cb61d66d5317..1aa851efcd0f2d6adf31cd34fe690ac1a9ff3e8b 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -41,7 +37,7 @@ static char sccsid[] = "@(#)operator.c        8.1 (Berkeley) 6/6/93";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/operator.c,v 1.14 2003/06/14 13:00:21 markm Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/operator.c,v 1.17 2010/12/11 08:32:16 joel Exp $");
 
 #include <sys/types.h>
 
index c99a18093294bb336612755555965c3d7086358a..5771da4e25953e2b0b36706fb7213f2fbb5a19b4 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -41,7 +37,7 @@ static char sccsid[] = "@(#)option.c  8.2 (Berkeley) 4/16/94";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/find/option.c,v 1.28 2009/12/13 03:14:06 delphij Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/find/option.c,v 1.32 2011/05/27 22:14:49 jilles Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -55,7 +51,7 @@ __FBSDID("$FreeBSD: src/usr.bin/find/option.c,v 1.28 2009/12/13 03:14:06 delphij
 
 #include "find.h"
 
-int typecompare(const void *, const void *);
+static int typecompare(const void *, const void *);
 
 /* NB: the following table must be sorted lexically. */
 /* Options listed with C++ comments are in gnu find, but not our find */
@@ -180,7 +176,7 @@ find_create(char ***argvp)
        argv = *argvp;
 
        if ((p = lookup_option(*argv)) == NULL)
-               errx(1, "%s: unknown option", *argv);
+               errx(1, "%s: unknown primary or operator", *argv);
        ++argv;
 
        new = (p->create)(p, &argv);
@@ -198,7 +194,7 @@ lookup_option(const char *name)
            sizeof(options)/sizeof(OPTION), sizeof(OPTION), typecompare));
 }
 
-int
+static int
 typecompare(const void *a, const void *b)
 {
        return (strcmp(((const OPTION *)a)->name, ((const OPTION *)b)->name));
diff --git a/getopt/Makefile b/getopt/Makefile
deleted file mode 100644 (file)
index 2bc6c18..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = getopt
-Install_Dir = /usr/bin
-
-CFILES = getopt.c
-MANPAGES = getopt.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/hexdump/conv.c b/hexdump/conv.c
new file mode 100644 (file)
index 0000000..a10baf3
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static const char sccsid[] = "@(#)conv.c       8.1 (Berkeley) 6/6/93";
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/conv.c,v 1.8 2004/07/16 11:07:07 johan Exp $");
+
+#include <sys/types.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
+#include "hexdump.h"
+
+void
+conv_c(PR *pr, u_char *p, size_t bufsize)
+{
+       char buf[10];
+       char const *str;
+       wchar_t wc;
+       size_t clen, oclen;
+       int converr, pad, width;
+       char peekbuf[MB_LEN_MAX];
+
+       if (pr->mbleft > 0) {
+               str = "**";
+               pr->mbleft--;
+               goto strpr;
+       }
+
+       switch(*p) {
+       case '\0':
+               str = "\\0";
+               goto strpr;
+       /* case '\a': */
+       case '\007':
+               str = "\\a";
+               goto strpr;
+       case '\b':
+               str = "\\b";
+               goto strpr;
+       case '\f':
+               str = "\\f";
+               goto strpr;
+       case '\n':
+               str = "\\n";
+               goto strpr;
+       case '\r':
+               str = "\\r";
+               goto strpr;
+       case '\t':
+               str = "\\t";
+               goto strpr;
+       case '\v':
+               str = "\\v";
+               goto strpr;
+       default:
+               break;
+       }
+       /*
+        * Multibyte characters are disabled for hexdump(1) for backwards
+        * compatibility and consistency (none of its other output formats
+        * recognize them correctly).
+        */
+       converr = 0;
+       if (odmode && MB_CUR_MAX > 1) {
+               oclen = 0;
+retry:
+               clen = mbrtowc(&wc, (const char *)p, bufsize, &pr->mbstate);
+               if (clen == 0)
+                       clen = 1;
+               else if (clen == (size_t)-1 || (clen == (size_t)-2 &&
+                   buf == peekbuf)) {
+                       memset(&pr->mbstate, 0, sizeof(pr->mbstate));
+                       wc = *p;
+                       clen = 1;
+                       converr = 1;
+               } else if (clen == (size_t)-2) {
+                       /*
+                        * Incomplete character; peek ahead and see if we
+                        * can complete it.
+                        */
+                       oclen = bufsize;
+                       bufsize = peek(p = (u_char *)peekbuf, MB_CUR_MAX);
+                       goto retry;
+               }
+               clen += oclen;
+       } else {
+               wc = *p;
+               clen = 1;
+       }
+       if (!converr && iswprint(wc)) {
+               if (!odmode) {
+                       *pr->cchar = 'c';
+                       (void)printf(pr->fmt, (int)wc);
+               } else {        
+                       *pr->cchar = 'C';
+                       assert(strcmp(pr->fmt, "%3C") == 0);
+                       width = wcwidth(wc);
+                       assert(width > 0);
+                       pad = 3 - width;
+                       if (pad < 0)
+                               pad = 0;
+                       (void)printf("%*s%C", pad, "", wc);
+                       pr->mbleft = clen - 1;
+               }
+       } else {
+               (void)sprintf(buf, "%03o", (int)*p);
+               str = buf;
+strpr:         *pr->cchar = 's';
+               (void)printf(pr->fmt, str);
+       }
+}
+
+void
+conv_u(PR *pr, u_char *p)
+{
+       static char const * list[] = {
+               "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel",
+                "bs",  "ht",  "lf",  "vt",  "ff",  "cr",  "so",  "si",
+               "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb",
+               "can",  "em", "sub", "esc",  "fs",  "gs",  "rs",  "us",
+       };
+
+                                               /* od used nl, not lf */
+       if (*p <= 0x1f) {
+               *pr->cchar = 's';
+               if (odmode && *p == 0x0a)
+                       (void)printf(pr->fmt, "nl");
+               else
+                       (void)printf(pr->fmt, list[*p]);
+       } else if (*p == 0x7f) {
+               *pr->cchar = 's';
+               (void)printf(pr->fmt, "del");
+       } else if (odmode && *p == 0x20) {      /* od replaced space with sp */
+               *pr->cchar = 's';
+               (void)printf(pr->fmt, " sp");
+       } else if (isprint(*p)) {
+               *pr->cchar = 'c';
+               (void)printf(pr->fmt, *p);
+       } else {
+               *pr->cchar = 'x';
+               (void)printf(pr->fmt, (int)*p);
+       }
+}
diff --git a/hexdump/display.c b/hexdump/display.c
new file mode 100644 (file)
index 0000000..c0070a1
--- /dev/null
@@ -0,0 +1,412 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)display.c  8.1 (Berkeley) 6/6/93";
+#endif
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/display.c,v 1.19 2004/07/11 01:11:12 tjr Exp $");
+
+#include <sys/param.h>
+#include <sys/stat.h>
+
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "hexdump.h"
+
+enum _vflag vflag = FIRST;
+
+static off_t address;                  /* address/offset in stream */
+static off_t eaddress;                 /* end address */
+
+static __inline void print(PR *, u_char *);
+
+void
+display(void)
+{
+       FS *fs;
+       FU *fu;
+       PR *pr;
+       int cnt;
+       u_char *bp;
+       off_t saveaddress;
+       u_char savech=0, *savebp;
+
+       while ((bp = get()))
+           for (fs = fshead, savebp = bp, saveaddress = address; fs;
+               fs = fs->nextfs, bp = savebp, address = saveaddress)
+                   for (fu = fs->nextfu; fu; fu = fu->nextfu) {
+                       if (fu->flags&F_IGNORE)
+                               break;
+                       for (cnt = fu->reps; cnt; --cnt)
+                           for (pr = fu->nextpr; pr; address += pr->bcnt,
+                               bp += pr->bcnt, pr = pr->nextpr) {
+                                   if (eaddress && address >= eaddress &&
+                                       !(pr->flags & (F_TEXT|F_BPAD)))
+                                           bpad(pr);
+                                   if (cnt == 1 && pr->nospace) {
+                                       savech = *pr->nospace;
+                                       *pr->nospace = '\0';
+                                   }
+                                   print(pr, bp);
+                                   if (cnt == 1 && pr->nospace)
+                                       *pr->nospace = savech;
+                           }
+                   }
+       if (endfu) {
+               /*
+                * If eaddress not set, error or file size was multiple of
+                * blocksize, and no partial block ever found.
+                */
+               if (!eaddress) {
+                       if (!address) {
+                               return;
+                       }
+                       eaddress = address;
+               }
+               for (pr = endfu->nextpr; pr; pr = pr->nextpr)
+                       switch(pr->flags) {
+                       case F_ADDRESS:
+                               (void)printf(pr->fmt, (quad_t)eaddress);
+                               break;
+                       case F_TEXT:
+                               (void)printf("%s", pr->fmt);
+                               break;
+                       default:
+                               break;
+                       }
+       }
+}
+
+static __inline void
+print(PR *pr, u_char *bp)
+{
+       long double ldbl;
+          double f8;
+           float f4;
+         int16_t s2;
+          int8_t s8;
+         int32_t s4;
+       u_int16_t u2;
+       u_int32_t u4;
+       u_int64_t u8;
+
+       switch(pr->flags) {
+       case F_ADDRESS:
+               (void)printf(pr->fmt, (quad_t)address);
+               break;
+       case F_BPAD:
+               (void)printf(pr->fmt, "");
+               break;
+       case F_C:
+               conv_c(pr, bp, eaddress ? eaddress - address :
+                   blocksize - address % blocksize);
+               break;
+       case F_CHAR:
+               (void)printf(pr->fmt, *bp);
+               break;
+       case F_DBL:
+               switch(pr->bcnt) {
+               case 4:
+                       bcopy(bp, &f4, sizeof(f4));
+                       (void)printf(pr->fmt, f4);
+                       break;
+               case 8:
+                       bcopy(bp, &f8, sizeof(f8));
+                       (void)printf(pr->fmt, f8);
+                       break;
+               default:
+                       if (pr->bcnt == sizeof(long double)) {
+                               bcopy(bp, &ldbl, sizeof(ldbl));
+                               (void)printf(pr->fmt, ldbl);
+                       }
+                       break;
+               }
+               break;
+       case F_INT:
+               switch(pr->bcnt) {
+               case 1:
+                       (void)printf(pr->fmt, (quad_t)(signed char)*bp);
+                       break;
+               case 2:
+                       bcopy(bp, &s2, sizeof(s2));
+                       (void)printf(pr->fmt, (quad_t)s2);
+                       break;
+               case 4:
+                       bcopy(bp, &s4, sizeof(s4));
+                       (void)printf(pr->fmt, (quad_t)s4);
+                       break;
+               case 8:
+                       bcopy(bp, &s8, sizeof(s8));
+                       (void)printf(pr->fmt, s8);
+                       break;
+               }
+               break;
+       case F_P:
+               (void)printf(pr->fmt, isprint(*bp) && isascii(*bp) ? *bp : '.');
+               break;
+       case F_STR:
+               (void)printf(pr->fmt, (char *)bp);
+               break;
+       case F_TEXT:
+               (void)printf("%s", pr->fmt);
+               break;
+       case F_U:
+               conv_u(pr, bp);
+               break;
+       case F_UINT:
+               switch(pr->bcnt) {
+               case 1:
+                       (void)printf(pr->fmt, (u_quad_t)*bp);
+                       break;
+               case 2:
+                       bcopy(bp, &u2, sizeof(u2));
+                       (void)printf(pr->fmt, (u_quad_t)u2);
+                       break;
+               case 4:
+                       bcopy(bp, &u4, sizeof(u4));
+                       (void)printf(pr->fmt, (u_quad_t)u4);
+                       break;
+               case 8:
+                       bcopy(bp, &u8, sizeof(u8));
+                       (void)printf(pr->fmt, u8);
+                       break;
+               }
+               break;
+       }
+}
+
+void
+bpad(PR *pr)
+{
+       static char const *spec = " -0+#";
+       char *p1, *p2;
+
+       /*
+        * Remove all conversion flags; '-' is the only one valid
+        * with %s, and it's not useful here.
+        */
+       pr->flags = F_BPAD;
+       pr->cchar[0] = 's';
+       pr->cchar[1] = '\0';
+       for (p1 = pr->fmt; *p1 != '%'; ++p1);
+       for (p2 = ++p1; *p1 && index(spec, *p1); ++p1);
+       while ((*p2++ = *p1++));
+}
+
+static char **_argv;
+
+u_char *
+get(void)
+{
+       static int ateof = 1;
+       static u_char *curp, *savp;
+       int n;
+       int need, nread;
+       int valid_save = 0;
+       u_char *tmpp;
+
+       if (!curp) {
+               if ((curp = calloc(1, blocksize)) == NULL)
+                       err(1, NULL);
+               if ((savp = calloc(1, blocksize)) == NULL)
+                       err(1, NULL);
+       } else {
+               tmpp = curp;
+               curp = savp;
+               savp = tmpp;
+               address += blocksize;
+               valid_save = 1;
+       }
+       for (need = blocksize, nread = 0;;) {
+               /*
+                * if read the right number of bytes, or at EOF for one file,
+                * and no other files are available, zero-pad the rest of the
+                * block and set the end flag.
+                */
+               if (!length || (ateof && !next((char **)NULL))) {
+                       if (odmode && address < skip)
+                               errx(1, "cannot skip past end of input");
+                       if (need == blocksize)
+                               return((u_char *)NULL);
+                       /*
+                        * XXX bcmp() is not quite right in the presence
+                        * of multibyte characters.
+                        */
+                       if (vflag != ALL && 
+                           valid_save && 
+                           bcmp(curp, savp, nread) == 0) {
+                               if (vflag != DUP)
+                                       (void)printf("*\n");
+                               return((u_char *)NULL);
+                       }
+                       bzero((char *)curp + nread, need);
+                       eaddress = address + nread;
+                       if (length == 0)
+                               lseek(STDIN_FILENO, ftell(stdin), SEEK_SET); /* rewind stdin for next process */
+                       return(curp);
+               }
+               n = fread((char *)curp + nread, sizeof(u_char),
+                   length == -1 ? need : MIN(length, need), stdin);
+               if (!n) {
+                       if (ferror(stdin))
+                               warn("%s", _argv[-1]);
+                       ateof = 1;
+                       continue;
+               }
+               ateof = 0;
+               if (length != -1)
+                       length -= n;
+               if (!(need -= n)) {
+                       /*
+                        * XXX bcmp() is not quite right in the presence
+                        * of multibyte characters.
+                        */
+                       if (vflag == ALL || vflag == FIRST ||
+                           valid_save == 0 ||
+                           bcmp(curp, savp, blocksize) != 0) {
+                               if (vflag == DUP || vflag == FIRST)
+                                       vflag = WAIT;
+                               return(curp);
+                       }
+                       if (vflag == WAIT)
+                               (void)printf("*\n");
+                       vflag = DUP;
+                       address += blocksize;
+                       need = blocksize;
+                       nread = 0;
+               }
+               else
+                       nread += n;
+       }
+}
+
+size_t
+peek(u_char *buf, size_t nbytes)
+{
+       size_t n, nread;
+       int c;
+
+       if (length != -1 && nbytes > length)
+               nbytes = length;
+       nread = 0;
+       while (nread < nbytes && (c = getchar()) != EOF) {
+               *buf++ = c;
+               nread++;
+       }
+       n = nread;
+       while (n-- > 0) {
+               c = *--buf;
+               ungetc(c, stdin);
+       }
+       return (nread);
+}
+
+int
+next(char **argv)
+{
+       static int done;
+       int statok;
+
+       if (argv) {
+               _argv = argv;
+               return(1);
+       }
+       for (;;) {
+               if (*_argv) {
+                       if (!(freopen(*_argv, "r", stdin))) {
+                               warn("%s", *_argv);
+                               exitval = 1;
+                               ++_argv;
+                               continue;
+                       }
+                       statok = done = 1;
+               } else {
+                       if (done++)
+                               return(0);
+                       statok = 0;
+               }
+               if (skip)
+                       doskip(statok ? *_argv : "stdin", statok);
+               if (*_argv)
+                       ++_argv;
+               if (!skip)
+                       return(1);
+       }
+       /* NOTREACHED */
+}
+
+void
+doskip(const char *fname, int statok)
+{
+       int cnt;
+       struct stat sb;
+
+       if (statok) {
+               if (fstat(fileno(stdin), &sb))
+                       err(1, "%s", fname);
+               if (S_ISREG(sb.st_mode) && skip >= sb.st_size) {
+                       address += sb.st_size;
+                       skip -= sb.st_size;
+                       return;
+               }
+       }
+#ifdef __APPLE__
+       /* try to seek first; fall back on ESPIPE */
+       if (fseeko(stdin, skip, SEEK_SET) == 0) {
+#else /* !__APPLE__ */
+       if (S_ISREG(sb.st_mode)) {
+               if (fseeko(stdin, skip, SEEK_SET))
+                       err(1, "%s", fname);
+#endif /* __APPLE__ */
+               address += skip;
+               skip = 0;
+       } else {
+#ifdef __APPLE__
+               if (errno != ESPIPE)
+                       err(1, "%s", fname);
+#endif /* __APPLE__ */
+               for (cnt = 0; cnt < skip; ++cnt)
+                       if (getchar() == EOF)
+                               break;
+               address += cnt;
+               skip -= cnt;
+       }
+}
diff --git a/hexdump/hexdump.1 b/hexdump/hexdump.1
new file mode 100644 (file)
index 0000000..6cbe418
--- /dev/null
@@ -0,0 +1,340 @@
+.\" Copyright (c) 1989, 1990, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"    @(#)hexdump.1   8.2 (Berkeley) 4/18/94
+.\" $FreeBSD: src/usr.bin/hexdump/hexdump.1,v 1.21 2004/07/10 13:11:00 tjr Exp $
+.\"
+.Dd July 10, 2004
+.Dt HEXDUMP 1
+.Os
+.Sh NAME
+.Nm hexdump
+.Nd ASCII, decimal, hexadecimal, octal dump
+.Sh SYNOPSIS
+.Nm
+.Op Fl bcCdovx
+.Op Fl e Ar format_string
+.Op Fl f Ar format_file
+.Op Fl n Ar length
+.Bk -words
+.Op Fl s Ar skip
+.Ek
+.Ar
+.Sh DESCRIPTION
+The
+.Nm
+utility is a filter which displays the specified files, or
+the standard input, if no files are specified, in a user specified
+format.
+.Pp
+The options are as follows:
+.Bl -tag -width indent
+.It Fl b
+.Em One-byte octal display .
+Display the input offset in hexadecimal, followed by sixteen
+space-separated, three column, zero-filled, bytes of input data,
+in octal, per line.
+.It Fl C
+.Em Canonical hex+ASCII display .
+Display the input offset in hexadecimal, followed by sixteen
+space-separated, two column, hexadecimal bytes, followed by the
+same sixteen bytes in %_p format enclosed in ``|'' characters.
+.It Fl c
+.Em One-byte character display .
+Display the input offset in hexadecimal, followed by sixteen
+space-separated, three column, space-filled, characters of input
+data per line.
+.It Fl d
+.Em Two-byte decimal display .
+Display the input offset in hexadecimal, followed by eight
+space-separated, five column, zero-filled, two-byte units
+of input data, in unsigned decimal, per line.
+.It Fl e Ar format_string
+Specify a format string to be used for displaying data.
+.It Fl f Ar format_file
+Specify a file that contains one or more newline separated format strings.
+Empty lines and lines whose first non-blank character is a hash mark
+.Pf ( Cm \&# )
+are ignored.
+.It Fl n Ar length
+Interpret only
+.Ar length
+bytes of input.
+.It Fl o
+.Em Two-byte octal display .
+Display the input offset in hexadecimal, followed by eight
+space-separated, six column, zero-filled, two byte quantities of
+input data, in octal, per line.
+.It Fl s Ar offset
+Skip
+.Ar offset
+bytes from the beginning of the input.
+By default,
+.Ar offset
+is interpreted as a decimal number.
+With a leading
+.Cm 0x
+or
+.Cm 0X ,
+.Ar offset
+is interpreted as a hexadecimal number,
+otherwise, with a leading
+.Cm 0 ,
+.Ar offset
+is interpreted as an octal number.
+Appending the character
+.Cm b ,
+.Cm k ,
+or
+.Cm m
+to
+.Ar offset
+causes it to be interpreted as a multiple of
+.Li 512 ,
+.Li 1024 ,
+or
+.Li 1048576 ,
+respectively.
+.It Fl v
+Cause
+.Nm
+to display all input data.
+Without the
+.Fl v
+option, any number of groups of output lines, which would be
+identical to the immediately preceding group of output lines (except
+for the input offsets), are replaced with a line comprised of a
+single asterisk.
+.It Fl x
+.Em Two-byte hexadecimal display .
+Display the input offset in hexadecimal, followed by eight, space
+separated, four column, zero-filled, two-byte quantities of input
+data, in hexadecimal, per line.
+.El
+.Pp
+For each input file,
+.Nm
+sequentially copies the input to standard output, transforming the
+data according to the format strings specified by the
+.Fl e
+and
+.Fl f
+options, in the order that they were specified.
+.Ss Formats
+A format string contains any number of format units, separated by
+whitespace.
+A format unit contains up to three items: an iteration count, a byte
+count, and a format.
+.Pp
+The iteration count is an optional positive integer, which defaults to
+one.
+Each format is applied iteration count times.
+.Pp
+The byte count is an optional positive integer.
+If specified it defines the number of bytes to be interpreted by
+each iteration of the format.
+.Pp
+If an iteration count and/or a byte count is specified, a single slash
+must be placed after the iteration count and/or before the byte count
+to disambiguate them.
+Any whitespace before or after the slash is ignored.
+.Pp
+The format is required and must be surrounded by double quote
+(" ") marks.
+It is interpreted as a fprintf-style format string (see
+.Xr fprintf 3 ) ,
+with the
+following exceptions:
+.Bl -bullet -offset indent
+.It
+An asterisk (*) may not be used as a field width or precision.
+.It
+A byte count or field precision
+.Em is
+required for each ``s'' conversion
+character (unlike the
+.Xr fprintf 3
+default which prints the entire string if the precision is unspecified).
+.It
+The conversion characters ``h'', ``l'', ``n'', ``p'' and ``q'' are
+not supported.
+.It
+The single character escape sequences
+described in the C standard are supported:
+.Bd -ragged -offset indent -compact
+.Bl -column <alert_character>
+.It "NUL       \e0
+.It "<alert character> \ea
+.It "<backspace>       \eb
+.It "<form-feed>       \ef
+.It "<newline> \en
+.It "<carriage return> \er
+.It "<tab>     \et
+.It "<vertical tab>    \ev
+.El
+.Ed
+.El
+.Pp
+The
+.Nm
+utility also supports the following additional conversion strings:
+.Bl -tag -width Fl
+.It Cm \&_a Ns Op Cm dox
+Display the input offset, cumulative across input files, of the
+next byte to be displayed.
+The appended characters
+.Cm d ,
+.Cm o ,
+and
+.Cm x
+specify the display base
+as decimal, octal or hexadecimal respectively.
+.It Cm \&_A Ns Op Cm dox
+Identical to the
+.Cm \&_a
+conversion string except that it is only performed
+once, when all of the input data has been processed.
+.It Cm \&_c
+Output characters in the default character set.
+Nonprinting characters are displayed in three character, zero-padded
+octal, except for those representable by standard escape notation
+(see above),
+which are displayed as two character strings.
+.It Cm _p
+Output characters in the ASCII character set.
+Non-ASCII characters are displayed as a single
+.Dq Cm \&. .
+.It Cm _u
+Output US
+.Tn ASCII
+characters, with the exception that control characters are
+displayed using the following, lower-case, names.
+Characters greater than 0xff, hexadecimal, are displayed as hexadecimal
+strings.
+.Bl -column \&000_nu \&001_so \&002_st \&003_et \&004_eo
+.It "\&000\ NUL\t001\ SOH\t002\ STX\t003\ ETX\t004\ EOT\t005\ ENQ
+.It "\&006\ ACK\t007\ BEL\t008\ BS\t009\ HT\t00A\ LF\t00B\ VT
+.It "\&00C\ FF\t00D\ CR\t00E\ SO\t00F\ SI\t010\ DLE\t011\ DC1
+.It "\&012\ DC2\t013\ DC3\t014\ DC4\t015\ NAK\t016\ SYN\t017\ ETB
+.It "\&018\ CAN\t019\ EM\t01A\ SUB\t01B\ ESC\t01C\ FS\t01D\ GS
+.It "\&01E\ RS\t01F\ US\t0FF\ DEL
+.El
+.El
+.Pp
+The default and supported byte counts for the conversion characters
+are as follows:
+.Bl -tag -width  "Xc,_Xc,_Xc,_Xc,_Xc,_Xc" -offset indent
+.It Li \&%_c , \&%_p , \&%_u , \&%c
+One byte counts only.
+.It Xo
+.Li \&%d , \&%i , \&%o ,
+.Li \&%u , \&%X , \&%x
+.Xc
+Four byte default, one, two and four byte counts supported.
+.It Xo
+.Li \&%E , \&%e , \&%f ,
+.Li \&%G , \&%g
+.Xc
+Eight byte default, four and twelve byte counts supported.
+.El
+.Pp
+The amount of data interpreted by each format string is the sum of the
+data required by each format unit, which is the iteration count times the
+byte count, or the iteration count times the number of bytes required by
+the format if the byte count is not specified.
+.Pp
+The input is manipulated in ``blocks'', where a block is defined as the
+largest amount of data specified by any format string.
+Format strings interpreting less than an input block's worth of data,
+whose last format unit both interprets some number of bytes and does
+not have a specified iteration count, have the iteration count
+incremented until the entire input block has been processed or there
+is not enough data remaining in the block to satisfy the format string.
+.Pp
+If, either as a result of user specification or
+.Nm
+modifying
+the iteration count as described above, an iteration count is
+greater than one, no trailing whitespace characters are output
+during the last iteration.
+.Pp
+It is an error to specify a byte count as well as multiple conversion
+characters or strings unless all but one of the conversion characters
+or strings is
+.Cm \&_a
+or
+.Cm \&_A .
+.Pp
+If, as a result of the specification of the
+.Fl n
+option or end-of-file being reached, input data only partially
+satisfies a format string, the input block is zero-padded sufficiently
+to display all available data (i.e., any format units overlapping the
+end of data will display some number of the zero bytes).
+.Pp
+Further output by such format strings is replaced by an equivalent
+number of spaces.
+An equivalent number of spaces is defined as the number of spaces
+output by an
+.Cm s
+conversion character with the same field width
+and precision as the original conversion character or conversion
+string but with any
+.Dq Li \&+ ,
+.Dq \&\ \& ,
+.Dq Li \&#
+conversion flag characters
+removed, and referencing a NULL string.
+.Pp
+If no format strings are specified, the default display is a
+one-byte hexadecimal display.
+.Sh DIAGNOSTICS
+.Ex -std
+.Sh EXAMPLES
+Note that the following format strings, used with
+.Fl e ,
+must be enclosed in single quotes.
+.Pp
+Display the input in perusal format:
+.Bd -literal -offset indent
+"%06.6_ao "  12/1 "%3_u "
+"\et\et" "%_p "
+"\en"
+.Ed
+.Pp
+Implement the \-x option:
+.Bd -literal -offset indent
+"%07.7_Ax\en"
+"%07.7_ax  " 8/2 "%04x " "\en"
+.Ed
+.Sh SEE ALSO
+.Xr gdb 1 ,
+.Xr od 1
diff --git a/hexdump/hexdump.c b/hexdump/hexdump.c
new file mode 100644 (file)
index 0000000..78df723
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static const char copyright[] =
+"@(#) Copyright (c) 1989, 1993\n\
+       The Regents of the University of California.  All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)hexdump.c  8.1 (Berkeley) 6/6/93";
+#endif
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/hexdump.c,v 1.7 2002/09/04 23:29:01 dwmalone Exp $");
+
+#include <sys/types.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "hexdump.h"
+
+FS *fshead;                            /* head of format strings */
+int blocksize;                         /* data block size */
+int exitval;                           /* final exit value */
+int length = -1;                       /* max bytes to read */
+
+int
+main(int argc, char *argv[])
+{
+       FS *tfs;
+       char *p;
+
+       (void)setlocale(LC_ALL, "");
+
+       if (!(p = rindex(argv[0], 'o')) || strcmp(p, "od"))
+               newsyntax(argc, &argv);
+       else
+               oldsyntax(argc, &argv);
+
+       /* figure out the data block size */
+       for (blocksize = 0, tfs = fshead; tfs; tfs = tfs->nextfs) {
+               tfs->bcnt = size(tfs);
+               if (blocksize < tfs->bcnt)
+                       blocksize = tfs->bcnt;
+       }
+       /* rewrite the rules, do syntax checking */
+       for (tfs = fshead; tfs; tfs = tfs->nextfs)
+               rewrite(tfs);
+
+       (void)next(argv);
+       display();
+       exit(exitval);
+}
diff --git a/hexdump/hexdump.h b/hexdump/hexdump.h
new file mode 100644 (file)
index 0000000..a984287
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)hexdump.h   8.1 (Berkeley) 6/6/93
+ * $FreeBSD: src/usr.bin/hexdump/hexdump.h,v 1.9 2004/07/11 01:11:12 tjr Exp $
+ */
+
+#include <wchar.h>
+
+typedef struct _pr {
+       struct _pr *nextpr;             /* next print unit */
+#define        F_ADDRESS       0x001           /* print offset */
+#define        F_BPAD          0x002           /* blank pad */
+#define        F_C             0x004           /* %_c */
+#define        F_CHAR          0x008           /* %c */
+#define        F_DBL           0x010           /* %[EefGf] */
+#define        F_INT           0x020           /* %[di] */
+#define        F_P             0x040           /* %_p */
+#define        F_STR           0x080           /* %s */
+#define        F_U             0x100           /* %_u */
+#define        F_UINT          0x200           /* %[ouXx] */
+#define        F_TEXT          0x400           /* no conversions */
+       u_int flags;                    /* flag values */
+       int bcnt;                       /* byte count */
+       char *cchar;                    /* conversion character */
+       char *fmt;                      /* printf format */
+       char *nospace;                  /* no whitespace version */
+       int mbleft;                     /* bytes left of multibyte char. */
+       mbstate_t mbstate;              /* conversion state */
+} PR;
+
+typedef struct _fu {
+       struct _fu *nextfu;             /* next format unit */
+       struct _pr *nextpr;             /* next print unit */
+#define        F_IGNORE        0x01            /* %_A */
+#define        F_SETREP        0x02            /* rep count set, not default */
+       u_int flags;                    /* flag values */
+       int reps;                       /* repetition count */
+       int bcnt;                       /* byte count */
+       char *fmt;                      /* format string */
+} FU;
+
+typedef struct _fs {                   /* format strings */
+       struct _fs *nextfs;             /* linked list of format strings */
+       struct _fu *nextfu;             /* linked list of format units */
+       int bcnt;
+} FS;
+
+extern FS *fshead;                     /* head of format strings list */
+extern FU *endfu;                      /* format at end-of-data */
+extern int blocksize;                  /* data block size */
+extern int exitval;                    /* final exit value */
+extern int odmode;                     /* are we acting as od(1)? */
+extern int length;                     /* amount of data to read */
+extern off_t skip;                     /* amount of data to skip at start */
+enum _vflag { ALL, DUP, FIRST, WAIT }; /* -v values */
+extern enum _vflag vflag;
+
+void    add(const char *);
+void    addfile(char *);
+void    badcnt(char *);
+void    badconv(char *);
+void    badfmt(const char *);
+void    badsfmt(void);
+void    bpad(PR *);
+void    conv_c(PR *, u_char *, size_t);
+void    conv_u(PR *, u_char *);
+void    display(void);
+void    doskip(const char *, int);
+void    escape(char *);
+u_char *get(void);
+void    newsyntax(int, char ***);
+int     next(char **);
+void    nomem(void);
+void    oldsyntax(int, char ***);
+size_t  peek(u_char *, size_t);
+void    rewrite(FS *);
+int     size(FS *);
+void    usage(void);
diff --git a/hexdump/hexsyntax.c b/hexdump/hexsyntax.c
new file mode 100644 (file)
index 0000000..9961f2f
--- /dev/null
@@ -0,0 +1,147 @@
+/*-
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)hexsyntax.c        8.2 (Berkeley) 5/4/95";
+#endif
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/hexsyntax.c,v 1.12 2002/09/04 23:29:01 dwmalone Exp $");
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "hexdump.h"
+
+off_t skip;                            /* bytes to skip */
+
+void
+newsyntax(int argc, char ***argvp)
+{
+       int ch;
+       char *p, **argv;
+
+       argv = *argvp;
+       if ((p = rindex(argv[0], 'h')) != NULL &&
+           strcmp(p, "hd") == 0) {
+               /* "Canonical" format, implies -C. */
+               add("\"%08.8_Ax\n\"");
+               add("\"%08.8_ax  \" 8/1 \"%02x \" \"  \" 8/1 \"%02x \" ");
+               add("\"  |\" 16/1 \"%_p\" \"|\\n\"");
+       }
+       while ((ch = getopt(argc, argv, "bcCde:f:n:os:vx")) != -1)
+               switch (ch) {
+               case 'b':
+                       add("\"%07.7_Ax\n\"");
+                       add("\"%07.7_ax \" 16/1 \"%03o \" \"\\n\"");
+                       break;
+               case 'c':
+                       add("\"%07.7_Ax\n\"");
+                       add("\"%07.7_ax \" 16/1 \"%3_c \" \"\\n\"");
+                       break;
+               case 'C':
+                       add("\"%08.8_Ax\n\"");
+                       add("\"%08.8_ax  \" 8/1 \"%02x \" \"  \" 8/1 \"%02x \" ");
+                       add("\"  |\" 16/1 \"%_p\" \"|\\n\"");
+                       break;
+               case 'd':
+                       add("\"%07.7_Ax\n\"");
+                       add("\"%07.7_ax \" 8/2 \"  %05u \" \"\\n\"");
+                       break;
+               case 'e':
+                       add(optarg);
+                       break;
+               case 'f':
+                       addfile(optarg);
+                       break;
+               case 'n':
+                       if ((length = atoi(optarg)) < 0)
+                               errx(1, "%s: bad length value", optarg);
+                       break;
+               case 'o':
+                       add("\"%07.7_Ax\n\"");
+                       add("\"%07.7_ax \" 8/2 \" %06o \" \"\\n\"");
+                       break;
+               case 's':
+                       if ((skip = strtoll(optarg, &p, 0)) < 0)
+                               errx(1, "%s: bad skip value", optarg);
+                       switch(*p) {
+                       case 'b':
+                               skip *= 512;
+                               break;
+                       case 'k':
+                               skip *= 1024;
+                               break;
+                       case 'm':
+                               skip *= 1048576;
+                               break;
+                       case 'g':
+                               skip *= 1073741824;
+                               break;
+                       }
+                       break;
+               case 'v':
+                       vflag = ALL;
+                       break;
+               case 'x':
+                       add("\"%07.7_Ax\n\"");
+                       add("\"%07.7_ax \" 8/2 \"   %04x \" \"\\n\"");
+                       break;
+               case '?':
+                       usage();
+               }
+
+       if (!fshead) {
+               add("\"%07.7_Ax\n\"");
+               add("\"%07.7_ax \" 16/1 \"%02x \" \"\\n\"");
+       }
+
+       *argvp += optind;
+}
+
+void
+usage(void)
+{
+       (void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
+"usage: hexdump [-bcCdovx] [-e fmt] [-f fmt_file] [-n length]",
+"               [-s skip] [file ...]",
+"       hd      [-bcdovx]  [-e fmt] [-f fmt_file] [-n length]",
+"               [-s skip] [file ...]");
+       exit(1);
+}
diff --git a/hexdump/od.1 b/hexdump/od.1
new file mode 100644 (file)
index 0000000..f827f6c
--- /dev/null
@@ -0,0 +1,267 @@
+.\" Copyright (c) 1990, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"    @(#)od.1        8.1 (Berkeley) 6/6/93
+.\" $FreeBSD: src/usr.bin/hexdump/od.1,v 1.17 2004/07/11 01:11:12 tjr Exp $
+.\"
+.Dd July 11, 2004
+.Os
+.Dt OD 1
+.Sh NAME
+.Nm od
+.Nd octal, decimal, hex, ASCII dump
+.Sh SYNOPSIS
+.Nm
+.Op Fl aBbcDdeFfHhIiLlOosvXx
+.Op Fl A Ar base
+.Op Fl j Ar skip
+.Op Fl N Ar length
+.Op Fl t Ar type
+.Sm off
+.Oo
+.Op Cm \&+
+.Li offset
+.Op Cm \&.
+.Op Cm Bb
+.Oc
+.Sm on
+.Op Ar
+.Sh DESCRIPTION
+The
+.Nm
+utility is a filter which displays the specified files, or standard
+input if no files are specified, in a user specified format.
+.Pp
+The options are as follows:
+.Bl -tag -width ".Fl I , L , l"
+.It Fl A Ar base
+Specify the input address base.
+.Ar base
+may be one of
+.Cm d ,
+.Cm o ,
+.Cm x
+or
+.Cm n ,
+which specify decimal, octal, hexadecimal
+addresses or no address, respectively.
+.It Fl a
+Output named characters.
+Equivalent to
+.Fl t Ar a .
+.It Fl B , o
+Output octal shorts.
+Equivalent to
+.Fl t Ar o2 .
+.It Fl b
+Output octal bytes.
+Equivalent to
+.Fl t Ar o1 .
+.It Fl c
+Output C-style escaped characters.
+Equivalent to
+.Fl t Ar c .
+.It Fl D
+Output unsigned decimal ints.
+Equivalent to
+.Fl t Ar u4 .
+.It Fl e , F
+Output double-precision floating point numbers.
+Equivalent to
+.Fl t Ar fD .
+.It Fl f
+Output single-precision floating point numbers.
+Equivalent to
+.Fl t Ar fF .
+.It Fl H , X
+Output hexadecimal ints.
+Equivalent to
+.Fl t Ar x4 .
+.It Fl h , x
+Output hexadecimal shorts.
+Equivalent to
+.Fl t Ar x2 .
+.It Fl I , L , l
+Output signed decimal longs.
+Equivalent to
+.Fl t Ar dL .
+.It Fl i
+Output signed decimal ints.
+Equivalent to
+.Fl t Ar dI .
+.It Fl j Ar skip
+Skip
+.Ar skip
+bytes of the combined input before dumping.
+The number may be followed by one
+of
+.Cm b , k
+or
+.Cm m
+which specify the units of the number as blocks (512 bytes), kilobytes and
+megabytes, respectively.
+.It Fl N Ar length
+Dump at most
+.Ar length
+bytes of input.
+.It Fl O
+Output octal ints.
+Equivalent to
+.Fl t Ar o4 .
+.It Fl s
+Output signed decimal shorts.
+Equivalent to
+.Fl t Ar d2 .
+.It Fl t Ar type
+Specify the output format.
+.Ar type
+is a string containing one or more of the following kinds of type specifiers:
+.Bl -tag -width indent
+.It Cm a
+Named characters
+.Pq Tn ASCII .
+Control characters are displayed using the following names:
+.Bl -column "000 NUL" "001 SOH" "002 STX" "003 ETX" "004 EOT" "005 ENQ"
+.It "000 NUL   001 SOH 002 STX 003 ETX 004 EOT 005 ENQ"
+.It "006 ACK   007 BEL 008 BS  009 HT  00a NL  00b VT"
+.It "00c FF    00d CR  00e SO  00f SI  010 DLE 011 DC1"
+.It "012 DC2   013 DC3 014 DC4 015 NAK 016 SYN 017 ETB"
+.It "018 CAN   019 EM  01a SUB 01b ESC 01c FS  01d GS"
+.It "01e RS    01f US  020 SP  0ff DEL"
+.El
+.It Cm c
+Characters in the default character set.
+Non-printing characters are
+represented as 3-digit octal character codes, except the following
+characters, which are represented as C escapes:
+.Pp
+.Bl -tag -width carriage-return -compact
+.It NUL
+\e0
+.It alert
+\ea
+.It backspace
+\eb
+.It newline
+\en
+.It carriage-return
+\er
+.It tab
+\et
+.It vertical tab
+\ev
+.El
+.Pp
+Multi-byte characters are displayed in the area corresponding to the first
+byte of the character. The remaining bytes are shown as
+.Ql ** .
+.It Xo
+.Sm off
+.Op Cm d | o | u | x
+.Op Cm C | S | I | L | Ar n
+.Sm on
+.Xc
+Signed decimal
+.Pq Cm d ,
+octal
+.Pq Cm o ,
+unsigned decimal
+.Pq Cm u
+or
+hexadecimal
+.Pq Cm x .
+Followed by an optional size specifier, which may be either
+.Cm C
+.Pq Vt char ,
+.Cm S
+.Pq Vt short ,
+.Cm I
+.Pq Vt int ,
+.Cm L
+.Pq Vt long ,
+or a byte count as a decimal integer.
+.It Xo
+.Sm off
+.Cm f
+.Op Cm F | D | L | Ar n
+.Sm on
+.Xc
+Floating-point number.
+Followed by an optional size specifier, which may be either
+.Cm F
+.Pq Vt float ,
+.Cm D
+.Pq Vt double
+or
+.Cm L
+.Pq Vt "long double" .
+.El
+.It Fl v
+Write all input data, instead of replacing lines of duplicate values with a
+.Ql * .
+.El
+.Pp
+Multiple options that specify output format may be used; the output will
+contain one line for each format.
+.Pp
+If no output format is specified,
+.Fl t Ar oS
+is assumed.
+.Sh ENVIRONMENT
+The
+.Ev LANG , LC_ALL
+and
+.Ev LC_CTYPE
+environment variables affect the execution of
+.Nm
+as described in
+.Xr environ 7 .
+.Sh DIAGNOSTICS
+.Ex -std
+.Sh COMPATIBILITY
+The traditional
+.Fl s
+option to extract string constants is not supported; consider using
+.Xr strings 1
+instead.
+.Sh SEE ALSO
+.Xr hexdump 1 ,
+.Xr strings 1
+.Sh STANDARDS
+The
+.Nm
+utility conforms to
+.St -p1003.1-2001 .
+.Sh HISTORY
+An
+.Nm
+command appeared in
+.At v1 .
diff --git a/hexdump/odsyntax.c b/hexdump/odsyntax.c
new file mode 100644 (file)
index 0000000..6b9202e
--- /dev/null
@@ -0,0 +1,447 @@
+/*-
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)odsyntax.c 8.2 (Berkeley) 5/4/95";
+#endif
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/odsyntax.c,v 1.16 2002/09/04 23:29:01 dwmalone Exp $");
+
+#include <sys/types.h>
+
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <float.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "hexdump.h"
+
+#define PADDING        "         "
+
+int odmode;
+
+static void odadd(const char *);
+static void odformat(const char *);
+static const char *odformatfp(char, const char *);
+static const char *odformatint(char, const char *);
+static void odoffset(int, char ***);
+static void odusage(void);
+
+void
+oldsyntax(int argc, char ***argvp)
+{
+       static char _n[] = "%_n", padding[] = PADDING;
+       int ch;
+       char **argv, *end;
+
+       /* Add initial (default) address format. -A may change it later. */
+#define        TYPE_OFFSET     7
+       add("\"%07.7_Ao\n\"");
+       add("\"%07.7_ao  \"");
+
+       odmode = 1;
+       argv = *argvp;
+       while ((ch = getopt(argc, argv, "A:aBbcDdeFfHhIij:LlN:Oost:vXx")) != -1)
+               switch (ch) {
+               case 'A':
+                       switch (*optarg) {
+                       case 'd': case 'o': case 'x':
+                               fshead->nextfu->fmt[TYPE_OFFSET] = *optarg;
+                               fshead->nextfs->nextfu->fmt[TYPE_OFFSET] =
+                                   *optarg;
+                               break;
+                       case 'n':
+                               fshead->nextfu->fmt = _n; /* mimic regular output */
+                               fshead->nextfs->nextfu->fmt = padding;
+                               break;
+                       default:
+                               errx(1, "%s: invalid address base", optarg);
+                       }
+                       break;
+               case 'a':
+                       odformat("a");
+                       break;
+               case 'B':
+               case 'o':
+                       odformat("o2");
+                       break;
+               case 'b':
+                       odformat("o1");
+                       break;
+               case 'c':
+                       odformat("c");
+                       break;
+               case 'd':
+                       odformat("u2");
+                       break;
+               case 'D':
+                       odformat("u4");
+                       break;
+               case 'e':               /* undocumented in od */
+               case 'F':
+                       odformat("fD");
+                       break;
+               case 'f':
+                       odformat("fF");
+                       break;
+               case 'H':
+               case 'X':
+                       odformat("x4");
+                       break;
+               case 'h':
+               case 'x':
+                       odformat("x2");
+                       break;
+               case 'I':
+               case 'L':
+               case 'l':
+                       odformat("dL");
+                       break;
+               case 'i':
+                       odformat("dI");
+                       break;
+               case 'j':
+                       errno = 0;
+                       skip = strtoll(optarg, &end, 0);
+                       if (*end == 'b')
+                               skip *= 512;
+                       else if (*end == 'k')
+                               skip *= 1024;
+                       else if (*end == 'm')
+                               skip *= 1048576L;
+                       else if (*end == 'g')
+                               skip *= 1073741824;
+                       else if (*end != '\0')
+                               skip = -1;
+                       if (errno != 0 || skip < 0 || strlen(end) > 1)
+                               errx(1, "%s: invalid skip amount", optarg);
+                       break;
+               case 'N':
+                       if ((length = atoi(optarg)) <= 0)
+                               errx(1, "%s: invalid length", optarg);
+                       break;
+               case 'O':
+                       odformat("o4");
+                       break;
+               case 's':
+                       odformat("d2");
+                       break;
+               case 't':
+                       odformat(optarg);
+                       break;
+               case 'v':
+                       vflag = ALL;
+                       break;
+               case '?':
+               default:
+                       odusage();
+               }
+
+       if (fshead->nextfs->nextfs == NULL)
+               odformat("oS");
+
+       argc -= optind;
+       *argvp += optind;
+
+       if (argc)
+               odoffset(argc, argvp);
+}
+
+static void
+odusage(void)
+{
+
+       fprintf(stderr,
+"usage: od [-aBbcDdeFfHhIiLlOosvXx] [-A base] [-j skip] [-N length] [-t type]\n");
+       fprintf(stderr,
+"          [[+]offset[.][Bb]] [file ...]\n");
+       exit(1);
+}
+
+static void
+odoffset(int argc, char ***argvp)
+{
+       unsigned char *p, *q, *num, *end;
+       int base;
+
+       /*
+        * The offset syntax of od(1) was genuinely bizarre.  First, if
+        * it started with a plus it had to be an offset.  Otherwise, if
+        * there were at least two arguments, a number or lower-case 'x'
+        * followed by a number makes it an offset.  By default it was
+        * octal; if it started with 'x' or '0x' it was hex.  If it ended
+        * in a '.', it was decimal.  If a 'b' or 'B' was appended, it
+        * multiplied the number by 512 or 1024 byte units.  There was
+        * no way to assign a block count to a hex offset.
+        *
+        * We assume it's a file if the offset is bad.
+        */
+       p = (unsigned char *)(argc == 1 ? (*argvp)[0] : (*argvp)[1]);
+
+       if (*p != '+' && (argc < 2 ||
+           (!isdigit(p[0]) && (p[0] != 'x' || !isxdigit(p[1])))))
+               return;
+
+       base = 0;
+       /*
+        * skip over leading '+', 'x[0-9a-fA-f]' or '0x', and
+        * set base.
+        */
+       if (p[0] == '+')
+               ++p;
+       if (p[0] == 'x' && isxdigit(p[1])) {
+               ++p;
+               base = 16;
+       } else if (p[0] == '0' && p[1] == 'x') {
+               p += 2;
+               base = 16;
+       }
+
+       /* skip over the number */
+       if (base == 16)
+               for (num = p; isxdigit(*p); ++p);
+       else
+               for (num = p; isdigit(*p); ++p);
+
+       /* check for no number */
+       if (num == p)
+               return;
+       q = p;
+       /* if terminates with a '.', base is decimal */
+       if (*q == '.') {
+               if (base)
+                       return;
+               base = 10;
+               q++;
+       }
+
+       skip = strtoll((const char *)num, (char **)&end, base ? base : 8);
+
+       /* if end isn't the same as p, we got a non-octal digit */
+       if (end != p) {
+               skip = 0;
+               return;
+       }
+
+       if (*q) {
+               if (*q == 'B') {
+                       skip *= 1024;
+                       ++p;
+               } else if (*q == 'b') {
+                       skip *= 512;
+                       ++q;
+               }
+       }
+
+       if (*q) {
+               skip = 0;
+               return;
+       }
+
+       /*
+        * If the offset uses a non-octal base, the base of the offset
+        * is changed as well.  This isn't pretty, but it's easy.
+        */
+       if (base == 16) {
+               fshead->nextfu->fmt[TYPE_OFFSET] = 'x';
+               fshead->nextfs->nextfu->fmt[TYPE_OFFSET] = 'x';
+       } else if (base == 10) {
+               fshead->nextfu->fmt[TYPE_OFFSET] = 'd';
+               fshead->nextfs->nextfu->fmt[TYPE_OFFSET] = 'd';
+       }
+
+       /* Terminate file list. */
+       (*argvp)[1] = NULL;
+}
+
+static void
+odformat(const char *fmt)
+{
+       char fchar;
+
+       while (*fmt != '\0') {
+               switch ((fchar = *fmt++)) {
+               case 'a':
+                       odadd("16/1 \"%3_u \" \"\\n\"");
+                       break;
+               case 'c':
+                       odadd("16/1 \"%3_c \" \"\\n\"");
+                       break;
+               case 'o': case 'u': case 'd': case 'x':
+                       fmt = odformatint(fchar, fmt);
+                       break;
+               case 'f':
+                       fmt = odformatfp(fchar, fmt);
+                       break;
+               default:
+                       errx(1, "%c: unrecognised format character", fchar);
+               }
+       }
+}
+
+static const char *
+odformatfp(char fchar __unused, const char *fmt)
+{
+       size_t isize;
+       int digits;
+       char *end, *hdfmt;
+
+       isize = sizeof(double);
+       switch (*fmt) {
+       case 'F':
+               isize = sizeof(float);
+               fmt++;
+               break;
+       case 'D':
+               isize = sizeof(double);
+               fmt++;
+               break;
+       case 'L':
+               isize = sizeof(long double);
+               fmt++;
+               break;
+       default:
+               if (isdigit((unsigned char)*fmt)) {
+                       errno = 0;
+                       isize = (size_t)strtoul(fmt, &end, 10);
+                       if (errno != 0 || isize == 0)
+                               errx(1, "%s: invalid size", fmt);
+                       fmt = (const char *)end;
+               }
+       }
+       switch (isize) {
+       case sizeof(float):
+               digits = FLT_DIG;
+               break;
+       case sizeof(double):
+               digits = DBL_DIG;
+               break;
+       default:
+               if (isize == sizeof(long double))
+                       digits = LDBL_DIG;
+               else
+                       errx(1, "unsupported floating point size %lu",
+                           (u_long)isize);
+       }
+
+       asprintf(&hdfmt, "%lu/%lu \" %%%d.%de \" \"\\n\"",
+           16UL / (u_long)isize, (u_long)isize, digits + 8, digits);
+       if (hdfmt == NULL)
+               err(1, NULL);
+       odadd(hdfmt);
+       free(hdfmt);
+
+       return (fmt);
+}
+
+static const char *
+odformatint(char fchar, const char *fmt)
+{
+       unsigned long long n;
+       size_t isize;
+       int digits;
+       char *end, *hdfmt;
+
+       isize = sizeof(int);
+       switch (*fmt) {
+       case 'C':
+               isize = sizeof(char);
+               fmt++;
+               break;
+       case 'I':
+               isize = sizeof(int);
+               fmt++;
+               break;
+       case 'L':
+               isize = sizeof(long);
+               fmt++;
+               break;
+       case 'S':
+               isize = sizeof(short);
+               fmt++;
+               break;
+       default:
+               if (isdigit((unsigned char)*fmt)) {
+                       errno = 0;
+                       isize = (size_t)strtoul(fmt, &end, 10);
+                       if (errno != 0 || isize == 0)
+                               errx(1, "%s: invalid size", fmt);
+                       if (isize != sizeof(char) && isize != sizeof(short) &&
+                           isize != sizeof(int) && isize != sizeof(long))
+                               errx(1, "unsupported int size %lu",
+                                   (u_long)isize);
+                       fmt = (const char *)end;
+               }
+       }
+
+       /*
+        * Calculate the maximum number of digits we need to
+        * fit the number. Overestimate for decimal with log
+        * base 8. We need one extra space for signed numbers
+        * to store the sign.
+        */
+       n = (1ULL << (8 * isize)) - 1;
+       digits = 0;
+       while (n != 0) {
+               digits++;
+               n >>= (fchar == 'x') ? 4 : 3;
+       }
+       if (fchar == 'd')
+               digits++;
+       asprintf(&hdfmt, "%lu/%lu \"%*s%%%s%d%c\" \"\\n\"",
+           16UL / (u_long)isize, (u_long)isize, (int)(4 * isize - digits),
+           "", (fchar == 'd' || fchar == 'u') ? "" : "0", digits, fchar);
+       if (hdfmt == NULL)
+               err(1, NULL);
+       odadd(hdfmt);
+       free(hdfmt);
+
+       return (fmt);
+}
+
+static void
+odadd(const char *fmt)
+{
+       static int needpad;
+
+       if (needpad)
+               add("\""PADDING"\"");
+       add(fmt);
+       needpad = 1;
+}
diff --git a/hexdump/parse.c b/hexdump/parse.c
new file mode 100644 (file)
index 0000000..4f81cb7
--- /dev/null
@@ -0,0 +1,518 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)parse.c    8.1 (Berkeley) 6/6/93";
+#endif
+#endif /* not lint */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/usr.bin/hexdump/parse.c,v 1.12 2002/09/04 23:29:01 dwmalone Exp $");
+
+#include <sys/types.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include "hexdump.h"
+
+FU *endfu;                                     /* format at end-of-data */
+
+void
+addfile(char *name)
+{
+       unsigned char *p;
+       FILE *fp;
+       int ch;
+       char buf[2048 + 1];
+
+       if ((fp = fopen(name, "r")) == NULL)
+               err(1, "%s", name);
+       while (fgets(buf, sizeof(buf), fp)) {
+               if (!(p = (unsigned char *)index(buf, '\n'))) {
+                       warnx("line too long");
+                       while ((ch = getchar()) != '\n' && ch != EOF);
+                       continue;
+               }
+               *p = '\0';
+               for (p = (unsigned char *)buf; *p && isspace(*p); ++p);
+               if (!*p || *p == '#')
+                       continue;
+               add((const char *)p);
+       }
+       (void)fclose(fp);
+}
+
+void
+add(const char *fmt)
+{
+       unsigned const char *p, *savep;
+       static FS **nextfs;
+       FS *tfs;
+       FU *tfu, **nextfu;
+
+       /* start new linked list of format units */
+       if ((tfs = calloc(1, sizeof(FS))) == NULL)
+               err(1, NULL);
+       if (!fshead)
+               fshead = tfs;
+       else
+               *nextfs = tfs;
+       nextfs = &tfs->nextfs;
+       nextfu = &tfs->nextfu;
+
+       /* take the format string and break it up into format units */
+       for (p = (unsigned const char *)fmt;;) {
+               /* skip leading white space */
+               for (; isspace(*p); ++p);
+               if (!*p)
+                       break;
+
+               /* allocate a new format unit and link it in */
+               if ((tfu = calloc(1, sizeof(FU))) == NULL)
+                       err(1, NULL);
+               *nextfu = tfu;
+               nextfu = &tfu->nextfu;
+               tfu->reps = 1;
+
+               /* if leading digit, repetition count */
+               if (isdigit(*p)) {
+                       for (savep = p; isdigit(*p); ++p);
+                       if (!isspace(*p) && *p != '/')
+                               badfmt(fmt);
+                       /* may overwrite either white space or slash */
+                       tfu->reps = atoi((const char *)savep);
+                       tfu->flags = F_SETREP;
+                       /* skip trailing white space */
+                       for (++p; isspace(*p); ++p);
+               }
+
+               /* skip slash and trailing white space */
+               if (*p == '/')
+                       while (isspace(*++p));
+
+               /* byte count */
+               if (isdigit(*p)) {
+                       for (savep = p; isdigit(*p); ++p);
+                       if (!isspace(*p))
+                               badfmt(fmt);
+                       tfu->bcnt = atoi((const char *)savep);
+                       /* skip trailing white space */
+                       for (++p; isspace(*p); ++p);
+               }
+
+               /* format */
+               if (*p != '"')
+                       badfmt(fmt);
+               for (savep = ++p; *p != '"';)
+                       if (*p++ == 0)
+                               badfmt(fmt);
+               if (!(tfu->fmt = malloc(p - savep + 1)))
+                       err(1, NULL);
+               (void) strncpy(tfu->fmt, (const char *)savep, p - savep);
+               tfu->fmt[p - savep] = '\0';
+               escape(tfu->fmt);
+               p++;
+       }
+}
+
+static const char *spec = ".#-+ 0123456789";
+
+int
+size(FS *fs)
+{
+       FU *fu;
+       int bcnt, cursize;
+       unsigned char *fmt;
+       int prec;
+
+       /* figure out the data block size needed for each format unit */
+       for (cursize = 0, fu = fs->nextfu; fu; fu = fu->nextfu) {
+               if (fu->bcnt) {
+                       cursize += fu->bcnt * fu->reps;
+                       continue;
+               }
+               for (bcnt = prec = 0, fmt = (unsigned char *)fu->fmt; *fmt; ++fmt) {
+                       if (*fmt != '%')
+                               continue;
+                       /*
+                        * skip any special chars -- save precision in
+                        * case it's a %s format.
+                        */
+                       while (index(spec + 1, *++fmt));
+                       if (*fmt == '.' && isdigit(*++fmt)) {
+                               prec = atoi((const char *)fmt);
+                               while (isdigit(*++fmt));
+                       }
+                       switch(*fmt) {
+                       case 'c':
+                               bcnt += 1;
+                               break;
+                       case 'd': case 'i': case 'o': case 'u':
+                       case 'x': case 'X':
+                               bcnt += 4;
+                               break;
+                       case 'e': case 'E': case 'f': case 'g': case 'G':
+                               bcnt += 8;
+                               break;
+                       case 's':
+                               bcnt += prec;
+                               break;
+                       case '_':
+                               switch(*++fmt) {
+                               case 'c': case 'p': case 'u':
+                                       bcnt += 1;
+                                       break;
+                               }
+                       }
+               }
+               cursize += bcnt * fu->reps;
+       }
+       return (cursize);
+}
+
+void
+rewrite(FS *fs)
+{
+       enum { NOTOKAY, USEBCNT, USEPREC } sokay;
+       PR *pr, **nextpr = NULL;
+       FU *fu;
+       unsigned char *p1, *p2, *fmtp;
+       char savech, cs[3];
+       int nconv, prec = 0;
+
+       for (fu = fs->nextfu; fu; fu = fu->nextfu) {
+               /*
+                * Break each format unit into print units; each conversion
+                * character gets its own.
+                */
+               for (nconv = 0, fmtp = (unsigned char *)fu->fmt; *fmtp; nextpr = &pr->nextpr) {
+                       if ((pr = calloc(1, sizeof(PR))) == NULL)
+                               err(1, NULL);
+                       if (!fu->nextpr)
+                               fu->nextpr = pr;
+                       else
+                               *nextpr = pr;
+
+                       /* Skip preceding text and up to the next % sign. */
+                       for (p1 = fmtp; *p1 && *p1 != '%'; ++p1);
+
+                       /* Only text in the string. */
+                       if (!*p1) {
+                               pr->fmt = (char *)fmtp;
+                               pr->flags = F_TEXT;
+                               break;
+                       }
+
+                       /*
+                        * Get precision for %s -- if have a byte count, don't
+                        * need it.
+                        */
+                       if (fu->bcnt) {
+                               sokay = USEBCNT;
+                               /* Skip to conversion character. */
+                               for (++p1; index(spec, *p1); ++p1);
+                       } else {
+                               /* Skip any special chars, field width. */
+                               while (index(spec + 1, *++p1));
+                               if (*p1 == '.' && isdigit(*++p1)) {
+                                       sokay = USEPREC;
+                                       prec = atoi((const char *)p1);
+                                       while (isdigit(*++p1));
+                               } else
+                                       sokay = NOTOKAY;
+                       }
+
+                       p2 = p1 + 1;            /* Set end pointer. */
+                       cs[0] = *p1;            /* Set conversion string. */
+                       cs[1] = '\0';
+
+                       /*
+                        * Figure out the byte count for each conversion;
+                        * rewrite the format as necessary, set up blank-
+                        * padding for end of data.
+                        */
+                       switch(cs[0]) {
+                       case 'c':
+                               pr->flags = F_CHAR;
+                               switch(fu->bcnt) {
+                               case 0: case 1:
+                                       pr->bcnt = 1;
+                                       break;
+                               default:
+                                       p1[1] = '\0';
+                                       badcnt((char *)p1);
+                               }
+                               break;
+                       case 'd': case 'i':
+                               pr->flags = F_INT;
+                               goto isint;
+                       case 'o': case 'u': case 'x': case 'X':
+                               pr->flags = F_UINT;
+isint:                         cs[2] = '\0';
+                               cs[1] = cs[0];
+                               cs[0] = 'q';
+                               switch(fu->bcnt) {
+                               case 0: case 4:
+                                       pr->bcnt = 4;
+                                       break;
+                               case 1:
+                                       pr->bcnt = 1;
+                                       break;
+                               case 2:
+                                       pr->bcnt = 2;
+                                       break;
+                               default:
+                                       p1[1] = '\0';
+                                       badcnt((char *)p1);
+                               }
+                               break;
+                       case 'e': case 'E': case 'f': case 'g': case 'G':
+                               pr->flags = F_DBL;
+                               switch(fu->bcnt) {
+                               case 0: case 8:
+                                       pr->bcnt = 8;
+                                       break;
+                               case 4:
+                                       pr->bcnt = 4;
+                                       break;
+                               default:
+                                       if (fu->bcnt == sizeof(long double)) {
+                                               cs[2] = '\0';
+                                               cs[1] = cs[0];
+                                               cs[0] = 'L';
+                                               pr->bcnt = sizeof(long double);
+                                       } else {
+                                               p1[1] = '\0';
+                                               badcnt((char *)p1);
+                                       }
+                               }
+                               break;
+                       case 's':
+                               pr->flags = F_STR;
+                               switch(sokay) {
+                               case NOTOKAY:
+                                       badsfmt();
+                               case USEBCNT:
+                                       pr->bcnt = fu->bcnt;
+                                       break;
+                               case USEPREC:
+                                       pr->bcnt = prec;
+                                       break;
+                               }
+                               break;
+                       case '_':
+                               ++p2;
+                               switch(p1[1]) {
+                               case 'A':
+                                       endfu = fu;
+                                       fu->flags |= F_IGNORE;
+                                       /* FALLTHROUGH */
+                               case 'a':
+                                       pr->flags = F_ADDRESS;
+                                       ++p2;
+                                       switch(p1[2]) {
+                                       case 'd': case 'o': case'x':
+                                               cs[0] = 'q';
+                                               cs[1] = p1[2];
+                                               cs[2] = '\0';
+                                               break;
+                                       default:
+                                               p1[3] = '\0';
+                                               badconv((char *)p1);
+                                       }
+                                       break;
+                               case 'c':
+                                       pr->flags = F_C;
+                                       /* cs[0] = 'c'; set in conv_c */
+                                       goto isint2;
+                               case 'p':
+                                       pr->flags = F_P;
+                                       cs[0] = 'c';
+                                       goto isint2;
+                               case 'u':
+                                       pr->flags = F_U;
+                                       /* cs[0] = 'c'; set in conv_u */
+isint2:                                        switch(fu->bcnt) {
+                                       case 0: case 1:
+                                               pr->bcnt = 1;
+                                               break;
+                                       default:
+                                               p1[2] = '\0';
+                                               badcnt((char *)p1);
+                                       }
+                                       break;
+                               case 'n': /* Force -A n to dump extra blank line like default od behavior */
+                                       endfu = fu;
+                                       fu->flags = F_IGNORE;
+                                       pr->flags = F_TEXT;
+                                       fmtp = (unsigned char *)"\n";
+                                       cs[0] = '\0';
+                                       break;
+                               default:
+                                       p1[2] = '\0';
+                                       badconv((char *)p1);
+                               }
+                               break;
+                       default:
+                               p1[1] = '\0';
+                               badconv((char *)p1);
+                       }
+
+                       /*
+                        * Copy to PR format string, set conversion character
+                        * pointer, update original.
+                        */
+                       savech = *p2;
+                       p1[0] = '\0';
+                       if ((pr->fmt = calloc(1, strlen((const char *)fmtp) + 2)) == NULL)
+                               err(1, NULL);
+                       (void)strcpy(pr->fmt, (const char *)fmtp);
+                       (void)strcat(pr->fmt, cs);
+                       *p2 = savech;
+                       pr->cchar = pr->fmt + (p1 - fmtp);
+                       fmtp = p2;
+
+                       /* Only one conversion character if byte count. */
+                       if (!(pr->flags&F_ADDRESS) && fu->bcnt && nconv++)
+                               errx(1, "byte count with multiple conversion characters");
+               }
+               /*
+                * If format unit byte count not specified, figure it out
+                * so can adjust rep count later.
+                */
+               if (!fu->bcnt)
+                       for (pr = fu->nextpr; pr; pr = pr->nextpr)
+                               fu->bcnt += pr->bcnt;
+       }
+       /*
+        * If the format string interprets any data at all, and it's
+        * not the same as the blocksize, and its last format unit
+        * interprets any data at all, and has no iteration count,
+        * repeat it as necessary.
+        *
+        * If, rep count is greater than 1, no trailing whitespace
+        * gets output from the last iteration of the format unit.
+        */
+       for (fu = fs->nextfu; fu; fu = fu->nextfu) {
+               if (!fu->nextfu && fs->bcnt < blocksize &&
+                   !(fu->flags&F_SETREP) && fu->bcnt)
+                       fu->reps += (blocksize - fs->bcnt) / fu->bcnt;
+               if (fu->reps > 1) {
+                       for (pr = fu->nextpr;; pr = pr->nextpr)
+                               if (!pr->nextpr)
+                                       break;
+                       for (p1 = (unsigned char *)pr->fmt, p2 = NULL; *p1; ++p1)
+                               p2 = isspace(*p1) ? p1 : NULL;
+                       if (p2)
+                               pr->nospace = (char *)p2;
+               }
+       }
+#ifdef DEBUG
+       for (fu = fs->nextfu; fu; fu = fu->nextfu) {
+               (void)printf("fmt:");
+               for (pr = fu->nextpr; pr; pr = pr->nextpr)
+                       (void)printf(" {%s}", pr->fmt);
+               (void)printf("\n");
+       }
+#endif
+}
+
+void
+escape(char *p1)
+{
+       char *p2;
+
+       /* alphabetic escape sequences have to be done in place */
+       for (p2 = p1;; ++p1, ++p2) {
+               if (!*p1) {
+                       *p2 = *p1;
+                       break;
+               }
+               if (*p1 == '\\')
+                       switch(*++p1) {
+                       case 'a':
+                            /* *p2 = '\a'; */
+                               *p2 = '\007';
+                               break;
+                       case 'b':
+                               *p2 = '\b';
+                               break;
+                       case 'f':
+                               *p2 = '\f';
+                               break;
+                       case 'n':
+                               *p2 = '\n';
+                               break;
+                       case 'r':
+                               *p2 = '\r';
+                               break;
+                       case 't':
+                               *p2 = '\t';
+                               break;
+                       case 'v':
+                               *p2 = '\v';
+                               break;
+                       default:
+                               *p2 = *p1;
+                               break;
+                       }
+       }
+}
+
+void
+badcnt(char *s)
+{
+       errx(1, "%s: bad byte count", s);
+}
+
+void
+badsfmt(void)
+{
+       errx(1, "%%s: requires a precision or a byte count");
+}
+
+void
+badfmt(const char *fmt)
+{
+       errx(1, "\"%s\": bad format", fmt);
+}
+
+void
+badconv(char *ch)
+{
+       errx(1, "%%%s: bad conversion character", ch);
+}
diff --git a/hostname/Makefile b/hostname/Makefile
deleted file mode 100644 (file)
index ede49c6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = hostname
-Install_Dir = /bin
-
-CFILES = hostname.c
-MANPAGES = hostname.1
-
-Extra_CC_Flags = -Wall -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/id/Makefile b/id/Makefile
deleted file mode 100644 (file)
index e4f2e47..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Project = id
-Install_Dir = /usr/bin
-
-CFILES = id.c
-MANPAGES = groups.1 id.1 whoami.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID -DUSE_BSM_AUDIT \
-       -Wno-error
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-after_install:
-       $(LN) $(DSTROOT)/$(Install_Dir)/id $(DSTROOT)/$(Install_Dir)/groups
-       $(LN) $(DSTROOT)/$(Install_Dir)/id $(DSTROOT)/$(Install_Dir)/whoami
diff --git a/id/id.c b/id/id.c
index 5c5647f9ea0f578ce1bbbf3b5114cf2b63ec2664..4506f9b75ec096b4343677d9676008840a569e6b 100644 (file)
--- a/id/id.c
+++ b/id/id.c
@@ -365,7 +365,7 @@ group(struct passwd *pw, int nflag)
        struct group *gr;
        int cnt, id, lastid, ngroups;
 #ifdef __APPLE__
-       gid_t *groups;
+       gid_t *groups = NULL;
 #else
        gid_t groups[NGROUPS + 1];
 #endif
diff --git a/jot/Makefile b/jot/Makefile
deleted file mode 100644 (file)
index 0dde41c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = jot
-Install_Dir = /usr/bin
-
-CFILES = jot.c
-MANPAGES = jot.1
-
-Extra_CC_Flags = -Wall -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/kill/Makefile b/kill/Makefile
deleted file mode 100644 (file)
index 16cc8ef..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = kill
-Install_Dir = /bin
-
-CFILES = kill.c
-MANPAGES = kill.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/killall/Makefile b/killall/Makefile
deleted file mode 100644 (file)
index 2579d25..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = killall
-Install_Dir = /usr/bin
-
-CFILES = killall.c
-MANPAGES = killall.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/lastcomm/Makefile b/lastcomm/Makefile
deleted file mode 100644 (file)
index a411f10..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = lastcomm
-Install_Dir = /usr/bin
-
-HFILES = pathnames.h
-CFILES = lastcomm.c
-MANPAGES = lastcomm.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/locate/Makefile b/locate/Makefile
deleted file mode 100644 (file)
index 17217f8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = locate
-Install_Dir = /usr/bin
-
-SubProjects = bigram code locate
-MANPAGES = locate.code.8
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-after_install:
-       $(LN) $(DSTROOT)/usr/share/man/man8/locate.code.8 \
-               $(DSTROOT)/usr/share/man/man8/locate.bigram.8
diff --git a/locate/bigram/Makefile b/locate/bigram/Makefile
deleted file mode 100644 (file)
index b6b6fd2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = locate.bigram
-Install_Dir = /usr/libexec
-
-CFILES = locate.bigram.c
-
-Extra_CC_Flags = -Wall \
-       -I../locate
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/locate/bigram/Makefile.postamble b/locate/bigram/Makefile.postamble
deleted file mode 100644 (file)
index 013b558..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common
diff --git a/locate/bigram/Makefile.preamble b/locate/bigram/Makefile.preamble
deleted file mode 100644 (file)
index 9e10e90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Preamble.Common
diff --git a/locate/bigram/locate.bigram.8 b/locate/bigram/locate.bigram.8
new file mode 100644 (file)
index 0000000..129334c
--- /dev/null
@@ -0,0 +1 @@
+.so man8/locate.code.8
diff --git a/locate/code/Makefile b/locate/code/Makefile
deleted file mode 100644 (file)
index 351a09d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = locate.code
-Install_Dir = /usr/libexec
-
-CFILES = locate.code.c
-
-Extra_CC_Flags = -Wall \
-       -I../locate
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/locate/code/Makefile.postamble b/locate/code/Makefile.postamble
deleted file mode 100644 (file)
index 013b558..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common
diff --git a/locate/code/Makefile.preamble b/locate/code/Makefile.preamble
deleted file mode 100644 (file)
index 9e10e90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Preamble.Common
diff --git a/locate/code/locate.code.8 b/locate/code/locate.code.8
new file mode 100644 (file)
index 0000000..64dcfea
--- /dev/null
@@ -0,0 +1,23 @@
+.Dd October 15, 2004
+.Dt LOCATE.CODE 8  
+.Os Darwin
+.Sh NAME
+.Nm locate.code, locate.bigram
+.Nd sorted list compressor
+.Sh SYNOPSIS
+.Nm locate.code
+.Nm locate.bigram
+.Sh DESCRIPTION
+.Nm locate.code
+and
+.Nm locate.bigram
+are programs used by
+.Xr locate 1
+during the indexing process.
+.Nm locate.code
+and
+.Nm locate.bigram
+should not be run manually.
+.Sh SEE ALSO
+.Xr locate 1 ,
+.Xr locate.updatedb 8
diff --git a/locate/locate.code.8 b/locate/locate.code.8
deleted file mode 100644 (file)
index 64dcfea..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-.Dd October 15, 2004
-.Dt LOCATE.CODE 8  
-.Os Darwin
-.Sh NAME
-.Nm locate.code, locate.bigram
-.Nd sorted list compressor
-.Sh SYNOPSIS
-.Nm locate.code
-.Nm locate.bigram
-.Sh DESCRIPTION
-.Nm locate.code
-and
-.Nm locate.bigram
-are programs used by
-.Xr locate 1
-during the indexing process.
-.Nm locate.code
-and
-.Nm locate.bigram
-should not be run manually.
-.Sh SEE ALSO
-.Xr locate 1 ,
-.Xr locate.updatedb 8
diff --git a/locate/locate/Makefile b/locate/locate/Makefile
deleted file mode 100644 (file)
index c92392a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Project = locate
-Install_Dir = /usr/bin
-
-HFILES = locate.h pathnames.h
-CFILES = util.c locate.c
-MANPAGES = locate.1 locate.updatedb.8
-#OTHERSRCS = Makefile Makefile.preamble Makefile.postamble \
-            fastfind.c \
-            locate.1 locate.updatedb.8 locate.rc \
-            concatdb.sh mklocatedb.sh updatedb.sh
-LAUNCHD_PLISTS = com.apple.locate.plist
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-after_install:
-       $(INSTALL_DIRECTORY) $(DSTROOT)/usr/libexec
-       $(INSTALL_SCRIPT) concatdb.sh $(DSTROOT)/usr/libexec/locate.concatdb
-       $(INSTALL_SCRIPT) mklocatedb.sh $(DSTROOT)/usr/libexec/locate.mklocatedb
-       $(INSTALL_SCRIPT) updatedb.sh $(DSTROOT)/usr/libexec/locate.updatedb
-       $(LN) $(DSTROOT)/usr/share/man/man8/locate.updatedb.8 $(DSTROOT)/usr/share/man/man8/locate.concatdb.8
-       $(LN) $(DSTROOT)/usr/share/man/man8/locate.updatedb.8 $(DSTROOT)/usr/share/man/man8/locate.mklocatedb.8
-       $(INSTALL_DIRECTORY) $(DSTROOT)/private/etc
-       $(INSTALL_FILE) locate.rc $(DSTROOT)/private/etc
-       plutil -convert binary1 "$(DSTROOT)/System/Library/LaunchDaemons/$(LAUNCHD_PLISTS)"
diff --git a/locate/locate/Makefile.postamble b/locate/locate/Makefile.postamble
deleted file mode 100644 (file)
index 0ea2a99..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common
-
-after_install::
-       $(INSTALL_SCRIPT) concatdb.sh $(DSTROOT)/usr/libexec/locate.concatdb
-       $(INSTALL_SCRIPT) mklocatedb.sh $(DSTROOT)/usr/libexec/locate.mklocatedb
-       $(INSTALL_SCRIPT) updatedb.sh $(DSTROOT)/usr/libexec/locate.updatedb
-       $(LN) $(DSTROOT)/usr/share/man/man8/locate.updatedb.8 $(DSTROOT)/usr/share/man/man8/locate.concatdb.8
-       $(LN) $(DSTROOT)/usr/share/man/man8/locate.updatedb.8 $(DSTROOT)/usr/share/man/man8/locate.mklocatedb.8
-       $(MKDIR) $(DSTROOT)$(ETCDIR)
-       $(INSTALL_FILE) locate.rc $(DSTROOT)$(ETCDIR)
diff --git a/locate/locate/Makefile.preamble b/locate/locate/Makefile.preamble
deleted file mode 100644 (file)
index 9e10e90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Preamble.Common
diff --git a/logname/Makefile b/logname/Makefile
deleted file mode 100644 (file)
index f64a48a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = logname
-Install_Dir = /usr/bin
-
-CFILES = logname.c
-MANPAGES = logname.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/machine/Makefile b/machine/Makefile
deleted file mode 100644 (file)
index 7e3f761..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = machine
-Install_Dir = /usr/bin
-
-CFILES = machine.c
-MANPAGES = machine.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/machine/machine.1 b/machine/machine.1
deleted file mode 100644 (file)
index eda106c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-.\"    $NetBSD: machine.1,v 1.4 1997/10/19 04:41:01 lukem Exp $
-.\"
-.\" Copyright (c) 1980, 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"    from: @(#)machine.1     5.5 (Berkeley) 7/26/91
-.\"    $NetBSD: machine.1,v 1.4 1997/10/19 04:41:01 lukem Exp $
-.\"
-.Dd July 26, 1991
-.Dt MACHINE 1
-.Os
-.Sh NAME
-.Nm machine
-.Nd print machine type
-.Sh SYNOPSIS
-.Nm
-.Sh DESCRIPTION
-The
-.Nm
-command displays the machine type.
-.Sh SEE ALSO
-.Xr make 1
-.Sh HISTORY
-The
-.Nm
-command is
-.Ud .
diff --git a/machine/machine.c b/machine/machine.c
deleted file mode 100644 (file)
index 687eecc..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*     $NetBSD: machine.c,v 1.4 1997/10/19 04:41:04 lukem Exp $        */
-
-/*
- * Copyright (c) 1986 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-#ifndef lint
-__COPYRIGHT("@(#) Copyright (c) 1986 Regents of the University of California.\n\
- All rights reserved.\n");
-#endif /* not lint */
-
-#ifndef lint
-/*static char sccsid[] = "from: @(#)machine.c  5.5 (Berkeley) 6/1/90";*/
-__RCSID("$NetBSD: machine.c,v 1.4 1997/10/19 04:41:04 lukem Exp $");
-#endif /* not lint */
-
-#include <sys/param.h>
-#include <stdio.h>
-
-int    main __P((int, char **));
-
-int
-main(argc, argv)
-       int argc;
-       char *argv[];
-{
-       puts(MACHINE);
-       exit(0);
-}
diff --git a/mktemp/Makefile b/mktemp/Makefile
deleted file mode 100644 (file)
index e563968..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = mktemp
-Install_Dir = /usr/bin
-
-CFILES = mktemp.c
-MANPAGES = mktemp.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/nice/Makefile b/nice/Makefile
deleted file mode 100644 (file)
index 2d024d9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = nice
-Install_Dir = /usr/bin
-
-CFILES = nice.c
-MANPAGES = nice.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/nohup/Makefile b/nohup/Makefile
deleted file mode 100644 (file)
index 4134804..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = nohup
-Install_Dir = /usr/bin
-
-CFILES = nohup.c
-MANPAGES = nohup.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/path_helper/Makefile b/path_helper/Makefile
deleted file mode 100644 (file)
index b4d53fa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = path_helper
-Install_Dir = /usr/libexec
-
-CFILES = path_helper.c
-MANPAGES = path_helper.8
-
-Extra_CC_Flags = -Wall -Werror
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/printenv/Makefile b/printenv/Makefile
deleted file mode 100644 (file)
index ec00f21..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = printenv
-Install_Dir = /usr/bin
-
-CFILES = printenv.c
-MANPAGES = printenv.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/printf/Makefile b/printf/Makefile
deleted file mode 100644 (file)
index ce06b7e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = printf
-Install_Dir = /usr/bin
-
-CFILES = printf.c
-MANPAGES = printf.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/pwd/Makefile b/pwd/Makefile
deleted file mode 100644 (file)
index 3f861d1..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = pwd
-Install_Dir = /bin
-
-CFILES = pwd.c
-MANPAGES = pwd.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/renice/Makefile b/renice/Makefile
deleted file mode 100644 (file)
index e8807d2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = renice
-Insatll_Dir = /usr/bin
-
-CFILES = renice.c
-MANPAGES = renice.8
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/script/Makefile b/script/Makefile
deleted file mode 100644 (file)
index e3ea256..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = script
-Install_Dir = /usr/bin
-
-CFILES = script.c
-MANPAGES = script.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/seq/Makefile b/seq/Makefile
deleted file mode 100644 (file)
index 9a556a0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = seq
-Install_Dir = /usr/bin
-
-CFILES = seq.c
-MANPAGES = seq.1
-
-Extra_CC_Flags = -Wall -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/shell_cmds.xcodeproj/project.pbxproj b/shell_cmds.xcodeproj/project.pbxproj
new file mode 100644 (file)
index 0000000..8bbe58d
--- /dev/null
@@ -0,0 +1,5189 @@
+// !$*UTF8*$!
+{
+       archiveVersion = 1;
+       classes = {
+       };
+       objectVersion = 46;
+       objects = {
+
+/* Begin PBXAggregateTarget section */
+               FCBA14FD14A144EC00AA698B /* All_OSX */ = {
+                       isa = PBXAggregateTarget;
+                       buildConfigurationList = FCBA14FE14A144EC00AA698B /* Build configuration list for PBXAggregateTarget "All_OSX" */;
+                       buildPhases = (
+                               FCE30EB814B531EC00CC0294 /* ShellScript */,
+                       );
+                       dependencies = (
+                               FCBA150114A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150314A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150514A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150714A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150914A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150B14A144F700AA698B /* PBXTargetDependency */,
+                               FCBA150D14A144F700AA698B /* PBXTargetDependency */,
+                               FCBA165514A146D000AA698B /* PBXTargetDependency */,
+                               FCBA165714A146D000AA698B /* PBXTargetDependency */,
+                               FCBA165914A146D000AA698B /* PBXTargetDependency */,
+                               FCBA165B14A146D000AA698B /* PBXTargetDependency */,
+                               FC5D63A214B9864400123E48 /* PBXTargetDependency */,
+                               FCBA165D14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA165F14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166114A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166314A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166514A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166714A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166914A146D000AA698B /* PBXTargetDependency */,
+                               FCE30EE314B539BF00CC0294 /* PBXTargetDependency */,
+                               FCE30EE514B539BF00CC0294 /* PBXTargetDependency */,
+                               FCBA166B14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA166F14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167114A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167314A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167514A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167714A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167914A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167B14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167D14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA167F14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168114A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168314A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168514A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168714A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168914A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168B14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168D14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA168F14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169114A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169314A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169514A146D000AA698B /* PBXTargetDependency */,
+                               FC5D63A414B9864400123E48 /* PBXTargetDependency */,
+                               FCBA169714A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169914A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169B14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169D14A146D000AA698B /* PBXTargetDependency */,
+                               FCBA169F14A146D000AA698B /* PBXTargetDependency */,
+                       );
+                       name = All_OSX;
+                       productName = executables;
+               };
+               FCE30F4A14B619B000CC0294 /* All_iOS */ = {
+                       isa = PBXAggregateTarget;
+                       buildConfigurationList = FCE30F4B14B619B000CC0294 /* Build configuration list for PBXAggregateTarget "All_iOS" */;
+                       buildPhases = (
+                               FCE30F4D14B619C900CC0294 /* Run Script */,
+                       );
+                       dependencies = (
+                               FCE30F4F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5114B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5314B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5514B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5714B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5914B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5B14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5D14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F5F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6114B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6314B619E600CC0294 /* PBXTargetDependency */,
+                               FC5D63A614B9866500123E48 /* PBXTargetDependency */,
+                               FCE30F6514B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6714B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6914B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6B14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6D14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F6F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7114B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7314B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7514B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7714B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7914B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7B14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7D14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F7F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8114B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8314B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8514B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8714B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8914B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8B14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8D14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F8F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9114B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9314B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9514B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9714B619E600CC0294 /* PBXTargetDependency */,
+                               FC5D63A814B9866500123E48 /* PBXTargetDependency */,
+                               FCE30F9914B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9B14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9D14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30F9F14B619E600CC0294 /* PBXTargetDependency */,
+                               FCE30FA114B619E600CC0294 /* PBXTargetDependency */,
+                       );
+                       name = All_iOS;
+                       productName = embedded;
+               };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+               FC2B5BFB14B3CCC600ECF511 /* uname.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA140914A141A300AA698B /* uname.c */; };
+               FC2B5BFD14B3CCD200ECF511 /* uname.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA140814A141A300AA698B /* uname.1 */; };
+               FC2B5BFE14B3CCD700ECF511 /* true.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA140414A141A300AA698B /* true.c */; };
+               FC2B5BFF14B3CCEF00ECF511 /* true.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA140314A141A300AA698B /* true.1 */; };
+               FC2B5C0014B3CCF800ECF511 /* time.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA140014A141A300AA698B /* time.c */; };
+               FC2B5C0114B3CD0300ECF511 /* time.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13FF14A141A300AA698B /* time.1 */; };
+               FC2B5C0214B3CD0C00ECF511 /* test.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13FB14A141A300AA698B /* test.c */; };
+               FC2B5C0314B3CD1400ECF511 /* [.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13F814A141A300AA698B /* [.1 */; };
+               FC2B5C0414B3CD1400ECF511 /* test.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13FA14A141A300AA698B /* test.1 */; };
+               FC2B5C0514B3CD1D00ECF511 /* tee.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13F514A141A300AA698B /* tee.1 */; };
+               FC2B5C0614B3CD2800ECF511 /* tee.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13F614A141A300AA698B /* tee.c */; };
+               FC2B5C0714B3CD2F00ECF511 /* su.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13F114A141A300AA698B /* su.c */; };
+               FC2B5C0814B3CD3500ECF511 /* su.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13F014A141A300AA698B /* su.1 */; };
+               FC2B5C0914B3CD3E00ECF511 /* sleep.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13EC14A141A300AA698B /* sleep.1 */; };
+               FC2B5C0A14B3CD4400ECF511 /* sleep.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13ED14A141A300AA698B /* sleep.c */; };
+               FC2B5C0B14B3CD4F00ECF511 /* shlock.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13E914A141A300AA698B /* shlock.c */; };
+               FC2B5C0C14B3CD5B00ECF511 /* shlock.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13E814A141A300AA698B /* shlock.1 */; };
+               FC5D638D14B981D200123E48 /* what.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D637314B9808E00123E48 /* what.c */; };
+               FC5D638E14B981D800123E48 /* what.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FC5D637214B9808E00123E48 /* what.1 */; };
+               FC5D639914B9825B00123E48 /* hexdump.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FC5D636A14B9808E00123E48 /* hexdump.1 */; };
+               FC5D639A14B9825B00123E48 /* od.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FC5D636E14B9808E00123E48 /* od.1 */; };
+               FC5D639B14B9826500123E48 /* conv.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D636814B9808E00123E48 /* conv.c */; };
+               FC5D639C14B9826500123E48 /* display.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D636914B9808E00123E48 /* display.c */; };
+               FC5D639D14B9826500123E48 /* hexdump.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D636B14B9808E00123E48 /* hexdump.c */; };
+               FC5D639E14B9826500123E48 /* hexsyntax.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D636D14B9808E00123E48 /* hexsyntax.c */; };
+               FC5D639F14B9826500123E48 /* odsyntax.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D636F14B9808E00123E48 /* odsyntax.c */; };
+               FC5D63A014B9826500123E48 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FC5D637014B9808E00123E48 /* parse.c */; };
+               FCBA02E714B5061B0030BEB3 /* seq.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13E414A141A300AA698B /* seq.1 */; };
+               FCBA02E814B506230030BEB3 /* seq.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13E514A141A300AA698B /* seq.c */; };
+               FCBA02E914B5062E0030BEB3 /* script.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13E014A141A300AA698B /* script.1 */; };
+               FCBA02EA14B506340030BEB3 /* script.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13E114A141A300AA698B /* script.c */; };
+               FCBA02EB14B5063E0030BEB3 /* renice.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13DC14A141A300AA698B /* renice.8 */; };
+               FCBA02EC14B5064C0030BEB3 /* renice.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13DD14A141A300AA698B /* renice.c */; };
+               FCBA02ED14B506530030BEB3 /* pwd.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13D914A141A300AA698B /* pwd.c */; };
+               FCBA02EF14B5065D0030BEB3 /* printf.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13D414A141A300AA698B /* printf.1 */; };
+               FCBA02F014B506660030BEB3 /* printf.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13D514A141A300AA698B /* printf.c */; };
+               FCBA02F114B506720030BEB3 /* printenv.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13D114A141A300AA698B /* printenv.c */; };
+               FCBA02F214B5067C0030BEB3 /* printenv.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13D014A141A300AA698B /* printenv.1 */; };
+               FCBA02F314B506840030BEB3 /* path_helper.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13CD14A141A300AA698B /* path_helper.c */; };
+               FCBA02F414B5068C0030BEB3 /* path_helper.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13CC14A141A300AA698B /* path_helper.8 */; };
+               FCBA02F514B506940030BEB3 /* nohup.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13C914A141A300AA698B /* nohup.c */; };
+               FCBA02F614B5069C0030BEB3 /* nohup.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13C814A141A300AA698B /* nohup.1 */; };
+               FCBA02F714B506B10030BEB3 /* nice.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13C414A141A300AA698B /* nice.1 */; };
+               FCBA02F814B506BB0030BEB3 /* nice.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13C514A141A300AA698B /* nice.c */; };
+               FCBA02F914B506CB0030BEB3 /* mktemp.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13C114A141A300AA698B /* mktemp.c */; };
+               FCBA02FA14B506DA0030BEB3 /* mktemp.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13C014A141A300AA698B /* mktemp.1 */; };
+               FCBA02FD14B506FA0030BEB3 /* logname.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13B514A141A300AA698B /* logname.c */; };
+               FCBA02FE14B506FF0030BEB3 /* logname.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13B414A141A300AA698B /* logname.1 */; };
+               FCBA02FF14B507130030BEB3 /* expr.y in Sources */ = {isa = PBXBuildFile; fileRef = FCBA136714A141A300AA698B /* expr.y */; };
+               FCBA030014B5071A0030BEB3 /* expr.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA136614A141A300AA698B /* expr.1 */; };
+               FCBA030114B507220030BEB3 /* false.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA136B14A141A300AA698B /* false.c */; };
+               FCBA030214B5072C0030BEB3 /* false.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA136A14A141A300AA698B /* false.1 */; };
+               FCBA030314B5073F0030BEB3 /* find.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137114A141A300AA698B /* find.c */; };
+               FCBA030414B5073F0030BEB3 /* function.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137314A141A300AA698B /* function.c */; };
+               FCBA030514B5073F0030BEB3 /* getdate.y in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137414A141A300AA698B /* getdate.y */; };
+               FCBA030614B5073F0030BEB3 /* ls.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137514A141A300AA698B /* ls.c */; };
+               FCBA030714B5073F0030BEB3 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137614A141A300AA698B /* main.c */; };
+               FCBA030814B5073F0030BEB3 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137814A141A300AA698B /* misc.c */; };
+               FCBA030914B5073F0030BEB3 /* operator.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137914A141A300AA698B /* operator.c */; };
+               FCBA030A14B5073F0030BEB3 /* option.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137A14A141A300AA698B /* option.c */; };
+               FCBA030B14B507450030BEB3 /* find.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA137014A141A300AA698B /* find.1 */; };
+               FCBA030C14B5074D0030BEB3 /* getopt.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA137D14A141A300AA698B /* getopt.c */; };
+               FCBA030D14B507580030BEB3 /* getopt.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA137C14A141A300AA698B /* getopt.1 */; };
+               FCBA030E14B5076A0030BEB3 /* hostname.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA138114A141A300AA698B /* hostname.c */; };
+               FCBA030F14B507700030BEB3 /* hostname.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA138014A141A300AA698B /* hostname.1 */; };
+               FCBA031014B507790030BEB3 /* id.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA138614A141A300AA698B /* id.c */; };
+               FCBA031214B507870030BEB3 /* groups.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA138414A141A300AA698B /* groups.1 */; };
+               FCBA031314B507870030BEB3 /* id.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA138514A141A300AA698B /* id.1 */; };
+               FCBA031414B507870030BEB3 /* whoami.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA138A14A141A300AA698B /* whoami.1 */; };
+               FCBA031514B507900030BEB3 /* jot.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA138D14A141A300AA698B /* jot.c */; };
+               FCBA031614B507950030BEB3 /* jot.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA138C14A141A300AA698B /* jot.1 */; };
+               FCBA031714B507A10030BEB3 /* kill.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA139114A141A300AA698B /* kill.c */; };
+               FCBA031814B507A50030BEB3 /* kill.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA139014A141A300AA698B /* kill.1 */; };
+               FCBA031914B507B00030BEB3 /* killall.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA139514A141A300AA698B /* killall.c */; };
+               FCBA031A14B507B60030BEB3 /* killall.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA139414A141A300AA698B /* killall.1 */; };
+               FCBA031B14B507BD0030BEB3 /* lastcomm.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA139914A141A300AA698B /* lastcomm.c */; };
+               FCBA031C14B507C40030BEB3 /* lastcomm.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA139814A141A300AA698B /* lastcomm.1 */; };
+               FCBA031E14B507D10030BEB3 /* locate.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13A814A141A300AA698B /* locate.c */; };
+               FCBA031F14B507D10030BEB3 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13B014A141A300AA698B /* util.c */; };
+               FCBA032014B507E50030BEB3 /* locate.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13A714A141A300AA698B /* locate.1 */; };
+               FCBA14EB14A1444900AA698B /* apply.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA134714A141A300AA698B /* apply.c */; };
+               FCBA14ED14A1444E00AA698B /* apply.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA134614A141A300AA698B /* apply.1 */; };
+               FCBA14EE14A1446700AA698B /* basename.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA134B14A141A300AA698B /* basename.c */; };
+               FCBA14EF14A1446B00AA698B /* basename.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA134A14A141A300AA698B /* basename.1 */; };
+               FCBA14F114A1448C00AA698B /* chroot.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135014A141A300AA698B /* chroot.c */; };
+               FCBA14F214A1448F00AA698B /* chroot.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA134F14A141A300AA698B /* chroot.8 */; };
+               FCBA14F314A1449A00AA698B /* date.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA135314A141A300AA698B /* date.1 */; };
+               FCBA14F414A1449C00AA698B /* date.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135414A141A300AA698B /* date.c */; };
+               FCBA14F514A144AF00AA698B /* netdate.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135714A141A300AA698B /* netdate.c */; };
+               FCBA14F614A144B200AA698B /* vary.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135814A141A300AA698B /* vary.c */; };
+               FCBA14F714A144C700AA698B /* dirname.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135B14A141A300AA698B /* dirname.c */; };
+               FCBA14F814A144CB00AA698B /* dirname.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA134C14A141A300AA698B /* dirname.1 */; };
+               FCBA14F914A144D000AA698B /* echo.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA135E14A141A300AA698B /* echo.1 */; };
+               FCBA14FA14A144D300AA698B /* echo.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA135F14A141A300AA698B /* echo.c */; };
+               FCBA14FB14A144E300AA698B /* env.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA136214A141A300AA698B /* env.1 */; };
+               FCBA14FC14A144E500AA698B /* env.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA136314A141A300AA698B /* env.c */; };
+               FCBA163E14A1466500AA698B /* yes.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA142D14A141A300AA698B /* yes.1 */; };
+               FCBA163F14A1466900AA698B /* yes.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA142E14A141A300AA698B /* yes.c */; };
+               FCBA164014A1466F00AA698B /* xargs.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA142A14A141A300AA698B /* xargs.c */; };
+               FCBA164114A1467200AA698B /* strnsubst.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA142814A141A300AA698B /* strnsubst.c */; };
+               FCBA164214A1467500AA698B /* xargs.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA142914A141A300AA698B /* xargs.1 */; };
+               FCBA164314A1467A00AA698B /* utmpentry.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA142114A141A300AA698B /* utmpentry.c */; };
+               FCBA164414A1467D00AA698B /* who.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA142414A141A300AA698B /* who.c */; };
+               FCBA164514A1468000AA698B /* who.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA142314A141A300AA698B /* who.1 */; };
+               FCBA164614A1468600AA698B /* which.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141E14A141A300AA698B /* which.c */; };
+               FCBA164714A1468900AA698B /* which.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA141D14A141A300AA698B /* which.1 */; };
+               FCBA164814A1469000AA698B /* whereis.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141A14A141A300AA698B /* whereis.c */; };
+               FCBA164914A1469300AA698B /* whereis.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA141914A141A300AA698B /* whereis.1 */; };
+               FCBA164A14A1469A00AA698B /* fmt.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141014A141A300AA698B /* fmt.c */; };
+               FCBA164B14A1469D00AA698B /* pr_time.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141214A141A300AA698B /* pr_time.c */; };
+               FCBA164C14A1469F00AA698B /* proc_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141314A141A300AA698B /* proc_compare.c */; };
+               FCBA164D14A146A200AA698B /* w.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA141614A141A300AA698B /* w.c */; };
+               FCBA164E14A146A500AA698B /* uptime.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA141414A141A300AA698B /* uptime.1 */; };
+               FCBA164F14A146A700AA698B /* w.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA141514A141A300AA698B /* w.1 */; };
+               FCBA165014A146BE00AA698B /* users.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA140D14A141A300AA698B /* users.c */; };
+               FCBA165114A146C100AA698B /* users.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA140C14A141A300AA698B /* users.1 */; };
+               FCE30EA814B5105200CC0294 /* pwd.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13D814A141A300AA698B /* pwd.1 */; };
+               FCE30EBA14B532D900CC0294 /* com.apple.locate.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13A414A141A300AA698B /* com.apple.locate.plist */; };
+               FCE30EBD14B533A200CC0294 /* locate.rc in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13AA14A141A300AA698B /* locate.rc */; };
+               FCE30EBF14B533E200CC0294 /* locate.updatedb.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13AB14A141A300AA698B /* locate.updatedb.8 */; };
+               FCE30ED414B536A600CC0294 /* locate.bigram.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA139E14A141A300AA698B /* locate.bigram.c */; };
+               FCE30ED514B536B200CC0294 /* locate.bigram.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCE30EC114B5347A00CC0294 /* locate.bigram.8 */; };
+               FCE30EE014B536F200CC0294 /* locate.code.c in Sources */ = {isa = PBXBuildFile; fileRef = FCBA13A114A141A300AA698B /* locate.code.c */; };
+               FCE30EE114B536F800CC0294 /* locate.code.8 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FCBA13B114A141A300AA698B /* locate.code.8 */; };
+               FCED3AF614B4FC1800C313C3 /* libpam.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FCED3AF514B4FC1800C313C3 /* libpam.dylib */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+               FC5D63A114B9864400123E48 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FC5D638F14B9822D00123E48;
+                       remoteInfo = hexdump;
+               };
+               FC5D63A314B9864400123E48 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FC5D637F14B9819E00123E48;
+                       remoteInfo = what;
+               };
+               FC5D63A514B9866500123E48 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FC5D638F14B9822D00123E48;
+                       remoteInfo = hexdump;
+               };
+               FC5D63A714B9866500123E48 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FC5D637F14B9819E00123E48;
+                       remoteInfo = what;
+               };
+               FCBA150014A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA149814A141FF00AA698B;
+                       remoteInfo = apply;
+               };
+               FCBA150214A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14AE14A1422D00AA698B;
+                       remoteInfo = basename;
+               };
+               FCBA150414A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14B714A1423E00AA698B;
+                       remoteInfo = chroot;
+               };
+               FCBA150614A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14BF14A1426800AA698B;
+                       remoteInfo = date;
+               };
+               FCBA150814A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14C714A1428000AA698B;
+                       remoteInfo = dirname;
+               };
+               FCBA150A14A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14CF14A1433F00AA698B;
+                       remoteInfo = echo;
+               };
+               FCBA150C14A144F700AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14D714A1434A00AA698B;
+                       remoteInfo = env;
+               };
+               FCBA165414A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA150E14A1453A00AA698B;
+                       remoteInfo = expr;
+               };
+               FCBA165614A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA151614A1454D00AA698B;
+                       remoteInfo = false;
+               };
+               FCBA165814A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA151E14A1455600AA698B;
+                       remoteInfo = find;
+               };
+               FCBA165A14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA152614A1455900AA698B;
+                       remoteInfo = getopt;
+               };
+               FCBA165C14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA152E14A1455C00AA698B;
+                       remoteInfo = hostname;
+               };
+               FCBA165E14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA153614A1455F00AA698B;
+                       remoteInfo = id;
+               };
+               FCBA166014A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA153E14A1456100AA698B;
+                       remoteInfo = jot;
+               };
+               FCBA166214A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA154614A1456400AA698B;
+                       remoteInfo = kill;
+               };
+               FCBA166414A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA154E14A1456700AA698B;
+                       remoteInfo = killall;
+               };
+               FCBA166614A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA155614A1456A00AA698B;
+                       remoteInfo = lastcomm;
+               };
+               FCBA166814A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA155E14A1456E00AA698B;
+                       remoteInfo = locate;
+               };
+               FCBA166A14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA156614A1457100AA698B;
+                       remoteInfo = logname;
+               };
+               FCBA166E14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA157614A1457B00AA698B;
+                       remoteInfo = mktemp;
+               };
+               FCBA167014A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA157E14A1457F00AA698B;
+                       remoteInfo = nice;
+               };
+               FCBA167214A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA158614A1458500AA698B;
+                       remoteInfo = nohup;
+               };
+               FCBA167414A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA158E14A1458800AA698B;
+                       remoteInfo = path_helper;
+               };
+               FCBA167614A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA159614A1458C00AA698B;
+                       remoteInfo = printenv;
+               };
+               FCBA167814A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA159E14A1459000AA698B;
+                       remoteInfo = printf;
+               };
+               FCBA167A14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15A614A1459500AA698B;
+                       remoteInfo = pwd;
+               };
+               FCBA167C14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15AE14A1459700AA698B;
+                       remoteInfo = renice;
+               };
+               FCBA167E14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15B614A1459900AA698B;
+                       remoteInfo = script;
+               };
+               FCBA168014A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15BE14A1459E00AA698B;
+                       remoteInfo = seq;
+               };
+               FCBA168214A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15C614A145A200AA698B;
+                       remoteInfo = shlock;
+               };
+               FCBA168414A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15CE14A145A500AA698B;
+                       remoteInfo = sleep;
+               };
+               FCBA168614A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15D614A145A700AA698B;
+                       remoteInfo = su;
+               };
+               FCBA168814A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15DE14A145A900AA698B;
+                       remoteInfo = tee;
+               };
+               FCBA168A14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15E614A145AE00AA698B;
+                       remoteInfo = test;
+               };
+               FCBA168C14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15EE14A145B000AA698B;
+                       remoteInfo = time;
+               };
+               FCBA168E14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15F614A145B200AA698B;
+                       remoteInfo = true;
+               };
+               FCBA169014A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15FE14A145B500AA698B;
+                       remoteInfo = uname;
+               };
+               FCBA169214A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA160614A145B800AA698B;
+                       remoteInfo = users;
+               };
+               FCBA169414A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA160E14A145BA00AA698B;
+                       remoteInfo = w;
+               };
+               FCBA169614A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA161614A145BC00AA698B;
+                       remoteInfo = whereis;
+               };
+               FCBA169814A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA161E14A145C000AA698B;
+                       remoteInfo = which;
+               };
+               FCBA169A14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA162614A145C500AA698B;
+                       remoteInfo = who;
+               };
+               FCBA169C14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA162E14A145C700AA698B;
+                       remoteInfo = xargs;
+               };
+               FCBA169E14A146D000AA698B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA163614A145CA00AA698B;
+                       remoteInfo = yes;
+               };
+               FCE30EE214B539BF00CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCE30EC214B5368A00CC0294;
+                       remoteInfo = locate.bigram;
+               };
+               FCE30EE414B539BF00CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCE30ED614B536C900CC0294;
+                       remoteInfo = locate.code;
+               };
+               FCE30F4E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA149814A141FF00AA698B;
+                       remoteInfo = apply;
+               };
+               FCE30F5014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14AE14A1422D00AA698B;
+                       remoteInfo = basename;
+               };
+               FCE30F5214B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14B714A1423E00AA698B;
+                       remoteInfo = chroot;
+               };
+               FCE30F5414B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14BF14A1426800AA698B;
+                       remoteInfo = date;
+               };
+               FCE30F5614B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14C714A1428000AA698B;
+                       remoteInfo = dirname;
+               };
+               FCE30F5814B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14CF14A1433F00AA698B;
+                       remoteInfo = echo;
+               };
+               FCE30F5A14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA14D714A1434A00AA698B;
+                       remoteInfo = env;
+               };
+               FCE30F5C14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA150E14A1453A00AA698B;
+                       remoteInfo = expr;
+               };
+               FCE30F5E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA151614A1454D00AA698B;
+                       remoteInfo = false;
+               };
+               FCE30F6014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA151E14A1455600AA698B;
+                       remoteInfo = find;
+               };
+               FCE30F6214B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA152614A1455900AA698B;
+                       remoteInfo = getopt;
+               };
+               FCE30F6414B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA152E14A1455C00AA698B;
+                       remoteInfo = hostname;
+               };
+               FCE30F6614B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA153614A1455F00AA698B;
+                       remoteInfo = id;
+               };
+               FCE30F6814B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA153E14A1456100AA698B;
+                       remoteInfo = jot;
+               };
+               FCE30F6A14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA154614A1456400AA698B;
+                       remoteInfo = kill;
+               };
+               FCE30F6C14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA154E14A1456700AA698B;
+                       remoteInfo = killall;
+               };
+               FCE30F6E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA155614A1456A00AA698B;
+                       remoteInfo = lastcomm;
+               };
+               FCE30F7014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA156614A1457100AA698B;
+                       remoteInfo = logname;
+               };
+               FCE30F7214B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA157614A1457B00AA698B;
+                       remoteInfo = mktemp;
+               };
+               FCE30F7414B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA157E14A1457F00AA698B;
+                       remoteInfo = nice;
+               };
+               FCE30F7614B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA158614A1458500AA698B;
+                       remoteInfo = nohup;
+               };
+               FCE30F7814B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA158E14A1458800AA698B;
+                       remoteInfo = path_helper;
+               };
+               FCE30F7A14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA159614A1458C00AA698B;
+                       remoteInfo = printenv;
+               };
+               FCE30F7C14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA159E14A1459000AA698B;
+                       remoteInfo = printf;
+               };
+               FCE30F7E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15A614A1459500AA698B;
+                       remoteInfo = pwd;
+               };
+               FCE30F8014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15AE14A1459700AA698B;
+                       remoteInfo = renice;
+               };
+               FCE30F8214B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15B614A1459900AA698B;
+                       remoteInfo = script;
+               };
+               FCE30F8414B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15BE14A1459E00AA698B;
+                       remoteInfo = seq;
+               };
+               FCE30F8614B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15C614A145A200AA698B;
+                       remoteInfo = shlock;
+               };
+               FCE30F8814B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15CE14A145A500AA698B;
+                       remoteInfo = sleep;
+               };
+               FCE30F8A14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15DE14A145A900AA698B;
+                       remoteInfo = tee;
+               };
+               FCE30F8C14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15E614A145AE00AA698B;
+                       remoteInfo = test;
+               };
+               FCE30F8E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15EE14A145B000AA698B;
+                       remoteInfo = time;
+               };
+               FCE30F9014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15F614A145B200AA698B;
+                       remoteInfo = true;
+               };
+               FCE30F9214B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA15FE14A145B500AA698B;
+                       remoteInfo = uname;
+               };
+               FCE30F9414B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA160614A145B800AA698B;
+                       remoteInfo = users;
+               };
+               FCE30F9614B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA160E14A145BA00AA698B;
+                       remoteInfo = w;
+               };
+               FCE30F9814B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA161614A145BC00AA698B;
+                       remoteInfo = whereis;
+               };
+               FCE30F9A14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA161E14A145C000AA698B;
+                       remoteInfo = which;
+               };
+               FCE30F9C14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA162614A145C500AA698B;
+                       remoteInfo = who;
+               };
+               FCE30F9E14B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA162E14A145C700AA698B;
+                       remoteInfo = xargs;
+               };
+               FCE30FA014B619E600CC0294 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = FCBA163614A145CA00AA698B;
+                       remoteInfo = yes;
+               };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+               FC5D638614B9819E00123E48 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC5D638E14B981D800123E48 /* what.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FC5D639314B9822D00123E48 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC5D639914B9825B00123E48 /* hexdump.1 in CopyFiles */,
+                               FC5D639A14B9825B00123E48 /* od.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA149B14A141FF00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14ED14A1444E00AA698B /* apply.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14B114A1422D00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14EF14A1446B00AA698B /* basename.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14BA14A1423E00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14F214A1448F00AA698B /* chroot.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14C214A1426800AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14F314A1449A00AA698B /* date.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14CA14A1428000AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14F814A144CB00AA698B /* dirname.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14D214A1433F00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14F914A144D000AA698B /* echo.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA14DA14A1434A00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA14FB14A144E300AA698B /* env.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA151114A1453A00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA030014B5071A0030BEB3 /* expr.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA151914A1454D00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA030214B5072C0030BEB3 /* false.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA152114A1455600AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA030B14B507450030BEB3 /* find.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA152914A1455900AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA030D14B507580030BEB3 /* getopt.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA153114A1455C00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA030F14B507700030BEB3 /* hostname.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA153914A1455F00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA031214B507870030BEB3 /* groups.1 in CopyFiles */,
+                               FCBA031314B507870030BEB3 /* id.1 in CopyFiles */,
+                               FCBA031414B507870030BEB3 /* whoami.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA154114A1456100AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA031614B507950030BEB3 /* jot.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA154914A1456400AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA031814B507A50030BEB3 /* kill.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA155114A1456700AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA031A14B507B60030BEB3 /* killall.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA155914A1456A00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA031C14B507C40030BEB3 /* lastcomm.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA156114A1456E00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA032014B507E50030BEB3 /* locate.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA156914A1457100AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02FE14B506FF0030BEB3 /* logname.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA157914A1457B00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02FA14B506DA0030BEB3 /* mktemp.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA158114A1457F00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02F714B506B10030BEB3 /* nice.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA158914A1458500AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02F614B5069C0030BEB3 /* nohup.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA159114A1458800AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02F414B5068C0030BEB3 /* path_helper.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA159914A1458C00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02F214B5067C0030BEB3 /* printenv.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15A114A1459000AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02EF14B5065D0030BEB3 /* printf.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15A914A1459500AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30EA814B5105200CC0294 /* pwd.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15B114A1459700AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02EB14B5063E0030BEB3 /* renice.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15B914A1459900AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02E914B5062E0030BEB3 /* script.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15C114A1459E00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA02E714B5061B0030BEB3 /* seq.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15C914A145A200AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0C14B3CD5B00ECF511 /* shlock.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15D114A145A500AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0914B3CD3E00ECF511 /* sleep.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15D914A145A700AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0814B3CD3500ECF511 /* su.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15E114A145A900AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0514B3CD1D00ECF511 /* tee.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15E914A145AE00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0314B3CD1400ECF511 /* [.1 in CopyFiles */,
+                               FC2B5C0414B3CD1400ECF511 /* test.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15F114A145B000AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5C0114B3CD0300ECF511 /* time.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA15F914A145B200AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5BFF14B3CCEF00ECF511 /* true.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA160114A145B500AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FC2B5BFD14B3CCD200ECF511 /* uname.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA160914A145B800AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA165114A146C100AA698B /* users.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA161114A145BA00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA164F14A146A700AA698B /* w.1 in CopyFiles */,
+                               FCBA164E14A146A500AA698B /* uptime.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA161914A145BC00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA164914A1469300AA698B /* whereis.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA162114A145C000AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA164714A1468900AA698B /* which.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA162914A145C500AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA164514A1468000AA698B /* who.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA163114A145C700AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA164214A1467500AA698B /* xargs.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCBA163914A145CA00AA698B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCBA163E14A1466500AA698B /* yes.1 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCE30EB914B532C700CC0294 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = /System/Library/LaunchDaemons/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30EBA14B532D900CC0294 /* com.apple.locate.plist in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCE30EBC14B5339000CC0294 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = /private/etc/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30EBD14B533A200CC0294 /* locate.rc in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCE30EBE14B533B500CC0294 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 8;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30EBF14B533E200CC0294 /* locate.updatedb.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCE30EC714B5368A00CC0294 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30ED514B536B200CC0294 /* locate.bigram.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               FCE30EDA14B536C900CC0294 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man8/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                               FCE30EE114B536F800CC0294 /* locate.code.8 in CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+               FC5D636814B9808E00123E48 /* conv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = conv.c; sourceTree = "<group>"; };
+               FC5D636914B9808E00123E48 /* display.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = display.c; sourceTree = "<group>"; };
+               FC5D636A14B9808E00123E48 /* hexdump.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hexdump.1; sourceTree = "<group>"; };
+               FC5D636B14B9808E00123E48 /* hexdump.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hexdump.c; sourceTree = "<group>"; };
+               FC5D636C14B9808E00123E48 /* hexdump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hexdump.h; sourceTree = "<group>"; };
+               FC5D636D14B9808E00123E48 /* hexsyntax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hexsyntax.c; sourceTree = "<group>"; };
+               FC5D636E14B9808E00123E48 /* od.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = od.1; sourceTree = "<group>"; };
+               FC5D636F14B9808E00123E48 /* odsyntax.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = odsyntax.c; sourceTree = "<group>"; };
+               FC5D637014B9808E00123E48 /* parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; };
+               FC5D637214B9808E00123E48 /* what.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = what.1; sourceTree = "<group>"; };
+               FC5D637314B9808E00123E48 /* what.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = what.c; sourceTree = "<group>"; };
+               FC5D638B14B9819E00123E48 /* what */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = what; sourceTree = BUILT_PRODUCTS_DIR; };
+               FC5D639714B9822D00123E48 /* hexdump */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = hexdump; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA02E514B505A50030BEB3 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
+               FCBA134114A141A300AA698B /* alias.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = alias.1; sourceTree = "<group>"; };
+               FCBA134314A141A300AA698B /* generic.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = generic.sh; sourceTree = "<group>"; };
+               FCBA134614A141A300AA698B /* apply.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = apply.1; sourceTree = "<group>"; };
+               FCBA134714A141A300AA698B /* apply.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = apply.c; sourceTree = "<group>"; };
+               FCBA134A14A141A300AA698B /* basename.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = basename.1; sourceTree = "<group>"; };
+               FCBA134B14A141A300AA698B /* basename.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = basename.c; sourceTree = "<group>"; };
+               FCBA134C14A141A300AA698B /* dirname.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; name = dirname.1; path = ../basename/dirname.1; sourceTree = "<group>"; };
+               FCBA134F14A141A300AA698B /* chroot.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = chroot.8; sourceTree = "<group>"; };
+               FCBA135014A141A300AA698B /* chroot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chroot.c; sourceTree = "<group>"; };
+               FCBA135314A141A300AA698B /* date.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = date.1; sourceTree = "<group>"; };
+               FCBA135414A141A300AA698B /* date.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = date.c; sourceTree = "<group>"; };
+               FCBA135514A141A300AA698B /* extern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern.h; sourceTree = "<group>"; };
+               FCBA135714A141A300AA698B /* netdate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = netdate.c; sourceTree = "<group>"; };
+               FCBA135814A141A300AA698B /* vary.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vary.c; sourceTree = "<group>"; };
+               FCBA135914A141A300AA698B /* vary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vary.h; sourceTree = "<group>"; };
+               FCBA135B14A141A300AA698B /* dirname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dirname.c; sourceTree = "<group>"; };
+               FCBA135E14A141A300AA698B /* echo.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = echo.1; sourceTree = "<group>"; };
+               FCBA135F14A141A300AA698B /* echo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = echo.c; sourceTree = "<group>"; };
+               FCBA136214A141A300AA698B /* env.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = env.1; sourceTree = "<group>"; };
+               FCBA136314A141A300AA698B /* env.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = env.c; sourceTree = "<group>"; };
+               FCBA136614A141A300AA698B /* expr.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = expr.1; sourceTree = "<group>"; };
+               FCBA136714A141A300AA698B /* expr.y */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.yacc; path = expr.y; sourceTree = "<group>"; };
+               FCBA136A14A141A300AA698B /* false.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = false.1; sourceTree = "<group>"; };
+               FCBA136B14A141A300AA698B /* false.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = false.c; sourceTree = "<group>"; };
+               FCBA136F14A141A300AA698B /* extern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern.h; sourceTree = "<group>"; };
+               FCBA137014A141A300AA698B /* find.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = find.1; sourceTree = "<group>"; };
+               FCBA137114A141A300AA698B /* find.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = find.c; sourceTree = "<group>"; };
+               FCBA137214A141A300AA698B /* find.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = find.h; sourceTree = "<group>"; };
+               FCBA137314A141A300AA698B /* function.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = function.c; sourceTree = "<group>"; };
+               FCBA137414A141A300AA698B /* getdate.y */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.yacc; path = getdate.y; sourceTree = "<group>"; };
+               FCBA137514A141A300AA698B /* ls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ls.c; sourceTree = "<group>"; };
+               FCBA137614A141A300AA698B /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+               FCBA137814A141A300AA698B /* misc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = "<group>"; };
+               FCBA137914A141A300AA698B /* operator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = operator.c; sourceTree = "<group>"; };
+               FCBA137A14A141A300AA698B /* option.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = option.c; sourceTree = "<group>"; };
+               FCBA137C14A141A300AA698B /* getopt.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = getopt.1; sourceTree = "<group>"; };
+               FCBA137D14A141A300AA698B /* getopt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = getopt.c; sourceTree = "<group>"; };
+               FCBA138014A141A300AA698B /* hostname.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = hostname.1; sourceTree = "<group>"; };
+               FCBA138114A141A300AA698B /* hostname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hostname.c; sourceTree = "<group>"; };
+               FCBA138414A141A300AA698B /* groups.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = groups.1; sourceTree = "<group>"; };
+               FCBA138514A141A300AA698B /* id.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = id.1; sourceTree = "<group>"; };
+               FCBA138614A141A300AA698B /* id.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = id.c; sourceTree = "<group>"; };
+               FCBA138A14A141A300AA698B /* whoami.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = whoami.1; sourceTree = "<group>"; };
+               FCBA138C14A141A300AA698B /* jot.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = jot.1; sourceTree = "<group>"; };
+               FCBA138D14A141A300AA698B /* jot.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = jot.c; sourceTree = "<group>"; };
+               FCBA139014A141A300AA698B /* kill.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = kill.1; sourceTree = "<group>"; };
+               FCBA139114A141A300AA698B /* kill.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = kill.c; sourceTree = "<group>"; };
+               FCBA139414A141A300AA698B /* killall.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = killall.1; sourceTree = "<group>"; };
+               FCBA139514A141A300AA698B /* killall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = killall.c; sourceTree = "<group>"; };
+               FCBA139814A141A300AA698B /* lastcomm.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = lastcomm.1; sourceTree = "<group>"; };
+               FCBA139914A141A300AA698B /* lastcomm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lastcomm.c; sourceTree = "<group>"; };
+               FCBA139B14A141A300AA698B /* pathnames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pathnames.h; sourceTree = "<group>"; };
+               FCBA139E14A141A300AA698B /* locate.bigram.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = locate.bigram.c; sourceTree = "<group>"; };
+               FCBA13A114A141A300AA698B /* locate.code.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = locate.code.c; sourceTree = "<group>"; };
+               FCBA13A414A141A300AA698B /* com.apple.locate.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = com.apple.locate.plist; sourceTree = "<group>"; };
+               FCBA13A514A141A300AA698B /* concatdb.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = concatdb.sh; sourceTree = "<group>"; };
+               FCBA13A714A141A300AA698B /* locate.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = locate.1; sourceTree = "<group>"; };
+               FCBA13A814A141A300AA698B /* locate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = locate.c; sourceTree = "<group>"; };
+               FCBA13A914A141A300AA698B /* locate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = locate.h; sourceTree = "<group>"; };
+               FCBA13AA14A141A300AA698B /* locate.rc */ = {isa = PBXFileReference; lastKnownFileType = text; path = locate.rc; sourceTree = "<group>"; };
+               FCBA13AB14A141A300AA698B /* locate.updatedb.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = locate.updatedb.8; sourceTree = "<group>"; };
+               FCBA13AC14A141A300AA698B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
+               FCBA13AD14A141A300AA698B /* mklocatedb.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = mklocatedb.sh; sourceTree = "<group>"; };
+               FCBA13AE14A141A300AA698B /* pathnames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pathnames.h; sourceTree = "<group>"; };
+               FCBA13AF14A141A300AA698B /* updatedb.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = updatedb.sh; sourceTree = "<group>"; };
+               FCBA13B014A141A300AA698B /* util.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = util.c; sourceTree = "<group>"; };
+               FCBA13B114A141A300AA698B /* locate.code.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = locate.code.8; sourceTree = "<group>"; };
+               FCBA13B214A141A300AA698B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
+               FCBA13B414A141A300AA698B /* logname.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = logname.1; sourceTree = "<group>"; };
+               FCBA13B514A141A300AA698B /* logname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = logname.c; sourceTree = "<group>"; };
+               FCBA13C014A141A300AA698B /* mktemp.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = mktemp.1; sourceTree = "<group>"; };
+               FCBA13C114A141A300AA698B /* mktemp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mktemp.c; sourceTree = "<group>"; };
+               FCBA13C414A141A300AA698B /* nice.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = nice.1; sourceTree = "<group>"; };
+               FCBA13C514A141A300AA698B /* nice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nice.c; sourceTree = "<group>"; };
+               FCBA13C814A141A300AA698B /* nohup.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = nohup.1; sourceTree = "<group>"; };
+               FCBA13C914A141A300AA698B /* nohup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = nohup.c; sourceTree = "<group>"; };
+               FCBA13CC14A141A300AA698B /* path_helper.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = path_helper.8; sourceTree = "<group>"; };
+               FCBA13CD14A141A300AA698B /* path_helper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = path_helper.c; sourceTree = "<group>"; };
+               FCBA13D014A141A300AA698B /* printenv.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = printenv.1; sourceTree = "<group>"; };
+               FCBA13D114A141A300AA698B /* printenv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printenv.c; sourceTree = "<group>"; };
+               FCBA13D414A141A300AA698B /* printf.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = printf.1; sourceTree = "<group>"; };
+               FCBA13D514A141A300AA698B /* printf.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = "<group>"; };
+               FCBA13D814A141A300AA698B /* pwd.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = pwd.1; sourceTree = "<group>"; };
+               FCBA13D914A141A300AA698B /* pwd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pwd.c; sourceTree = "<group>"; };
+               FCBA13DC14A141A300AA698B /* renice.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = renice.8; sourceTree = "<group>"; };
+               FCBA13DD14A141A300AA698B /* renice.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = renice.c; sourceTree = "<group>"; };
+               FCBA13E014A141A300AA698B /* script.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = script.1; sourceTree = "<group>"; };
+               FCBA13E114A141A300AA698B /* script.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = script.c; sourceTree = "<group>"; };
+               FCBA13E414A141A300AA698B /* seq.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = seq.1; sourceTree = "<group>"; };
+               FCBA13E514A141A300AA698B /* seq.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = seq.c; sourceTree = "<group>"; };
+               FCBA13E814A141A300AA698B /* shlock.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = shlock.1; sourceTree = "<group>"; };
+               FCBA13E914A141A300AA698B /* shlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = shlock.c; sourceTree = "<group>"; };
+               FCBA13EC14A141A300AA698B /* sleep.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = sleep.1; sourceTree = "<group>"; };
+               FCBA13ED14A141A300AA698B /* sleep.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sleep.c; sourceTree = "<group>"; };
+               FCBA13EF14A141A300AA698B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
+               FCBA13F014A141A300AA698B /* su.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = su.1; sourceTree = "<group>"; };
+               FCBA13F114A141A300AA698B /* su.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = su.c; sourceTree = "<group>"; };
+               FCBA13F214A141A300AA698B /* su.pam */ = {isa = PBXFileReference; lastKnownFileType = text; path = su.pam; sourceTree = "<group>"; };
+               FCBA13F514A141A300AA698B /* tee.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = tee.1; sourceTree = "<group>"; };
+               FCBA13F614A141A300AA698B /* tee.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tee.c; sourceTree = "<group>"; };
+               FCBA13F814A141A300AA698B /* [.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = "[.1"; sourceTree = "<group>"; };
+               FCBA13FA14A141A300AA698B /* test.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = test.1; sourceTree = "<group>"; };
+               FCBA13FB14A141A300AA698B /* test.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = "<group>"; };
+               FCBA13FC14A141A300AA698B /* TEST.csh */ = {isa = PBXFileReference; lastKnownFileType = text.script.csh; path = TEST.csh; sourceTree = "<group>"; };
+               FCBA13FF14A141A300AA698B /* time.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = time.1; sourceTree = "<group>"; };
+               FCBA140014A141A300AA698B /* time.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = time.c; sourceTree = "<group>"; };
+               FCBA140314A141A300AA698B /* true.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = true.1; sourceTree = "<group>"; };
+               FCBA140414A141A300AA698B /* true.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = true.c; sourceTree = "<group>"; };
+               FCBA140814A141A300AA698B /* uname.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = uname.1; sourceTree = "<group>"; };
+               FCBA140914A141A300AA698B /* uname.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = uname.c; sourceTree = "<group>"; };
+               FCBA140C14A141A300AA698B /* users.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = users.1; sourceTree = "<group>"; };
+               FCBA140D14A141A300AA698B /* users.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = users.c; sourceTree = "<group>"; };
+               FCBA140F14A141A300AA698B /* extern.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = extern.h; sourceTree = "<group>"; };
+               FCBA141014A141A300AA698B /* fmt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fmt.c; sourceTree = "<group>"; };
+               FCBA141114A141A300AA698B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
+               FCBA141214A141A300AA698B /* pr_time.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pr_time.c; sourceTree = "<group>"; };
+               FCBA141314A141A300AA698B /* proc_compare.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = proc_compare.c; sourceTree = "<group>"; };
+               FCBA141414A141A300AA698B /* uptime.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = uptime.1; sourceTree = "<group>"; };
+               FCBA141514A141A300AA698B /* w.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = w.1; sourceTree = "<group>"; };
+               FCBA141614A141A300AA698B /* w.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = w.c; sourceTree = "<group>"; };
+               FCBA141914A141A300AA698B /* whereis.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = whereis.1; sourceTree = "<group>"; };
+               FCBA141A14A141A300AA698B /* whereis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = whereis.c; sourceTree = "<group>"; };
+               FCBA141D14A141A300AA698B /* which.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = which.1; sourceTree = "<group>"; };
+               FCBA141E14A141A300AA698B /* which.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = which.c; sourceTree = "<group>"; };
+               FCBA142114A141A300AA698B /* utmpentry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utmpentry.c; sourceTree = "<group>"; };
+               FCBA142214A141A300AA698B /* utmpentry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utmpentry.h; sourceTree = "<group>"; };
+               FCBA142314A141A300AA698B /* who.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = who.1; sourceTree = "<group>"; };
+               FCBA142414A141A300AA698B /* who.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = who.c; sourceTree = "<group>"; };
+               FCBA142714A141A300AA698B /* pathnames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pathnames.h; sourceTree = "<group>"; };
+               FCBA142814A141A300AA698B /* strnsubst.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = strnsubst.c; sourceTree = "<group>"; };
+               FCBA142914A141A300AA698B /* xargs.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = xargs.1; sourceTree = "<group>"; };
+               FCBA142A14A141A300AA698B /* xargs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = xargs.c; sourceTree = "<group>"; };
+               FCBA142D14A141A300AA698B /* yes.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = yes.1; sourceTree = "<group>"; };
+               FCBA142E14A141A300AA698B /* yes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = yes.c; sourceTree = "<group>"; };
+               FCBA149E14A141FF00AA698B /* alias copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "alias copy"; path = apply; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14B414A1422D00AA698B /* basename */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = basename; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14BD14A1423E00AA698B /* chroot */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = chroot; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14C514A1426800AA698B /* date */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = date; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14CD14A1428000AA698B /* dirname */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dirname; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14D514A1433F00AA698B /* echo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = echo; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA14DD14A1434A00AA698B /* env */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = env; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA151414A1453A00AA698B /* expr */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = expr; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA151C14A1454D00AA698B /* expr copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "expr copy"; path = false; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA152414A1455600AA698B /* find */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = find; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA152C14A1455900AA698B /* getopt */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = getopt; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA153414A1455C00AA698B /* hostname */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = hostname; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA153C14A1455F00AA698B /* id */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = id; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA154414A1456100AA698B /* jot */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jot; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA154C14A1456400AA698B /* kill */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = kill; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA155414A1456700AA698B /* killall */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = killall; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA155C14A1456A00AA698B /* lastcomm */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lastcomm; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA156414A1456E00AA698B /* locate */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = locate; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA156C14A1457100AA698B /* logname */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = logname; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA157C14A1457B00AA698B /* mktemp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mktemp; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA158414A1457F00AA698B /* nice */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = nice; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA158C14A1458500AA698B /* nohup */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = nohup; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA159414A1458800AA698B /* path_helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = path_helper; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA159C14A1458C00AA698B /* printenv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = printenv; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15A414A1459000AA698B /* printf */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = printf; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15AC14A1459500AA698B /* pwd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pwd; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15B414A1459700AA698B /* renice */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = renice; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15BC14A1459900AA698B /* script */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = script; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15C414A1459E00AA698B /* seq */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = seq; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15CC14A145A200AA698B /* shlock */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = shlock; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15D414A145A500AA698B /* sleep */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sleep; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15DC14A145A700AA698B /* su */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = su; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15E414A145A900AA698B /* tee */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tee; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15EC14A145AE00AA698B /* test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15F414A145B000AA698B /* time */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = time; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA15FC14A145B200AA698B /* true */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = true; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA160414A145B500AA698B /* uname */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = uname; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA160C14A145B800AA698B /* users */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = users; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA161414A145BA00AA698B /* w */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = w; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA161C14A145BC00AA698B /* whereis */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = whereis; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA162414A145C000AA698B /* which */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = which; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA162C14A145C500AA698B /* who */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = who; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA163414A145C700AA698B /* xargs */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xargs; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCBA163C14A145CA00AA698B /* yes */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = yes; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCE30EC114B5347A00CC0294 /* locate.bigram.8 */ = {isa = PBXFileReference; lastKnownFileType = text; path = locate.bigram.8; sourceTree = "<group>"; };
+               FCE30ED214B5368A00CC0294 /* locate.bigram */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = locate.bigram; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCE30EDE14B536C900CC0294 /* locate.code */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = locate.code; sourceTree = BUILT_PRODUCTS_DIR; };
+               FCED3AF514B4FC1800C313C3 /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = /usr/lib/libpam.dylib; sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+               FC5D638514B9819E00123E48 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FC5D639214B9822D00123E48 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA149A14A141FF00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14B014A1422D00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14B914A1423E00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14C114A1426800AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14C914A1428000AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14D114A1433F00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14D914A1434A00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA151014A1453A00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA151814A1454D00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA152014A1455600AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA152814A1455900AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA153014A1455C00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA153814A1455F00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA154014A1456100AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA154814A1456400AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA155014A1456700AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA155814A1456A00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA156014A1456E00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA156814A1457100AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA157814A1457B00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA158014A1457F00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA158814A1458500AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA159014A1458800AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA159814A1458C00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15A014A1459000AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15A814A1459500AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15B014A1459700AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15B814A1459900AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15C014A1459E00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15C814A145A200AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15D014A145A500AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15D814A145A700AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCED3AF614B4FC1800C313C3 /* libpam.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15E014A145A900AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15E814A145AE00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15F014A145B000AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15F814A145B200AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA160014A145B500AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA160814A145B800AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA161014A145BA00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA161814A145BC00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA162014A145C000AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA162814A145C500AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA163014A145C700AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA163814A145CA00AA698B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCE30EC614B5368A00CC0294 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCE30ED914B536C900CC0294 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+               FC5D636714B9808E00123E48 /* hexdump */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FC5D636814B9808E00123E48 /* conv.c */,
+                               FC5D636914B9808E00123E48 /* display.c */,
+                               FC5D636A14B9808E00123E48 /* hexdump.1 */,
+                               FC5D636B14B9808E00123E48 /* hexdump.c */,
+                               FC5D636C14B9808E00123E48 /* hexdump.h */,
+                               FC5D636D14B9808E00123E48 /* hexsyntax.c */,
+                               FC5D636E14B9808E00123E48 /* od.1 */,
+                               FC5D636F14B9808E00123E48 /* odsyntax.c */,
+                               FC5D637014B9808E00123E48 /* parse.c */,
+                       );
+                       path = hexdump;
+                       sourceTree = "<group>";
+               };
+               FC5D637114B9808E00123E48 /* what */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FC5D637214B9808E00123E48 /* what.1 */,
+                               FC5D637314B9808E00123E48 /* what.c */,
+                       );
+                       path = what;
+                       sourceTree = "<group>";
+               };
+               FC80BF5514A05A2F00C6F7F5 = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA134014A141A300AA698B /* alias */,
+                               FCBA134514A141A300AA698B /* apply */,
+                               FCBA134914A141A300AA698B /* basename */,
+                               FCBA134E14A141A300AA698B /* chroot */,
+                               FCBA135214A141A300AA698B /* date */,
+                               FCBA135A14A141A300AA698B /* dirname */,
+                               FCBA135D14A141A300AA698B /* echo */,
+                               FCBA136114A141A300AA698B /* env */,
+                               FCBA136514A141A300AA698B /* expr */,
+                               FCBA136914A141A300AA698B /* false */,
+                               FCBA136E14A141A300AA698B /* find */,
+                               FCBA137B14A141A300AA698B /* getopt */,
+                               FC5D636714B9808E00123E48 /* hexdump */,
+                               FCBA137F14A141A300AA698B /* hostname */,
+                               FCBA138314A141A300AA698B /* id */,
+                               FCBA138B14A141A300AA698B /* jot */,
+                               FCBA138F14A141A300AA698B /* kill */,
+                               FCBA139314A141A300AA698B /* killall */,
+                               FCBA139714A141A300AA698B /* lastcomm */,
+                               FCBA139C14A141A300AA698B /* locate */,
+                               FCBA13B314A141A300AA698B /* logname */,
+                               FCBA13BE14A141A300AA698B /* mktemp */,
+                               FCBA13C214A141A300AA698B /* nice */,
+                               FCBA13C614A141A300AA698B /* nohup */,
+                               FCBA13CA14A141A300AA698B /* path_helper */,
+                               FCBA13CE14A141A300AA698B /* printenv */,
+                               FCBA13D214A141A300AA698B /* printf */,
+                               FCBA13D614A141A300AA698B /* pwd */,
+                               FCBA13DA14A141A300AA698B /* renice */,
+                               FCBA13DE14A141A300AA698B /* script */,
+                               FCBA13E214A141A300AA698B /* seq */,
+                               FCBA13E614A141A300AA698B /* shlock */,
+                               FCBA13EA14A141A300AA698B /* sleep */,
+                               FCBA13EE14A141A300AA698B /* su */,
+                               FCBA13F314A141A300AA698B /* tee */,
+                               FCBA13F714A141A300AA698B /* test */,
+                               FCBA13FD14A141A300AA698B /* time */,
+                               FCBA140114A141A300AA698B /* true */,
+                               FCBA140614A141A300AA698B /* uname */,
+                               FCBA140A14A141A300AA698B /* users */,
+                               FCBA140E14A141A300AA698B /* w */,
+                               FC5D637114B9808E00123E48 /* what */,
+                               FCBA141714A141A300AA698B /* whereis */,
+                               FCBA141B14A141A300AA698B /* which */,
+                               FCBA141F14A141A300AA698B /* who */,
+                               FCBA142514A141A300AA698B /* xargs */,
+                               FCBA142B14A141A300AA698B /* yes */,
+                               FC80BF6114A05A2F00C6F7F5 /* Products */,
+                       );
+                       sourceTree = "<group>";
+               };
+               FC80BF6114A05A2F00C6F7F5 /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA149E14A141FF00AA698B /* alias copy */,
+                               FCBA14B414A1422D00AA698B /* basename */,
+                               FCBA14BD14A1423E00AA698B /* chroot */,
+                               FCBA14C514A1426800AA698B /* date */,
+                               FCBA14CD14A1428000AA698B /* dirname */,
+                               FCBA14D514A1433F00AA698B /* echo */,
+                               FCBA14DD14A1434A00AA698B /* env */,
+                               FCBA151414A1453A00AA698B /* expr */,
+                               FCBA151C14A1454D00AA698B /* expr copy */,
+                               FCBA152414A1455600AA698B /* find */,
+                               FCBA152C14A1455900AA698B /* getopt */,
+                               FCBA153414A1455C00AA698B /* hostname */,
+                               FCBA153C14A1455F00AA698B /* id */,
+                               FCBA154414A1456100AA698B /* jot */,
+                               FCBA154C14A1456400AA698B /* kill */,
+                               FCBA155414A1456700AA698B /* killall */,
+                               FCBA155C14A1456A00AA698B /* lastcomm */,
+                               FCBA156414A1456E00AA698B /* locate */,
+                               FCBA156C14A1457100AA698B /* logname */,
+                               FCBA157C14A1457B00AA698B /* mktemp */,
+                               FCBA158414A1457F00AA698B /* nice */,
+                               FCBA158C14A1458500AA698B /* nohup */,
+                               FCBA159414A1458800AA698B /* path_helper */,
+                               FCBA159C14A1458C00AA698B /* printenv */,
+                               FCBA15A414A1459000AA698B /* printf */,
+                               FCBA15AC14A1459500AA698B /* pwd */,
+                               FCBA15B414A1459700AA698B /* renice */,
+                               FCBA15BC14A1459900AA698B /* script */,
+                               FCBA15C414A1459E00AA698B /* seq */,
+                               FCBA15CC14A145A200AA698B /* shlock */,
+                               FCBA15D414A145A500AA698B /* sleep */,
+                               FCBA15DC14A145A700AA698B /* su */,
+                               FCBA15E414A145A900AA698B /* tee */,
+                               FCBA15EC14A145AE00AA698B /* test */,
+                               FCBA15F414A145B000AA698B /* time */,
+                               FCBA15FC14A145B200AA698B /* true */,
+                               FCBA160414A145B500AA698B /* uname */,
+                               FCBA160C14A145B800AA698B /* users */,
+                               FCBA161414A145BA00AA698B /* w */,
+                               FCBA161C14A145BC00AA698B /* whereis */,
+                               FCBA162414A145C000AA698B /* which */,
+                               FCBA162C14A145C500AA698B /* who */,
+                               FCBA163414A145C700AA698B /* xargs */,
+                               FCBA163C14A145CA00AA698B /* yes */,
+                               FCE30ED214B5368A00CC0294 /* locate.bigram */,
+                               FCE30EDE14B536C900CC0294 /* locate.code */,
+                               FC5D638B14B9819E00123E48 /* what */,
+                               FC5D639714B9822D00123E48 /* hexdump */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+               FCBA134014A141A300AA698B /* alias */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA134114A141A300AA698B /* alias.1 */,
+                               FCBA134314A141A300AA698B /* generic.sh */,
+                       );
+                       path = alias;
+                       sourceTree = "<group>";
+               };
+               FCBA134514A141A300AA698B /* apply */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA134614A141A300AA698B /* apply.1 */,
+                               FCBA134714A141A300AA698B /* apply.c */,
+                       );
+                       path = apply;
+                       sourceTree = "<group>";
+               };
+               FCBA134914A141A300AA698B /* basename */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA134A14A141A300AA698B /* basename.1 */,
+                               FCBA134B14A141A300AA698B /* basename.c */,
+                       );
+                       path = basename;
+                       sourceTree = "<group>";
+               };
+               FCBA134E14A141A300AA698B /* chroot */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA134F14A141A300AA698B /* chroot.8 */,
+                               FCBA135014A141A300AA698B /* chroot.c */,
+                       );
+                       path = chroot;
+                       sourceTree = "<group>";
+               };
+               FCBA135214A141A300AA698B /* date */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA135314A141A300AA698B /* date.1 */,
+                               FCBA135414A141A300AA698B /* date.c */,
+                               FCBA135514A141A300AA698B /* extern.h */,
+                               FCBA135714A141A300AA698B /* netdate.c */,
+                               FCBA135814A141A300AA698B /* vary.c */,
+                               FCBA135914A141A300AA698B /* vary.h */,
+                       );
+                       path = date;
+                       sourceTree = "<group>";
+               };
+               FCBA135A14A141A300AA698B /* dirname */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA135B14A141A300AA698B /* dirname.c */,
+                               FCBA134C14A141A300AA698B /* dirname.1 */,
+                       );
+                       path = dirname;
+                       sourceTree = "<group>";
+               };
+               FCBA135D14A141A300AA698B /* echo */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA135E14A141A300AA698B /* echo.1 */,
+                               FCBA135F14A141A300AA698B /* echo.c */,
+                       );
+                       path = echo;
+                       sourceTree = "<group>";
+               };
+               FCBA136114A141A300AA698B /* env */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA136214A141A300AA698B /* env.1 */,
+                               FCBA136314A141A300AA698B /* env.c */,
+                       );
+                       path = env;
+                       sourceTree = "<group>";
+               };
+               FCBA136514A141A300AA698B /* expr */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA136614A141A300AA698B /* expr.1 */,
+                               FCBA136714A141A300AA698B /* expr.y */,
+                       );
+                       path = expr;
+                       sourceTree = "<group>";
+               };
+               FCBA136914A141A300AA698B /* false */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA136A14A141A300AA698B /* false.1 */,
+                               FCBA136B14A141A300AA698B /* false.c */,
+                       );
+                       path = false;
+                       sourceTree = "<group>";
+               };
+               FCBA136E14A141A300AA698B /* find */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA136F14A141A300AA698B /* extern.h */,
+                               FCBA137014A141A300AA698B /* find.1 */,
+                               FCBA137114A141A300AA698B /* find.c */,
+                               FCBA137214A141A300AA698B /* find.h */,
+                               FCBA137314A141A300AA698B /* function.c */,
+                               FCBA137414A141A300AA698B /* getdate.y */,
+                               FCBA137514A141A300AA698B /* ls.c */,
+                               FCBA137614A141A300AA698B /* main.c */,
+                               FCBA137814A141A300AA698B /* misc.c */,
+                               FCBA137914A141A300AA698B /* operator.c */,
+                               FCBA137A14A141A300AA698B /* option.c */,
+                       );
+                       path = find;
+                       sourceTree = "<group>";
+               };
+               FCBA137B14A141A300AA698B /* getopt */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA137C14A141A300AA698B /* getopt.1 */,
+                               FCBA137D14A141A300AA698B /* getopt.c */,
+                       );
+                       path = getopt;
+                       sourceTree = "<group>";
+               };
+               FCBA137F14A141A300AA698B /* hostname */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA138014A141A300AA698B /* hostname.1 */,
+                               FCBA138114A141A300AA698B /* hostname.c */,
+                       );
+                       path = hostname;
+                       sourceTree = "<group>";
+               };
+               FCBA138314A141A300AA698B /* id */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA138414A141A300AA698B /* groups.1 */,
+                               FCBA138514A141A300AA698B /* id.1 */,
+                               FCBA138614A141A300AA698B /* id.c */,
+                               FCBA138A14A141A300AA698B /* whoami.1 */,
+                       );
+                       path = id;
+                       sourceTree = "<group>";
+               };
+               FCBA138B14A141A300AA698B /* jot */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA138C14A141A300AA698B /* jot.1 */,
+                               FCBA138D14A141A300AA698B /* jot.c */,
+                       );
+                       path = jot;
+                       sourceTree = "<group>";
+               };
+               FCBA138F14A141A300AA698B /* kill */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA139014A141A300AA698B /* kill.1 */,
+                               FCBA139114A141A300AA698B /* kill.c */,
+                       );
+                       path = kill;
+                       sourceTree = "<group>";
+               };
+               FCBA139314A141A300AA698B /* killall */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA139414A141A300AA698B /* killall.1 */,
+                               FCBA139514A141A300AA698B /* killall.c */,
+                       );
+                       path = killall;
+                       sourceTree = "<group>";
+               };
+               FCBA139714A141A300AA698B /* lastcomm */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA139814A141A300AA698B /* lastcomm.1 */,
+                               FCBA139914A141A300AA698B /* lastcomm.c */,
+                               FCBA139B14A141A300AA698B /* pathnames.h */,
+                       );
+                       path = lastcomm;
+                       sourceTree = "<group>";
+               };
+               FCBA139C14A141A300AA698B /* locate */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA139D14A141A300AA698B /* bigram */,
+                               FCBA13A014A141A300AA698B /* code */,
+                               FCBA13A314A141A300AA698B /* locate */,
+                               FCBA13B214A141A300AA698B /* Makefile */,
+                       );
+                       path = locate;
+                       sourceTree = "<group>";
+               };
+               FCBA139D14A141A300AA698B /* bigram */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCE30EC114B5347A00CC0294 /* locate.bigram.8 */,
+                               FCBA139E14A141A300AA698B /* locate.bigram.c */,
+                       );
+                       path = bigram;
+                       sourceTree = "<group>";
+               };
+               FCBA13A014A141A300AA698B /* code */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13B114A141A300AA698B /* locate.code.8 */,
+                               FCBA13A114A141A300AA698B /* locate.code.c */,
+                       );
+                       path = code;
+                       sourceTree = "<group>";
+               };
+               FCBA13A314A141A300AA698B /* locate */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13A414A141A300AA698B /* com.apple.locate.plist */,
+                               FCBA13A514A141A300AA698B /* concatdb.sh */,
+                               FCBA13A714A141A300AA698B /* locate.1 */,
+                               FCBA13A814A141A300AA698B /* locate.c */,
+                               FCBA13A914A141A300AA698B /* locate.h */,
+                               FCBA13AA14A141A300AA698B /* locate.rc */,
+                               FCBA13AB14A141A300AA698B /* locate.updatedb.8 */,
+                               FCBA13AC14A141A300AA698B /* Makefile */,
+                               FCBA13AD14A141A300AA698B /* mklocatedb.sh */,
+                               FCBA13AE14A141A300AA698B /* pathnames.h */,
+                               FCBA13AF14A141A300AA698B /* updatedb.sh */,
+                               FCBA13B014A141A300AA698B /* util.c */,
+                       );
+                       path = locate;
+                       sourceTree = "<group>";
+               };
+               FCBA13B314A141A300AA698B /* logname */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13B414A141A300AA698B /* logname.1 */,
+                               FCBA13B514A141A300AA698B /* logname.c */,
+                       );
+                       path = logname;
+                       sourceTree = "<group>";
+               };
+               FCBA13BE14A141A300AA698B /* mktemp */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13C014A141A300AA698B /* mktemp.1 */,
+                               FCBA13C114A141A300AA698B /* mktemp.c */,
+                       );
+                       path = mktemp;
+                       sourceTree = "<group>";
+               };
+               FCBA13C214A141A300AA698B /* nice */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13C414A141A300AA698B /* nice.1 */,
+                               FCBA13C514A141A300AA698B /* nice.c */,
+                       );
+                       path = nice;
+                       sourceTree = "<group>";
+               };
+               FCBA13C614A141A300AA698B /* nohup */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13C814A141A300AA698B /* nohup.1 */,
+                               FCBA13C914A141A300AA698B /* nohup.c */,
+                       );
+                       path = nohup;
+                       sourceTree = "<group>";
+               };
+               FCBA13CA14A141A300AA698B /* path_helper */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13CC14A141A300AA698B /* path_helper.8 */,
+                               FCBA13CD14A141A300AA698B /* path_helper.c */,
+                       );
+                       path = path_helper;
+                       sourceTree = "<group>";
+               };
+               FCBA13CE14A141A300AA698B /* printenv */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13D014A141A300AA698B /* printenv.1 */,
+                               FCBA13D114A141A300AA698B /* printenv.c */,
+                       );
+                       path = printenv;
+                       sourceTree = "<group>";
+               };
+               FCBA13D214A141A300AA698B /* printf */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13D414A141A300AA698B /* printf.1 */,
+                               FCBA13D514A141A300AA698B /* printf.c */,
+                       );
+                       path = printf;
+                       sourceTree = "<group>";
+               };
+               FCBA13D614A141A300AA698B /* pwd */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13D814A141A300AA698B /* pwd.1 */,
+                               FCBA13D914A141A300AA698B /* pwd.c */,
+                       );
+                       path = pwd;
+                       sourceTree = "<group>";
+               };
+               FCBA13DA14A141A300AA698B /* renice */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13DC14A141A300AA698B /* renice.8 */,
+                               FCBA13DD14A141A300AA698B /* renice.c */,
+                       );
+                       path = renice;
+                       sourceTree = "<group>";
+               };
+               FCBA13DE14A141A300AA698B /* script */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13E014A141A300AA698B /* script.1 */,
+                               FCBA13E114A141A300AA698B /* script.c */,
+                       );
+                       path = script;
+                       sourceTree = "<group>";
+               };
+               FCBA13E214A141A300AA698B /* seq */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13E414A141A300AA698B /* seq.1 */,
+                               FCBA13E514A141A300AA698B /* seq.c */,
+                       );
+                       path = seq;
+                       sourceTree = "<group>";
+               };
+               FCBA13E614A141A300AA698B /* shlock */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13E814A141A300AA698B /* shlock.1 */,
+                               FCBA13E914A141A300AA698B /* shlock.c */,
+                       );
+                       path = shlock;
+                       sourceTree = "<group>";
+               };
+               FCBA13EA14A141A300AA698B /* sleep */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13EC14A141A300AA698B /* sleep.1 */,
+                               FCBA13ED14A141A300AA698B /* sleep.c */,
+                       );
+                       path = sleep;
+                       sourceTree = "<group>";
+               };
+               FCBA13EE14A141A300AA698B /* su */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13EF14A141A300AA698B /* Makefile */,
+                               FCBA13F014A141A300AA698B /* su.1 */,
+                               FCBA13F114A141A300AA698B /* su.c */,
+                               FCBA13F214A141A300AA698B /* su.pam */,
+                               FCED3AF514B4FC1800C313C3 /* libpam.dylib */,
+                       );
+                       path = su;
+                       sourceTree = "<group>";
+               };
+               FCBA13F314A141A300AA698B /* tee */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13F514A141A300AA698B /* tee.1 */,
+                               FCBA13F614A141A300AA698B /* tee.c */,
+                       );
+                       path = tee;
+                       sourceTree = "<group>";
+               };
+               FCBA13F714A141A300AA698B /* test */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13F814A141A300AA698B /* [.1 */,
+                               FCBA13FA14A141A300AA698B /* test.1 */,
+                               FCBA13FB14A141A300AA698B /* test.c */,
+                               FCBA13FC14A141A300AA698B /* TEST.csh */,
+                       );
+                       path = test;
+                       sourceTree = "<group>";
+               };
+               FCBA13FD14A141A300AA698B /* time */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA13FF14A141A300AA698B /* time.1 */,
+                               FCBA140014A141A300AA698B /* time.c */,
+                       );
+                       path = time;
+                       sourceTree = "<group>";
+               };
+               FCBA140114A141A300AA698B /* true */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA140314A141A300AA698B /* true.1 */,
+                               FCBA140414A141A300AA698B /* true.c */,
+                       );
+                       path = true;
+                       sourceTree = "<group>";
+               };
+               FCBA140614A141A300AA698B /* uname */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA140814A141A300AA698B /* uname.1 */,
+                               FCBA140914A141A300AA698B /* uname.c */,
+                       );
+                       path = uname;
+                       sourceTree = "<group>";
+               };
+               FCBA140A14A141A300AA698B /* users */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA140C14A141A300AA698B /* users.1 */,
+                               FCBA140D14A141A300AA698B /* users.c */,
+                       );
+                       path = users;
+                       sourceTree = "<group>";
+               };
+               FCBA140E14A141A300AA698B /* w */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA140F14A141A300AA698B /* extern.h */,
+                               FCBA141014A141A300AA698B /* fmt.c */,
+                               FCBA141114A141A300AA698B /* Makefile */,
+                               FCBA141214A141A300AA698B /* pr_time.c */,
+                               FCBA141314A141A300AA698B /* proc_compare.c */,
+                               FCBA141414A141A300AA698B /* uptime.1 */,
+                               FCBA141514A141A300AA698B /* w.1 */,
+                               FCBA141614A141A300AA698B /* w.c */,
+                       );
+                       path = w;
+                       sourceTree = "<group>";
+               };
+               FCBA141714A141A300AA698B /* whereis */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA141914A141A300AA698B /* whereis.1 */,
+                               FCBA141A14A141A300AA698B /* whereis.c */,
+                       );
+                       path = whereis;
+                       sourceTree = "<group>";
+               };
+               FCBA141B14A141A300AA698B /* which */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA141D14A141A300AA698B /* which.1 */,
+                               FCBA141E14A141A300AA698B /* which.c */,
+                       );
+                       path = which;
+                       sourceTree = "<group>";
+               };
+               FCBA141F14A141A300AA698B /* who */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA142114A141A300AA698B /* utmpentry.c */,
+                               FCBA142214A141A300AA698B /* utmpentry.h */,
+                               FCBA142314A141A300AA698B /* who.1 */,
+                               FCBA142414A141A300AA698B /* who.c */,
+                               FCBA02E514B505A50030BEB3 /* libresolv.dylib */,
+                       );
+                       path = who;
+                       sourceTree = "<group>";
+               };
+               FCBA142514A141A300AA698B /* xargs */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA142714A141A300AA698B /* pathnames.h */,
+                               FCBA142814A141A300AA698B /* strnsubst.c */,
+                               FCBA142914A141A300AA698B /* xargs.1 */,
+                               FCBA142A14A141A300AA698B /* xargs.c */,
+                       );
+                       path = xargs;
+                       sourceTree = "<group>";
+               };
+               FCBA142B14A141A300AA698B /* yes */ = {
+                       isa = PBXGroup;
+                       children = (
+                               FCBA142D14A141A300AA698B /* yes.1 */,
+                               FCBA142E14A141A300AA698B /* yes.c */,
+                       );
+                       path = yes;
+                       sourceTree = "<group>";
+               };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+               FC5D637F14B9819E00123E48 /* what */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FC5D638914B9819E00123E48 /* Build configuration list for PBXNativeTarget "what" */;
+                       buildPhases = (
+                               FC5D638014B9819E00123E48 /* Sources */,
+                               FC5D638514B9819E00123E48 /* Frameworks */,
+                               FC5D638614B9819E00123E48 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = what;
+                       productName = shell_cmds;
+                       productReference = FC5D638B14B9819E00123E48 /* what */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FC5D638F14B9822D00123E48 /* hexdump */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FC5D639514B9822D00123E48 /* Build configuration list for PBXNativeTarget "hexdump" */;
+                       buildPhases = (
+                               FC5D639014B9822D00123E48 /* Sources */,
+                               FC5D639214B9822D00123E48 /* Frameworks */,
+                               FC5D639314B9822D00123E48 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = hexdump;
+                       productName = shell_cmds;
+                       productReference = FC5D639714B9822D00123E48 /* hexdump */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA149814A141FF00AA698B /* apply */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA149C14A141FF00AA698B /* Build configuration list for PBXNativeTarget "apply" */;
+                       buildPhases = (
+                               FCBA149914A141FF00AA698B /* Sources */,
+                               FCBA149A14A141FF00AA698B /* Frameworks */,
+                               FCBA149B14A141FF00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = apply;
+                       productName = shell_cmds;
+                       productReference = FCBA149E14A141FF00AA698B /* alias copy */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14AE14A1422D00AA698B /* basename */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14B214A1422D00AA698B /* Build configuration list for PBXNativeTarget "basename" */;
+                       buildPhases = (
+                               FCBA14AF14A1422D00AA698B /* Sources */,
+                               FCBA14B014A1422D00AA698B /* Frameworks */,
+                               FCBA14B114A1422D00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = basename;
+                       productName = shell_cmds;
+                       productReference = FCBA14B414A1422D00AA698B /* basename */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14B714A1423E00AA698B /* chroot */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14BB14A1423E00AA698B /* Build configuration list for PBXNativeTarget "chroot" */;
+                       buildPhases = (
+                               FCBA14B814A1423E00AA698B /* Sources */,
+                               FCBA14B914A1423E00AA698B /* Frameworks */,
+                               FCBA14BA14A1423E00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = chroot;
+                       productName = shell_cmds;
+                       productReference = FCBA14BD14A1423E00AA698B /* chroot */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14BF14A1426800AA698B /* date */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14C314A1426800AA698B /* Build configuration list for PBXNativeTarget "date" */;
+                       buildPhases = (
+                               FCBA14C014A1426800AA698B /* Sources */,
+                               FCBA14C114A1426800AA698B /* Frameworks */,
+                               FCBA14C214A1426800AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = date;
+                       productName = shell_cmds;
+                       productReference = FCBA14C514A1426800AA698B /* date */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14C714A1428000AA698B /* dirname */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14CB14A1428000AA698B /* Build configuration list for PBXNativeTarget "dirname" */;
+                       buildPhases = (
+                               FCBA14C814A1428000AA698B /* Sources */,
+                               FCBA14C914A1428000AA698B /* Frameworks */,
+                               FCBA14CA14A1428000AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = dirname;
+                       productName = shell_cmds;
+                       productReference = FCBA14CD14A1428000AA698B /* dirname */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14CF14A1433F00AA698B /* echo */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14D314A1433F00AA698B /* Build configuration list for PBXNativeTarget "echo" */;
+                       buildPhases = (
+                               FCBA14D014A1433F00AA698B /* Sources */,
+                               FCBA14D114A1433F00AA698B /* Frameworks */,
+                               FCBA14D214A1433F00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = echo;
+                       productName = shell_cmds;
+                       productReference = FCBA14D514A1433F00AA698B /* echo */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA14D714A1434A00AA698B /* env */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA14DB14A1434A00AA698B /* Build configuration list for PBXNativeTarget "env" */;
+                       buildPhases = (
+                               FCBA14D814A1434A00AA698B /* Sources */,
+                               FCBA14D914A1434A00AA698B /* Frameworks */,
+                               FCBA14DA14A1434A00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = env;
+                       productName = shell_cmds;
+                       productReference = FCBA14DD14A1434A00AA698B /* env */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA150E14A1453A00AA698B /* expr */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA151214A1453A00AA698B /* Build configuration list for PBXNativeTarget "expr" */;
+                       buildPhases = (
+                               FCBA150F14A1453A00AA698B /* Sources */,
+                               FCBA151014A1453A00AA698B /* Frameworks */,
+                               FCBA151114A1453A00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = expr;
+                       productName = shell_cmds;
+                       productReference = FCBA151414A1453A00AA698B /* expr */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA151614A1454D00AA698B /* false */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA151A14A1454D00AA698B /* Build configuration list for PBXNativeTarget "false" */;
+                       buildPhases = (
+                               FCBA151714A1454D00AA698B /* Sources */,
+                               FCBA151814A1454D00AA698B /* Frameworks */,
+                               FCBA151914A1454D00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = false;
+                       productName = shell_cmds;
+                       productReference = FCBA151C14A1454D00AA698B /* expr copy */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA151E14A1455600AA698B /* find */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA152214A1455600AA698B /* Build configuration list for PBXNativeTarget "find" */;
+                       buildPhases = (
+                               FCBA151F14A1455600AA698B /* Sources */,
+                               FCBA152014A1455600AA698B /* Frameworks */,
+                               FCBA152114A1455600AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = find;
+                       productName = shell_cmds;
+                       productReference = FCBA152414A1455600AA698B /* find */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA152614A1455900AA698B /* getopt */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA152A14A1455900AA698B /* Build configuration list for PBXNativeTarget "getopt" */;
+                       buildPhases = (
+                               FCBA152714A1455900AA698B /* Sources */,
+                               FCBA152814A1455900AA698B /* Frameworks */,
+                               FCBA152914A1455900AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = getopt;
+                       productName = shell_cmds;
+                       productReference = FCBA152C14A1455900AA698B /* getopt */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA152E14A1455C00AA698B /* hostname */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA153214A1455C00AA698B /* Build configuration list for PBXNativeTarget "hostname" */;
+                       buildPhases = (
+                               FCBA152F14A1455C00AA698B /* Sources */,
+                               FCBA153014A1455C00AA698B /* Frameworks */,
+                               FCBA153114A1455C00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = hostname;
+                       productName = shell_cmds;
+                       productReference = FCBA153414A1455C00AA698B /* hostname */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA153614A1455F00AA698B /* id */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA153A14A1455F00AA698B /* Build configuration list for PBXNativeTarget "id" */;
+                       buildPhases = (
+                               FCBA153714A1455F00AA698B /* Sources */,
+                               FCBA153814A1455F00AA698B /* Frameworks */,
+                               FCBA153914A1455F00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = id;
+                       productName = shell_cmds;
+                       productReference = FCBA153C14A1455F00AA698B /* id */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA153E14A1456100AA698B /* jot */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA154214A1456100AA698B /* Build configuration list for PBXNativeTarget "jot" */;
+                       buildPhases = (
+                               FCBA153F14A1456100AA698B /* Sources */,
+                               FCBA154014A1456100AA698B /* Frameworks */,
+                               FCBA154114A1456100AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = jot;
+                       productName = shell_cmds;
+                       productReference = FCBA154414A1456100AA698B /* jot */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA154614A1456400AA698B /* kill */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA154A14A1456400AA698B /* Build configuration list for PBXNativeTarget "kill" */;
+                       buildPhases = (
+                               FCBA154714A1456400AA698B /* Sources */,
+                               FCBA154814A1456400AA698B /* Frameworks */,
+                               FCBA154914A1456400AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = kill;
+                       productName = shell_cmds;
+                       productReference = FCBA154C14A1456400AA698B /* kill */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA154E14A1456700AA698B /* killall */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA155214A1456700AA698B /* Build configuration list for PBXNativeTarget "killall" */;
+                       buildPhases = (
+                               FCBA154F14A1456700AA698B /* Sources */,
+                               FCBA155014A1456700AA698B /* Frameworks */,
+                               FCBA155114A1456700AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = killall;
+                       productName = shell_cmds;
+                       productReference = FCBA155414A1456700AA698B /* killall */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA155614A1456A00AA698B /* lastcomm */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA155A14A1456A00AA698B /* Build configuration list for PBXNativeTarget "lastcomm" */;
+                       buildPhases = (
+                               FCBA155714A1456A00AA698B /* Sources */,
+                               FCBA155814A1456A00AA698B /* Frameworks */,
+                               FCBA155914A1456A00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = lastcomm;
+                       productName = shell_cmds;
+                       productReference = FCBA155C14A1456A00AA698B /* lastcomm */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA155E14A1456E00AA698B /* locate */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA156214A1456E00AA698B /* Build configuration list for PBXNativeTarget "locate" */;
+                       buildPhases = (
+                               FCBA155F14A1456E00AA698B /* Sources */,
+                               FCBA156014A1456E00AA698B /* Frameworks */,
+                               FCBA156114A1456E00AA698B /* CopyFiles */,
+                               FCE30EBE14B533B500CC0294 /* CopyFiles */,
+                               FCE30EB914B532C700CC0294 /* CopyFiles */,
+                               FCE30EBC14B5339000CC0294 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = locate;
+                       productName = shell_cmds;
+                       productReference = FCBA156414A1456E00AA698B /* locate */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA156614A1457100AA698B /* logname */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA156A14A1457100AA698B /* Build configuration list for PBXNativeTarget "logname" */;
+                       buildPhases = (
+                               FCBA156714A1457100AA698B /* Sources */,
+                               FCBA156814A1457100AA698B /* Frameworks */,
+                               FCBA156914A1457100AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = logname;
+                       productName = shell_cmds;
+                       productReference = FCBA156C14A1457100AA698B /* logname */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA157614A1457B00AA698B /* mktemp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA157A14A1457B00AA698B /* Build configuration list for PBXNativeTarget "mktemp" */;
+                       buildPhases = (
+                               FCBA157714A1457B00AA698B /* Sources */,
+                               FCBA157814A1457B00AA698B /* Frameworks */,
+                               FCBA157914A1457B00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = mktemp;
+                       productName = shell_cmds;
+                       productReference = FCBA157C14A1457B00AA698B /* mktemp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA157E14A1457F00AA698B /* nice */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA158214A1457F00AA698B /* Build configuration list for PBXNativeTarget "nice" */;
+                       buildPhases = (
+                               FCBA157F14A1457F00AA698B /* Sources */,
+                               FCBA158014A1457F00AA698B /* Frameworks */,
+                               FCBA158114A1457F00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = nice;
+                       productName = shell_cmds;
+                       productReference = FCBA158414A1457F00AA698B /* nice */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA158614A1458500AA698B /* nohup */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA158A14A1458500AA698B /* Build configuration list for PBXNativeTarget "nohup" */;
+                       buildPhases = (
+                               FCBA158714A1458500AA698B /* Sources */,
+                               FCBA158814A1458500AA698B /* Frameworks */,
+                               FCBA158914A1458500AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = nohup;
+                       productName = shell_cmds;
+                       productReference = FCBA158C14A1458500AA698B /* nohup */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA158E14A1458800AA698B /* path_helper */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA159214A1458800AA698B /* Build configuration list for PBXNativeTarget "path_helper" */;
+                       buildPhases = (
+                               FCBA158F14A1458800AA698B /* Sources */,
+                               FCBA159014A1458800AA698B /* Frameworks */,
+                               FCBA159114A1458800AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = path_helper;
+                       productName = shell_cmds;
+                       productReference = FCBA159414A1458800AA698B /* path_helper */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA159614A1458C00AA698B /* printenv */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA159A14A1458C00AA698B /* Build configuration list for PBXNativeTarget "printenv" */;
+                       buildPhases = (
+                               FCBA159714A1458C00AA698B /* Sources */,
+                               FCBA159814A1458C00AA698B /* Frameworks */,
+                               FCBA159914A1458C00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = printenv;
+                       productName = shell_cmds;
+                       productReference = FCBA159C14A1458C00AA698B /* printenv */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA159E14A1459000AA698B /* printf */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15A214A1459000AA698B /* Build configuration list for PBXNativeTarget "printf" */;
+                       buildPhases = (
+                               FCBA159F14A1459000AA698B /* Sources */,
+                               FCBA15A014A1459000AA698B /* Frameworks */,
+                               FCBA15A114A1459000AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = printf;
+                       productName = shell_cmds;
+                       productReference = FCBA15A414A1459000AA698B /* printf */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15A614A1459500AA698B /* pwd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15AA14A1459500AA698B /* Build configuration list for PBXNativeTarget "pwd" */;
+                       buildPhases = (
+                               FCBA15A714A1459500AA698B /* Sources */,
+                               FCBA15A814A1459500AA698B /* Frameworks */,
+                               FCBA15A914A1459500AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = pwd;
+                       productName = shell_cmds;
+                       productReference = FCBA15AC14A1459500AA698B /* pwd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15AE14A1459700AA698B /* renice */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15B214A1459700AA698B /* Build configuration list for PBXNativeTarget "renice" */;
+                       buildPhases = (
+                               FCBA15AF14A1459700AA698B /* Sources */,
+                               FCBA15B014A1459700AA698B /* Frameworks */,
+                               FCBA15B114A1459700AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = renice;
+                       productName = shell_cmds;
+                       productReference = FCBA15B414A1459700AA698B /* renice */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15B614A1459900AA698B /* script */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15BA14A1459900AA698B /* Build configuration list for PBXNativeTarget "script" */;
+                       buildPhases = (
+                               FCBA15B714A1459900AA698B /* Sources */,
+                               FCBA15B814A1459900AA698B /* Frameworks */,
+                               FCBA15B914A1459900AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = script;
+                       productName = shell_cmds;
+                       productReference = FCBA15BC14A1459900AA698B /* script */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15BE14A1459E00AA698B /* seq */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15C214A1459E00AA698B /* Build configuration list for PBXNativeTarget "seq" */;
+                       buildPhases = (
+                               FCBA15BF14A1459E00AA698B /* Sources */,
+                               FCBA15C014A1459E00AA698B /* Frameworks */,
+                               FCBA15C114A1459E00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = seq;
+                       productName = shell_cmds;
+                       productReference = FCBA15C414A1459E00AA698B /* seq */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15C614A145A200AA698B /* shlock */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15CA14A145A200AA698B /* Build configuration list for PBXNativeTarget "shlock" */;
+                       buildPhases = (
+                               FCBA15C714A145A200AA698B /* Sources */,
+                               FCBA15C814A145A200AA698B /* Frameworks */,
+                               FCBA15C914A145A200AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = shlock;
+                       productName = shell_cmds;
+                       productReference = FCBA15CC14A145A200AA698B /* shlock */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15CE14A145A500AA698B /* sleep */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15D214A145A500AA698B /* Build configuration list for PBXNativeTarget "sleep" */;
+                       buildPhases = (
+                               FCBA15CF14A145A500AA698B /* Sources */,
+                               FCBA15D014A145A500AA698B /* Frameworks */,
+                               FCBA15D114A145A500AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = sleep;
+                       productName = shell_cmds;
+                       productReference = FCBA15D414A145A500AA698B /* sleep */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15D614A145A700AA698B /* su */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15DA14A145A700AA698B /* Build configuration list for PBXNativeTarget "su" */;
+                       buildPhases = (
+                               FCBA15D714A145A700AA698B /* Sources */,
+                               FCBA15D814A145A700AA698B /* Frameworks */,
+                               FCBA15D914A145A700AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = su;
+                       productName = shell_cmds;
+                       productReference = FCBA15DC14A145A700AA698B /* su */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15DE14A145A900AA698B /* tee */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15E214A145A900AA698B /* Build configuration list for PBXNativeTarget "tee" */;
+                       buildPhases = (
+                               FCBA15DF14A145A900AA698B /* Sources */,
+                               FCBA15E014A145A900AA698B /* Frameworks */,
+                               FCBA15E114A145A900AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = tee;
+                       productName = shell_cmds;
+                       productReference = FCBA15E414A145A900AA698B /* tee */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15E614A145AE00AA698B /* test */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15EA14A145AE00AA698B /* Build configuration list for PBXNativeTarget "test" */;
+                       buildPhases = (
+                               FCBA15E714A145AE00AA698B /* Sources */,
+                               FCBA15E814A145AE00AA698B /* Frameworks */,
+                               FCBA15E914A145AE00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = test;
+                       productName = shell_cmds;
+                       productReference = FCBA15EC14A145AE00AA698B /* test */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15EE14A145B000AA698B /* time */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15F214A145B000AA698B /* Build configuration list for PBXNativeTarget "time" */;
+                       buildPhases = (
+                               FCBA15EF14A145B000AA698B /* Sources */,
+                               FCBA15F014A145B000AA698B /* Frameworks */,
+                               FCBA15F114A145B000AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = time;
+                       productName = shell_cmds;
+                       productReference = FCBA15F414A145B000AA698B /* time */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15F614A145B200AA698B /* true */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA15FA14A145B200AA698B /* Build configuration list for PBXNativeTarget "true" */;
+                       buildPhases = (
+                               FCBA15F714A145B200AA698B /* Sources */,
+                               FCBA15F814A145B200AA698B /* Frameworks */,
+                               FCBA15F914A145B200AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = true;
+                       productName = shell_cmds;
+                       productReference = FCBA15FC14A145B200AA698B /* true */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA15FE14A145B500AA698B /* uname */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA160214A145B500AA698B /* Build configuration list for PBXNativeTarget "uname" */;
+                       buildPhases = (
+                               FCBA15FF14A145B500AA698B /* Sources */,
+                               FCBA160014A145B500AA698B /* Frameworks */,
+                               FCBA160114A145B500AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = uname;
+                       productName = shell_cmds;
+                       productReference = FCBA160414A145B500AA698B /* uname */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA160614A145B800AA698B /* users */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA160A14A145B800AA698B /* Build configuration list for PBXNativeTarget "users" */;
+                       buildPhases = (
+                               FCBA160714A145B800AA698B /* Sources */,
+                               FCBA160814A145B800AA698B /* Frameworks */,
+                               FCBA160914A145B800AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = users;
+                       productName = shell_cmds;
+                       productReference = FCBA160C14A145B800AA698B /* users */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA160E14A145BA00AA698B /* w */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA161214A145BA00AA698B /* Build configuration list for PBXNativeTarget "w" */;
+                       buildPhases = (
+                               FCBA160F14A145BA00AA698B /* Sources */,
+                               FCBA161014A145BA00AA698B /* Frameworks */,
+                               FCBA161114A145BA00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = w;
+                       productName = shell_cmds;
+                       productReference = FCBA161414A145BA00AA698B /* w */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA161614A145BC00AA698B /* whereis */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA161A14A145BC00AA698B /* Build configuration list for PBXNativeTarget "whereis" */;
+                       buildPhases = (
+                               FCBA161714A145BC00AA698B /* Sources */,
+                               FCBA161814A145BC00AA698B /* Frameworks */,
+                               FCBA161914A145BC00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = whereis;
+                       productName = shell_cmds;
+                       productReference = FCBA161C14A145BC00AA698B /* whereis */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA161E14A145C000AA698B /* which */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA162214A145C000AA698B /* Build configuration list for PBXNativeTarget "which" */;
+                       buildPhases = (
+                               FCBA161F14A145C000AA698B /* Sources */,
+                               FCBA162014A145C000AA698B /* Frameworks */,
+                               FCBA162114A145C000AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = which;
+                       productName = shell_cmds;
+                       productReference = FCBA162414A145C000AA698B /* which */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA162614A145C500AA698B /* who */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA162A14A145C500AA698B /* Build configuration list for PBXNativeTarget "who" */;
+                       buildPhases = (
+                               FCBA162714A145C500AA698B /* Sources */,
+                               FCBA162814A145C500AA698B /* Frameworks */,
+                               FCBA162914A145C500AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = who;
+                       productName = shell_cmds;
+                       productReference = FCBA162C14A145C500AA698B /* who */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA162E14A145C700AA698B /* xargs */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA163214A145C700AA698B /* Build configuration list for PBXNativeTarget "xargs" */;
+                       buildPhases = (
+                               FCBA162F14A145C700AA698B /* Sources */,
+                               FCBA163014A145C700AA698B /* Frameworks */,
+                               FCBA163114A145C700AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = xargs;
+                       productName = shell_cmds;
+                       productReference = FCBA163414A145C700AA698B /* xargs */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCBA163614A145CA00AA698B /* yes */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCBA163A14A145CA00AA698B /* Build configuration list for PBXNativeTarget "yes" */;
+                       buildPhases = (
+                               FCBA163714A145CA00AA698B /* Sources */,
+                               FCBA163814A145CA00AA698B /* Frameworks */,
+                               FCBA163914A145CA00AA698B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = yes;
+                       productName = shell_cmds;
+                       productReference = FCBA163C14A145CA00AA698B /* yes */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCE30EC214B5368A00CC0294 /* locate.bigram */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCE30ED014B5368A00CC0294 /* Build configuration list for PBXNativeTarget "locate.bigram" */;
+                       buildPhases = (
+                               FCE30EC314B5368A00CC0294 /* Sources */,
+                               FCE30EC614B5368A00CC0294 /* Frameworks */,
+                               FCE30EC714B5368A00CC0294 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = locate.bigram;
+                       productName = shell_cmds;
+                       productReference = FCE30ED214B5368A00CC0294 /* locate.bigram */;
+                       productType = "com.apple.product-type.tool";
+               };
+               FCE30ED614B536C900CC0294 /* locate.code */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = FCE30EDC14B536C900CC0294 /* Build configuration list for PBXNativeTarget "locate.code" */;
+                       buildPhases = (
+                               FCE30ED714B536C900CC0294 /* Sources */,
+                               FCE30ED914B536C900CC0294 /* Frameworks */,
+                               FCE30EDA14B536C900CC0294 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = locate.code;
+                       productName = shell_cmds;
+                       productReference = FCE30EDE14B536C900CC0294 /* locate.code */;
+                       productType = "com.apple.product-type.tool";
+               };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+               FC80BF5714A05A2F00C6F7F5 /* Project object */ = {
+                       isa = PBXProject;
+                       attributes = {
+                               LastUpgradeCheck = 0430;
+                               ORGANIZATIONNAME = "Apple Inc.";
+                       };
+                       buildConfigurationList = FC80BF5A14A05A2F00C6F7F5 /* Build configuration list for PBXProject "shell_cmds" */;
+                       compatibilityVersion = "Xcode 3.2";
+                       developmentRegion = English;
+                       hasScannedForEncodings = 0;
+                       knownRegions = (
+                               en,
+                       );
+                       mainGroup = FC80BF5514A05A2F00C6F7F5;
+                       productRefGroup = FC80BF6114A05A2F00C6F7F5 /* Products */;
+                       projectDirPath = "";
+                       projectRoot = "";
+                       targets = (
+                               FCBA14FD14A144EC00AA698B /* All_OSX */,
+                               FCE30F4A14B619B000CC0294 /* All_iOS */,
+                               FCBA149814A141FF00AA698B /* apply */,
+                               FCBA14AE14A1422D00AA698B /* basename */,
+                               FCBA14B714A1423E00AA698B /* chroot */,
+                               FCBA14BF14A1426800AA698B /* date */,
+                               FCBA14C714A1428000AA698B /* dirname */,
+                               FCBA14CF14A1433F00AA698B /* echo */,
+                               FCBA14D714A1434A00AA698B /* env */,
+                               FCBA150E14A1453A00AA698B /* expr */,
+                               FCBA151614A1454D00AA698B /* false */,
+                               FCBA151E14A1455600AA698B /* find */,
+                               FCBA152614A1455900AA698B /* getopt */,
+                               FC5D638F14B9822D00123E48 /* hexdump */,
+                               FCBA152E14A1455C00AA698B /* hostname */,
+                               FCBA153614A1455F00AA698B /* id */,
+                               FCBA153E14A1456100AA698B /* jot */,
+                               FCBA154614A1456400AA698B /* kill */,
+                               FCBA154E14A1456700AA698B /* killall */,
+                               FCBA155614A1456A00AA698B /* lastcomm */,
+                               FCBA155E14A1456E00AA698B /* locate */,
+                               FCE30EC214B5368A00CC0294 /* locate.bigram */,
+                               FCE30ED614B536C900CC0294 /* locate.code */,
+                               FCBA156614A1457100AA698B /* logname */,
+                               FCBA157614A1457B00AA698B /* mktemp */,
+                               FCBA157E14A1457F00AA698B /* nice */,
+                               FCBA158614A1458500AA698B /* nohup */,
+                               FCBA158E14A1458800AA698B /* path_helper */,
+                               FCBA159614A1458C00AA698B /* printenv */,
+                               FCBA159E14A1459000AA698B /* printf */,
+                               FCBA15A614A1459500AA698B /* pwd */,
+                               FCBA15AE14A1459700AA698B /* renice */,
+                               FCBA15B614A1459900AA698B /* script */,
+                               FCBA15BE14A1459E00AA698B /* seq */,
+                               FCBA15C614A145A200AA698B /* shlock */,
+                               FCBA15CE14A145A500AA698B /* sleep */,
+                               FCBA15D614A145A700AA698B /* su */,
+                               FCBA15DE14A145A900AA698B /* tee */,
+                               FCBA15E614A145AE00AA698B /* test */,
+                               FCBA15EE14A145B000AA698B /* time */,
+                               FCBA15F614A145B200AA698B /* true */,
+                               FCBA15FE14A145B500AA698B /* uname */,
+                               FCBA160614A145B800AA698B /* users */,
+                               FCBA160E14A145BA00AA698B /* w */,
+                               FC5D637F14B9819E00123E48 /* what */,
+                               FCBA161614A145BC00AA698B /* whereis */,
+                               FCBA161E14A145C000AA698B /* which */,
+                               FCBA162614A145C500AA698B /* who */,
+                               FCBA162E14A145C700AA698B /* xargs */,
+                               FCBA163614A145CA00AA698B /* yes */,
+                       );
+               };
+/* End PBXProject section */
+
+/* Begin PBXShellScriptBuildPhase section */
+               FCE30EB814B531EC00CC0294 /* ShellScript */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 8;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+                       shellPath = /bin/sh;
+                       shellScript = ". \"$PROJECT_DIR\"/xcodescripts/install-files.sh";
+                       showEnvVarsInLog = 0;
+               };
+               FCE30F4D14B619C900CC0294 /* Run Script */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 8;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Run Script";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+                       shellPath = /bin/sh;
+                       shellScript = ". \"$PROJECT_DIR\"/xcodescripts/install-files.sh";
+                       showEnvVarsInLog = 0;
+               };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+               FC5D638014B9819E00123E48 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC5D638D14B981D200123E48 /* what.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FC5D639014B9822D00123E48 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC5D639B14B9826500123E48 /* conv.c in Sources */,
+                               FC5D639C14B9826500123E48 /* display.c in Sources */,
+                               FC5D639D14B9826500123E48 /* hexdump.c in Sources */,
+                               FC5D639E14B9826500123E48 /* hexsyntax.c in Sources */,
+                               FC5D639F14B9826500123E48 /* odsyntax.c in Sources */,
+                               FC5D63A014B9826500123E48 /* parse.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA149914A141FF00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14EB14A1444900AA698B /* apply.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14AF14A1422D00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14EE14A1446700AA698B /* basename.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14B814A1423E00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14F114A1448C00AA698B /* chroot.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14C014A1426800AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14F614A144B200AA698B /* vary.c in Sources */,
+                               FCBA14F514A144AF00AA698B /* netdate.c in Sources */,
+                               FCBA14F414A1449C00AA698B /* date.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14C814A1428000AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14F714A144C700AA698B /* dirname.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14D014A1433F00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14FA14A144D300AA698B /* echo.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA14D814A1434A00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA14FC14A144E500AA698B /* env.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA150F14A1453A00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02FF14B507130030BEB3 /* expr.y in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA151714A1454D00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA030114B507220030BEB3 /* false.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA151F14A1455600AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA030314B5073F0030BEB3 /* find.c in Sources */,
+                               FCBA030414B5073F0030BEB3 /* function.c in Sources */,
+                               FCBA030514B5073F0030BEB3 /* getdate.y in Sources */,
+                               FCBA030614B5073F0030BEB3 /* ls.c in Sources */,
+                               FCBA030714B5073F0030BEB3 /* main.c in Sources */,
+                               FCBA030814B5073F0030BEB3 /* misc.c in Sources */,
+                               FCBA030914B5073F0030BEB3 /* operator.c in Sources */,
+                               FCBA030A14B5073F0030BEB3 /* option.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA152714A1455900AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA030C14B5074D0030BEB3 /* getopt.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA152F14A1455C00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA030E14B5076A0030BEB3 /* hostname.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA153714A1455F00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031014B507790030BEB3 /* id.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA153F14A1456100AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031514B507900030BEB3 /* jot.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA154714A1456400AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031714B507A10030BEB3 /* kill.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA154F14A1456700AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031914B507B00030BEB3 /* killall.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA155714A1456A00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031B14B507BD0030BEB3 /* lastcomm.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA155F14A1456E00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA031E14B507D10030BEB3 /* locate.c in Sources */,
+                               FCBA031F14B507D10030BEB3 /* util.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA156714A1457100AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02FD14B506FA0030BEB3 /* logname.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA157714A1457B00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F914B506CB0030BEB3 /* mktemp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA157F14A1457F00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F814B506BB0030BEB3 /* nice.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA158714A1458500AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F514B506940030BEB3 /* nohup.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA158F14A1458800AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F314B506840030BEB3 /* path_helper.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA159714A1458C00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F114B506720030BEB3 /* printenv.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA159F14A1459000AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02F014B506660030BEB3 /* printf.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15A714A1459500AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02ED14B506530030BEB3 /* pwd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15AF14A1459700AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02EC14B5064C0030BEB3 /* renice.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15B714A1459900AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02EA14B506340030BEB3 /* script.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15BF14A1459E00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA02E814B506230030BEB3 /* seq.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15C714A145A200AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0B14B3CD4F00ECF511 /* shlock.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15CF14A145A500AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0A14B3CD4400ECF511 /* sleep.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15D714A145A700AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0714B3CD2F00ECF511 /* su.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15DF14A145A900AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0614B3CD2800ECF511 /* tee.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15E714A145AE00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0214B3CD0C00ECF511 /* test.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15EF14A145B000AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5C0014B3CCF800ECF511 /* time.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15F714A145B200AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5BFE14B3CCD700ECF511 /* true.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA15FF14A145B500AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FC2B5BFB14B3CCC600ECF511 /* uname.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA160714A145B800AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA165014A146BE00AA698B /* users.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA160F14A145BA00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA164D14A146A200AA698B /* w.c in Sources */,
+                               FCBA164C14A1469F00AA698B /* proc_compare.c in Sources */,
+                               FCBA164B14A1469D00AA698B /* pr_time.c in Sources */,
+                               FCBA164A14A1469A00AA698B /* fmt.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA161714A145BC00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA164814A1469000AA698B /* whereis.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA161F14A145C000AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA164614A1468600AA698B /* which.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA162714A145C500AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA164414A1467D00AA698B /* who.c in Sources */,
+                               FCBA164314A1467A00AA698B /* utmpentry.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA162F14A145C700AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA164114A1467200AA698B /* strnsubst.c in Sources */,
+                               FCBA164014A1466F00AA698B /* xargs.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCBA163714A145CA00AA698B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCBA163F14A1466900AA698B /* yes.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCE30EC314B5368A00CC0294 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCE30ED414B536A600CC0294 /* locate.bigram.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               FCE30ED714B536C900CC0294 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               FCE30EE014B536F200CC0294 /* locate.code.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+               FC5D63A214B9864400123E48 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FC5D638F14B9822D00123E48 /* hexdump */;
+                       targetProxy = FC5D63A114B9864400123E48 /* PBXContainerItemProxy */;
+               };
+               FC5D63A414B9864400123E48 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FC5D637F14B9819E00123E48 /* what */;
+                       targetProxy = FC5D63A314B9864400123E48 /* PBXContainerItemProxy */;
+               };
+               FC5D63A614B9866500123E48 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FC5D638F14B9822D00123E48 /* hexdump */;
+                       targetProxy = FC5D63A514B9866500123E48 /* PBXContainerItemProxy */;
+               };
+               FC5D63A814B9866500123E48 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FC5D637F14B9819E00123E48 /* what */;
+                       targetProxy = FC5D63A714B9866500123E48 /* PBXContainerItemProxy */;
+               };
+               FCBA150114A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA149814A141FF00AA698B /* apply */;
+                       targetProxy = FCBA150014A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150314A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14AE14A1422D00AA698B /* basename */;
+                       targetProxy = FCBA150214A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150514A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14B714A1423E00AA698B /* chroot */;
+                       targetProxy = FCBA150414A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150714A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14BF14A1426800AA698B /* date */;
+                       targetProxy = FCBA150614A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150914A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14C714A1428000AA698B /* dirname */;
+                       targetProxy = FCBA150814A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150B14A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14CF14A1433F00AA698B /* echo */;
+                       targetProxy = FCBA150A14A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA150D14A144F700AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14D714A1434A00AA698B /* env */;
+                       targetProxy = FCBA150C14A144F700AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165514A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA150E14A1453A00AA698B /* expr */;
+                       targetProxy = FCBA165414A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165714A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA151614A1454D00AA698B /* false */;
+                       targetProxy = FCBA165614A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165914A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA151E14A1455600AA698B /* find */;
+                       targetProxy = FCBA165814A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165B14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA152614A1455900AA698B /* getopt */;
+                       targetProxy = FCBA165A14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165D14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA152E14A1455C00AA698B /* hostname */;
+                       targetProxy = FCBA165C14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA165F14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA153614A1455F00AA698B /* id */;
+                       targetProxy = FCBA165E14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166114A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA153E14A1456100AA698B /* jot */;
+                       targetProxy = FCBA166014A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166314A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA154614A1456400AA698B /* kill */;
+                       targetProxy = FCBA166214A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166514A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA154E14A1456700AA698B /* killall */;
+                       targetProxy = FCBA166414A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166714A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA155614A1456A00AA698B /* lastcomm */;
+                       targetProxy = FCBA166614A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166914A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA155E14A1456E00AA698B /* locate */;
+                       targetProxy = FCBA166814A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166B14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA156614A1457100AA698B /* logname */;
+                       targetProxy = FCBA166A14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA166F14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA157614A1457B00AA698B /* mktemp */;
+                       targetProxy = FCBA166E14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167114A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA157E14A1457F00AA698B /* nice */;
+                       targetProxy = FCBA167014A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167314A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA158614A1458500AA698B /* nohup */;
+                       targetProxy = FCBA167214A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167514A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA158E14A1458800AA698B /* path_helper */;
+                       targetProxy = FCBA167414A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167714A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA159614A1458C00AA698B /* printenv */;
+                       targetProxy = FCBA167614A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167914A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA159E14A1459000AA698B /* printf */;
+                       targetProxy = FCBA167814A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167B14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15A614A1459500AA698B /* pwd */;
+                       targetProxy = FCBA167A14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167D14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15AE14A1459700AA698B /* renice */;
+                       targetProxy = FCBA167C14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA167F14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15B614A1459900AA698B /* script */;
+                       targetProxy = FCBA167E14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168114A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15BE14A1459E00AA698B /* seq */;
+                       targetProxy = FCBA168014A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168314A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15C614A145A200AA698B /* shlock */;
+                       targetProxy = FCBA168214A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168514A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15CE14A145A500AA698B /* sleep */;
+                       targetProxy = FCBA168414A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168714A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15D614A145A700AA698B /* su */;
+                       targetProxy = FCBA168614A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168914A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15DE14A145A900AA698B /* tee */;
+                       targetProxy = FCBA168814A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168B14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15E614A145AE00AA698B /* test */;
+                       targetProxy = FCBA168A14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168D14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15EE14A145B000AA698B /* time */;
+                       targetProxy = FCBA168C14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA168F14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15F614A145B200AA698B /* true */;
+                       targetProxy = FCBA168E14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169114A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15FE14A145B500AA698B /* uname */;
+                       targetProxy = FCBA169014A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169314A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA160614A145B800AA698B /* users */;
+                       targetProxy = FCBA169214A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169514A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA160E14A145BA00AA698B /* w */;
+                       targetProxy = FCBA169414A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169714A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA161614A145BC00AA698B /* whereis */;
+                       targetProxy = FCBA169614A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169914A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA161E14A145C000AA698B /* which */;
+                       targetProxy = FCBA169814A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169B14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA162614A145C500AA698B /* who */;
+                       targetProxy = FCBA169A14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169D14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA162E14A145C700AA698B /* xargs */;
+                       targetProxy = FCBA169C14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCBA169F14A146D000AA698B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA163614A145CA00AA698B /* yes */;
+                       targetProxy = FCBA169E14A146D000AA698B /* PBXContainerItemProxy */;
+               };
+               FCE30EE314B539BF00CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCE30EC214B5368A00CC0294 /* locate.bigram */;
+                       targetProxy = FCE30EE214B539BF00CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30EE514B539BF00CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCE30ED614B536C900CC0294 /* locate.code */;
+                       targetProxy = FCE30EE414B539BF00CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F4F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA149814A141FF00AA698B /* apply */;
+                       targetProxy = FCE30F4E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14AE14A1422D00AA698B /* basename */;
+                       targetProxy = FCE30F5014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5314B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14B714A1423E00AA698B /* chroot */;
+                       targetProxy = FCE30F5214B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5514B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14BF14A1426800AA698B /* date */;
+                       targetProxy = FCE30F5414B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5714B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14C714A1428000AA698B /* dirname */;
+                       targetProxy = FCE30F5614B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5914B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14CF14A1433F00AA698B /* echo */;
+                       targetProxy = FCE30F5814B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5B14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA14D714A1434A00AA698B /* env */;
+                       targetProxy = FCE30F5A14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5D14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA150E14A1453A00AA698B /* expr */;
+                       targetProxy = FCE30F5C14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F5F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA151614A1454D00AA698B /* false */;
+                       targetProxy = FCE30F5E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA151E14A1455600AA698B /* find */;
+                       targetProxy = FCE30F6014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6314B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA152614A1455900AA698B /* getopt */;
+                       targetProxy = FCE30F6214B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6514B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA152E14A1455C00AA698B /* hostname */;
+                       targetProxy = FCE30F6414B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6714B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA153614A1455F00AA698B /* id */;
+                       targetProxy = FCE30F6614B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6914B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA153E14A1456100AA698B /* jot */;
+                       targetProxy = FCE30F6814B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6B14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA154614A1456400AA698B /* kill */;
+                       targetProxy = FCE30F6A14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6D14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA154E14A1456700AA698B /* killall */;
+                       targetProxy = FCE30F6C14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F6F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA155614A1456A00AA698B /* lastcomm */;
+                       targetProxy = FCE30F6E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA156614A1457100AA698B /* logname */;
+                       targetProxy = FCE30F7014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7314B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA157614A1457B00AA698B /* mktemp */;
+                       targetProxy = FCE30F7214B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7514B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA157E14A1457F00AA698B /* nice */;
+                       targetProxy = FCE30F7414B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7714B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA158614A1458500AA698B /* nohup */;
+                       targetProxy = FCE30F7614B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7914B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA158E14A1458800AA698B /* path_helper */;
+                       targetProxy = FCE30F7814B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7B14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA159614A1458C00AA698B /* printenv */;
+                       targetProxy = FCE30F7A14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7D14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA159E14A1459000AA698B /* printf */;
+                       targetProxy = FCE30F7C14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F7F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15A614A1459500AA698B /* pwd */;
+                       targetProxy = FCE30F7E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15AE14A1459700AA698B /* renice */;
+                       targetProxy = FCE30F8014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8314B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15B614A1459900AA698B /* script */;
+                       targetProxy = FCE30F8214B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8514B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15BE14A1459E00AA698B /* seq */;
+                       targetProxy = FCE30F8414B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8714B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15C614A145A200AA698B /* shlock */;
+                       targetProxy = FCE30F8614B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8914B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15CE14A145A500AA698B /* sleep */;
+                       targetProxy = FCE30F8814B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8B14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15DE14A145A900AA698B /* tee */;
+                       targetProxy = FCE30F8A14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8D14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15E614A145AE00AA698B /* test */;
+                       targetProxy = FCE30F8C14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F8F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15EE14A145B000AA698B /* time */;
+                       targetProxy = FCE30F8E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15F614A145B200AA698B /* true */;
+                       targetProxy = FCE30F9014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9314B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA15FE14A145B500AA698B /* uname */;
+                       targetProxy = FCE30F9214B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9514B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA160614A145B800AA698B /* users */;
+                       targetProxy = FCE30F9414B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9714B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA160E14A145BA00AA698B /* w */;
+                       targetProxy = FCE30F9614B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9914B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA161614A145BC00AA698B /* whereis */;
+                       targetProxy = FCE30F9814B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9B14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA161E14A145C000AA698B /* which */;
+                       targetProxy = FCE30F9A14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9D14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA162614A145C500AA698B /* who */;
+                       targetProxy = FCE30F9C14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30F9F14B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA162E14A145C700AA698B /* xargs */;
+                       targetProxy = FCE30F9E14B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+               FCE30FA114B619E600CC0294 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = FCBA163614A145CA00AA698B /* yes */;
+                       targetProxy = FCE30FA014B619E600CC0294 /* PBXContainerItemProxy */;
+               };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+               FC5D638A14B9819E00123E48 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FC5D639614B9822D00123E48 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FC80BF6914A05A2F00C6F7F5 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               APPLY_RULES_IN_COPY_FILES = YES;
+                               COPY_PHASE_STRIP = YES;
+                               CURRENT_PROJECT_VERSION = "$(RC_ProjectSourceVersion)";
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+                               GCC_PREPROCESSOR_DEFINITIONS = "__FBSDID=__RCSID";
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               INSTALL_PATH = /usr/bin;
+                               VERSIONING_SYSTEM = "apple-generic";
+                       };
+                       name = Release;
+               };
+               FCBA149D14A141FF00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14B314A1422D00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14BC14A1423E00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14C414A1426800AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14CC14A1428000AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14D414A1433F00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14DC14A1434A00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA14FF14A144EC00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA151314A1453A00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA151B14A1454D00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA152314A1455600AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "__FBSDID=__RCSID",
+                                       _DARWIN_USE_64_BIT_INODE,
+                               );
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA152B14A1455900AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA153314A1455C00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA153B14A1455F00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "__FBSDID=__RCSID",
+                                       USE_BSM_AUDIT,
+                               );
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA154314A1456100AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA154B14A1456400AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA155314A1456700AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA155B14A1456A00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA156314A1456E00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA156B14A1457100AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA157B14A1457B00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA158314A1457F00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA158B14A1458500AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA159314A1458800AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA159B14A1458C00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15A314A1459000AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15AB14A1459500AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15B314A1459700AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15BB14A1459900AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15C314A1459E00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15CB14A145A200AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15D314A145A500AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15DB14A145A700AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_MODE_FLAG = "u+s,u+w,go-w,a+rX";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15E314A145A900AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15EB14A145AE00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15F314A145B000AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA15FB14A145B200AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA160314A145B500AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA160B14A145B800AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA161314A145BA00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "__FBSDID=__RCSID",
+                                       "HAVE_KVM=0",
+                                       "HAVE_UTMPX=1",
+                               );
+                               "OTHER_LDFLAGS[sdk=macosx*][arch=*]" = "-lresolv";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA161B14A145BC00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA162314A145C000AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA162B14A145C500AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "__FBSDID=__RCSID",
+                                       _UTMPX_COMPAT,
+                                       SUPPORT_UTMPX,
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA163314A145C700AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCBA163B14A145CA00AA698B /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCE30ED114B5368A00CC0294 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCE30EDD14B536C900CC0294 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               FCE30F4C14B619B000CC0294 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+               FC5D638914B9819E00123E48 /* Build configuration list for PBXNativeTarget "what" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FC5D638A14B9819E00123E48 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FC5D639514B9822D00123E48 /* Build configuration list for PBXNativeTarget "hexdump" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FC5D639614B9822D00123E48 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FC80BF5A14A05A2F00C6F7F5 /* Build configuration list for PBXProject "shell_cmds" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FC80BF6914A05A2F00C6F7F5 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA149C14A141FF00AA698B /* Build configuration list for PBXNativeTarget "apply" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA149D14A141FF00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14B214A1422D00AA698B /* Build configuration list for PBXNativeTarget "basename" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14B314A1422D00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14BB14A1423E00AA698B /* Build configuration list for PBXNativeTarget "chroot" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14BC14A1423E00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14C314A1426800AA698B /* Build configuration list for PBXNativeTarget "date" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14C414A1426800AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14CB14A1428000AA698B /* Build configuration list for PBXNativeTarget "dirname" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14CC14A1428000AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14D314A1433F00AA698B /* Build configuration list for PBXNativeTarget "echo" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14D414A1433F00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14DB14A1434A00AA698B /* Build configuration list for PBXNativeTarget "env" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14DC14A1434A00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA14FE14A144EC00AA698B /* Build configuration list for PBXAggregateTarget "All_OSX" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA14FF14A144EC00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA151214A1453A00AA698B /* Build configuration list for PBXNativeTarget "expr" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA151314A1453A00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA151A14A1454D00AA698B /* Build configuration list for PBXNativeTarget "false" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA151B14A1454D00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA152214A1455600AA698B /* Build configuration list for PBXNativeTarget "find" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA152314A1455600AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA152A14A1455900AA698B /* Build configuration list for PBXNativeTarget "getopt" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA152B14A1455900AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA153214A1455C00AA698B /* Build configuration list for PBXNativeTarget "hostname" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA153314A1455C00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA153A14A1455F00AA698B /* Build configuration list for PBXNativeTarget "id" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA153B14A1455F00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA154214A1456100AA698B /* Build configuration list for PBXNativeTarget "jot" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA154314A1456100AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA154A14A1456400AA698B /* Build configuration list for PBXNativeTarget "kill" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA154B14A1456400AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA155214A1456700AA698B /* Build configuration list for PBXNativeTarget "killall" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA155314A1456700AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA155A14A1456A00AA698B /* Build configuration list for PBXNativeTarget "lastcomm" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA155B14A1456A00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA156214A1456E00AA698B /* Build configuration list for PBXNativeTarget "locate" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA156314A1456E00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA156A14A1457100AA698B /* Build configuration list for PBXNativeTarget "logname" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA156B14A1457100AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA157A14A1457B00AA698B /* Build configuration list for PBXNativeTarget "mktemp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA157B14A1457B00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA158214A1457F00AA698B /* Build configuration list for PBXNativeTarget "nice" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA158314A1457F00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA158A14A1458500AA698B /* Build configuration list for PBXNativeTarget "nohup" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA158B14A1458500AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA159214A1458800AA698B /* Build configuration list for PBXNativeTarget "path_helper" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA159314A1458800AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA159A14A1458C00AA698B /* Build configuration list for PBXNativeTarget "printenv" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA159B14A1458C00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15A214A1459000AA698B /* Build configuration list for PBXNativeTarget "printf" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15A314A1459000AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15AA14A1459500AA698B /* Build configuration list for PBXNativeTarget "pwd" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15AB14A1459500AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15B214A1459700AA698B /* Build configuration list for PBXNativeTarget "renice" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15B314A1459700AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15BA14A1459900AA698B /* Build configuration list for PBXNativeTarget "script" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15BB14A1459900AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15C214A1459E00AA698B /* Build configuration list for PBXNativeTarget "seq" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15C314A1459E00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15CA14A145A200AA698B /* Build configuration list for PBXNativeTarget "shlock" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15CB14A145A200AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15D214A145A500AA698B /* Build configuration list for PBXNativeTarget "sleep" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15D314A145A500AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15DA14A145A700AA698B /* Build configuration list for PBXNativeTarget "su" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15DB14A145A700AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15E214A145A900AA698B /* Build configuration list for PBXNativeTarget "tee" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15E314A145A900AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15EA14A145AE00AA698B /* Build configuration list for PBXNativeTarget "test" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15EB14A145AE00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15F214A145B000AA698B /* Build configuration list for PBXNativeTarget "time" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15F314A145B000AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA15FA14A145B200AA698B /* Build configuration list for PBXNativeTarget "true" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA15FB14A145B200AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA160214A145B500AA698B /* Build configuration list for PBXNativeTarget "uname" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA160314A145B500AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA160A14A145B800AA698B /* Build configuration list for PBXNativeTarget "users" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA160B14A145B800AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA161214A145BA00AA698B /* Build configuration list for PBXNativeTarget "w" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA161314A145BA00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA161A14A145BC00AA698B /* Build configuration list for PBXNativeTarget "whereis" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA161B14A145BC00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA162214A145C000AA698B /* Build configuration list for PBXNativeTarget "which" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA162314A145C000AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA162A14A145C500AA698B /* Build configuration list for PBXNativeTarget "who" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA162B14A145C500AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA163214A145C700AA698B /* Build configuration list for PBXNativeTarget "xargs" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA163314A145C700AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCBA163A14A145CA00AA698B /* Build configuration list for PBXNativeTarget "yes" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCBA163B14A145CA00AA698B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCE30ED014B5368A00CC0294 /* Build configuration list for PBXNativeTarget "locate.bigram" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCE30ED114B5368A00CC0294 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCE30EDC14B536C900CC0294 /* Build configuration list for PBXNativeTarget "locate.code" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCE30EDD14B536C900CC0294 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               FCE30F4B14B619B000CC0294 /* Build configuration list for PBXAggregateTarget "All_iOS" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               FCE30F4C14B619B000CC0294 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+/* End XCConfigurationList section */
+       };
+       rootObject = FC80BF5714A05A2F00C6F7F5 /* Project object */;
+}
diff --git a/shlock/Makefile b/shlock/Makefile
deleted file mode 100644 (file)
index c420d4b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = shlock
-Install_Dir = /usr/bin
-
-CFILES = shlock.c
-MANPAGES = shlock.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/sleep/Makefile b/sleep/Makefile
deleted file mode 100644 (file)
index 0dfd8e7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = sleep
-Install_Dir = /bin
-
-CFILES = sleep.c
-MANPAGES = sleep.1
-
-Extra_CC_Flags = -Wall -Werror
-Extra_CC_Flags += -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/su/Makefile b/su/Makefile
deleted file mode 100644 (file)
index ec34d8d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Project = su
-
-CFILES = su.c
-MANPAGES = su.1
-
-Extra_CC_Flags = -Wall -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip -lpam -lbsm
-Extra_LD_Flags += -framework Security
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-Install_Program_Mode = 04555
-
-after_install:
-       $(MKDIR) $(DSTROOT)$(ETCDIR)/pam.d
-       $(INSTALL_FILE) su.pam $(DSTROOT)$(ETCDIR)/pam.d/su
diff --git a/su/su.c b/su/su.c
index 10a36360e9f39d21eb9a44e5fa5ae543cc6cc678..8ad7434611653a8e44ba895a447c085821907d65 100644 (file)
--- a/su/su.c
+++ b/su/su.c
@@ -106,7 +106,7 @@ __FBSDID("$FreeBSD: src/usr.bin/su/su.c,v 1.91 2009/12/13 03:14:06 delphij Exp $
 #include <security/openpam.h>
 
 #ifdef __APPLE__
-#include <Security/AuthSession.h>
+#include <bsm/audit_session.h>
 #endif /* __APPLE__ */
 
 #define PAM_END() do {                                                 \
@@ -448,11 +448,19 @@ main(int argc, char *argv[])
 #ifdef __APPLE__
        /* 8530846 */
        if (asthem) {
-               retcode = SessionCreate(0, 0);
-               if (retcode != noErr) {
-                       syslog(LOG_ERR, "SessionCreate: %d", retcode);
+        auditinfo_addr_t auinfo = {
+            .ai_termid = { .at_type = AU_IPv4 },
+            .ai_asid = AU_ASSIGN_ASID,
+            .ai_auid = getuid(),
+            .ai_flags = 0,
+        };
+        if (setaudit_addr(&auinfo, sizeof(auinfo)) == 0) {
+            char session[16];
+            snprintf(session, sizeof(session), "%x", auinfo.ai_asid);
+            setenv("SECURITYSESSIONID", session, 1);
+        } else {
                        errx(1, "failed to create session.");
-               }
+        }
        }
 #endif /* __APPLE__ */
 
diff --git a/tee/Makefile b/tee/Makefile
deleted file mode 100644 (file)
index 00f10dc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = tee
-Install_Dir = /usr/bin
-
-CFILES = tee.c
-MANPAGES = tee.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/test/Makefile b/test/Makefile
deleted file mode 100644 (file)
index 006d45c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Project = test
-Install_Dir = /bin
-
-CFILES = test.c
-MANPAGES = test.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common
-
-after_install:
-       $(LN) -f $(DSTROOT)/$(Install_Dir)/test $(DSTROOT)$(Install_Dir)/[
-       $(LN) -f $(DSTROOT)/usr/share/man/man1/test.1 \
-               $(DSTROOT)/usr/share/man/man1/[.1
diff --git a/time/Makefile b/time/Makefile
deleted file mode 100644 (file)
index 1ea2a8e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = time
-Install_Dir = /usr/bin
-
-CFILES = time.c
-MANPAGES = time.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/true/Makefile b/true/Makefile
deleted file mode 100644 (file)
index ca5fc5d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = true
-Install_Dir = /usr/bin
-
-CFILES = true.c
-MANPAGES = true.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/uname/Makefile b/uname/Makefile
deleted file mode 100644 (file)
index b49c4cf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = uname
-Install_DIr = /usr/bin
-
-CFILES = uname.c
-MANPAGES = uname.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/users/Makefile b/users/Makefile
deleted file mode 100644 (file)
index edb22ac..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = users
-Install_Dir = /usr/bin
-
-CFILES = users.c
-MANPAGES = users.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/w/Makefile b/w/Makefile
deleted file mode 100644 (file)
index 0792750..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Project = w
-Install_Dir = /usr/bin
-
-HFILES = extern.h
-CFILES = fmt.c proc_compare.c pr_time.c w.c
-MANPAGES = uptime.1 w.1
-
-Embedded=$(shell tconf --test TARGET_OS_EMBEDDED)
-
-Extra_CC_Flags = -Wall \
-       -no-cpp-precomp -Wno-error -DHAVE_KVM=0 -DHAVE_UTMPX=1
-Extra_LD_Flags = -dead_strip
-ifeq ($(Embedded),NO)
-Extra_LD_Flags += -lresolv
-endif
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
-
-after_install:
-       $(LN) $(DSTROOT)/$(Install_Dir)/w $(DSTROOT)/$(Install_Dir)/uptime
diff --git a/what/what.1 b/what/what.1
new file mode 100644 (file)
index 0000000..fff56be
--- /dev/null
@@ -0,0 +1,70 @@
+.\"    $NetBSD: what.1,v 1.4 1997/10/20 03:16:30 lukem Exp $
+.\"
+.\" Copyright (c) 1980, 1991, 1993
+.\"    The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)what.1     8.1 (Berkeley) 6/6/93
+.\"
+.Dd June 6, 1993
+.Dt WHAT 1
+.Os BSD 4
+.Sh NAME
+.Nm what
+.Nd "show what versions of object modules were used to construct a file"
+.Sh SYNOPSIS
+.Nm
+.Ar name Ar ...
+.Sh DESCRIPTION
+.Nm
+reads each file
+.Ar name
+and searches for sequences of the form
+.Dq \&@(#) ,
+as inserted by the source code control system.  It prints the remainder
+of the string following this marker, up to a null character, newline, double
+quote, or
+.Dq \&> character.
+.Sh BUGS
+As
+.Bx
+is not licensed to distribute
+.Tn SCCS .
+This is a rewrite of the
+.Nm
+command which is part of
+.Tn SCCS ;
+it may not behave in exactly the same manner as that
+command does.
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Bx 4.0 .
diff --git a/what/what.c b/what/what.c
new file mode 100644 (file)
index 0000000..2f70e2d
--- /dev/null
@@ -0,0 +1,97 @@
+/*     $NetBSD: what.c,v 1.6 1997/10/20 03:16:31 lukem Exp $   */
+
+/*
+ * Copyright (c) 1980, 1988, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1980, 1988, 1993\n\
+       The Regents of the University of California.  All rights reserved.\n");
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)what.c     8.1 (Berkeley) 6/6/93";
+#endif
+__RCSID("$NetBSD: what.c,v 1.6 1997/10/20 03:16:31 lukem Exp $");
+#endif /* not lint */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+void search __P((void));
+int main __P((int, char **));
+
+/*
+ * what
+ */
+/* ARGSUSED */
+int
+main(argc, argv)
+       int argc;
+       char **argv;
+{
+       if (!*++argv) 
+               search();
+       else do {
+               if (!freopen(*argv, "r", stdin)) {
+                       perror(*argv);
+                       exit(1);
+               }
+               printf("%s\n", *argv);
+               search();
+       } while(*++argv);
+       exit(0);
+}
+
+void
+search()
+{
+       int c;
+
+       while ((c = getchar()) != EOF) {
+loop:          if (c != '@')
+                       continue;
+               if ((c = getchar()) != '(')
+                       goto loop;
+               if ((c = getchar()) != '#')
+                       goto loop;
+               if ((c = getchar()) != ')')
+                       goto loop;
+               putchar('\t');
+               while ((c = getchar()) != EOF && c && c != '"' &&
+                   c != '>' && c != '\n')
+                       putchar(c);
+               putchar('\n');
+       }
+}
diff --git a/whereis/Makefile b/whereis/Makefile
deleted file mode 100644 (file)
index 2d77673..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = whereis
-Install_Dir = /usr/bin
-
-CFILES = whereis.c
-MANPAGES = whereis.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/which/Makefile b/which/Makefile
deleted file mode 100644 (file)
index dfe7c1c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = which
-Install_Dir = /usr/bin
-
-CFILES = which.c
-MANPAGES = which.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/who/Makefile b/who/Makefile
deleted file mode 100644 (file)
index b984b17..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Project = who
-Install_Dir = /usr/bin
-
-CFILES = who.c utmpentry.c
-MANPAGES = who.1
-
-Extra_CC_Flags = -Wall -Werror
-Extra_CC_Flags += -DSUPPORT_UTMPX -D_UTMPX_COMPAT
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/xargs/Makefile b/xargs/Makefile
deleted file mode 100644 (file)
index 9a44c26..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Project = xargs
-Install_Dir = /usr/bin
-
-HFILES = pathnames.h
-CFILES = xargs.c strnsubst.c
-MANPAGES = xargs.1
-
-Extra_CC_Flags = -Wall \
-       -D__FBSDID=__RCSID
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make
diff --git a/xcodescripts/builtins-manpages.txt b/xcodescripts/builtins-manpages.txt
new file mode 100644 (file)
index 0000000..ba69d19
--- /dev/null
@@ -0,0 +1,86 @@
+alias.1
+alloc.1
+bg.1
+bind.1
+bindkey.1
+break.1
+breaksw.1
+builtins.1
+case.1
+cd.1
+chdir.1
+command.1
+complete.1
+continue.1
+default.1
+dirs.1
+do.1
+done.1
+echotc.1
+elif.1
+else.1
+end.1
+endif.1
+endsw.1
+esac.1
+eval.1
+exec.1
+exit.1
+export.1
+fc.1
+fg.1
+fi.1
+filetest.1
+for.1
+foreach.1
+getopts.1
+glob.1
+goto.1
+hash.1
+hashstat.1
+history.1
+hup.1
+if.1
+jobid.1
+jobs.1
+limit.1
+log.1
+logout.1
+ls-F.1
+notify.1
+onintr.1
+popd.1
+pushd.1
+read.1
+readonly.1
+rehash.1
+repeat.1
+return.1
+sched.1
+set.1
+setenv.1
+settc.1
+setty.1
+setvar.1
+shift.1
+source.1
+stop.1
+suspend.1
+switch.1
+telltc.1
+then.1
+times.1
+trap.1
+type.1
+ulimit.1
+umask.1
+unalias.1
+uncomplete.1
+unhash.1
+unlimit.1
+unset.1
+unsetenv.1
+until.1
+wait.1
+where.1
+while.1
diff --git a/xcodescripts/builtins.txt b/xcodescripts/builtins.txt
new file mode 100644 (file)
index 0000000..55cb408
--- /dev/null
@@ -0,0 +1,14 @@
+bg
+cd
+command
+fc
+fg
+getopts
+hash
+jobs
+read
+type
+ulimit
+umask
+unalias
+wait
diff --git a/xcodescripts/install-files.sh b/xcodescripts/install-files.sh
new file mode 100644 (file)
index 0000000..7d5b69d
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh
+set -e -x
+
+BINDIR="$DSTROOT"/usr/bin
+LIBEXECDIR="$DSTROOT"/usr/libexec
+MANDIR="$DSTROOT"/usr/share/man
+PAMDIR="$DSTROOT"/private/etc/pam.d
+
+ln -f "$BINDIR/hexdump" "$BINDIR/od"
+ln -f "$BINDIR/id" "$BINDIR/groups"
+ln -f "$BINDIR/id" "$BINDIR/whoami"
+ln -f "$BINDIR/w" "$BINDIR/uptime"
+ln -f "$DSTROOT/bin/test" "$DSTROOT/bin/["
+
+install -d -o root -g wheel -m 0755 "$BINDIR"
+install -d -o root -g wheel -m 0755 "$MANDIR"/man1
+install -d -o root -g wheel -m 0755 "$MANDIR"/man8
+
+install -c -o root -g wheel -m 0755 "$SRCROOT"/alias/generic.sh "$BINDIR"/alias
+install -c -o root -g wheel -m 0644 "$SRCROOT"/alias/builtin.1 "$MANDIR"/man1
+
+set +x
+for builtin in `cat "$SRCROOT/xcodescripts/builtins.txt"`; do
+       echo ... linking $builtin
+       ln -f "$BINDIR"/alias "$BINDIR/$builtin"
+done
+
+for manpage in `cat "$SRCROOT/xcodescripts/builtins-manpages.txt"`; do
+       echo ... linking $manpage
+       echo ".so man1/builtin.1" > "$MANDIR/man1/$manpage"
+done
+set -x
+
+# Skip locate and su targets for iOS
+if [ "$TARGET_NAME" = "All_iOS" ]; then
+       exit 0
+fi
+       
+install -d -o root -g wheel -m 0755 "$LIBEXECDIR"
+install -c -o root -g wheel -m 0755 "$SRCROOT"/locate/locate/updatedb.sh \
+       "$LIBEXECDIR"/locate.updatedb
+install -c -o root -g wheel -m 0644 "$SRCROOT"/locate/locate/locate.updatedb.8 \
+       "$MANDIR"/man8
+install -c -o root -g wheel -m 0755 "$SRCROOT"/locate/locate/concatdb.sh \
+       "$LIBEXECDIR"/locate.concatdb
+echo ".so man8/locate.updatedb.8" > "$MANDIR"/man8/locate.concatdb.8
+install -c -o root -g wheel -m 0755 "$SRCROOT"/locate/locate/mklocatedb.sh \
+       "$LIBEXECDIR"/locate.mklocatedb
+echo ".so man8/locate.updatedb.8" > "$MANDIR"/man8/locate.mklocatedb.8
+
+install -d -o root -g wheel -m 0755 "$PAMDIR"
+install -c -o root -g wheel -m 0644 "$SRCROOT"/su/su.pam "$PAMDIR"/su
diff --git a/yes/Makefile b/yes/Makefile
deleted file mode 100644 (file)
index c049f93..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Project = yes
-Install_Dir = /usr/bin
-
-CFILES = yes.c
-MANPAGES = yes.1
-
-Extra_CC_Flags = -Wall
-Extra_LD_Flags = -dead_strip
-
-include $(MAKEFILEPATH)/CoreOS/ReleaseControl/BSDCommon.make