sin 8311023781 Fix test(1) semantics
Evan Gates says:

After writing my own test[0] I checked and sbase already has test. I'm
including a patch to remove test from the TODO. I also noticed that
sbase's test handles a few specific cases incorrectly (documentation
at [1]).

test ! = foo
When there are 3 arguments and the second is a valid binary primary
test should perform that binary test. Only if the second argument is
not a valid binary primary and the first is ! should test negate the
two argument test. I've attached a patch that should fix this.

test ! ! !
test ! ! ! !
When there are 3 arguments and the second is not a valid primary and
the first is !, test should return the negation of the remaining two
argument test. In this case sbase's test works correctly for ! and ! !
but fails afterwards as it's not recursive. I don't yet have a patch
for this but I'm working on one.

Then again both of these areas may be places in which worse is better.
[0] 11329f3834/test.c
[1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
2014-10-16 10:13:05 +01:00
2014-10-02 23:46:59 +01:00
2013-11-25 21:29:20 +00:00
2012-04-23 16:32:41 +02:00
2014-10-02 23:46:59 +01:00
2013-06-19 22:10:26 +02:00
2014-10-02 23:46:59 +01:00
2011-05-23 19:00:31 +01:00
2014-10-02 23:46:59 +01:00
2014-04-18 11:54:44 +01:00
2013-10-20 10:41:32 +01:00
2014-10-02 23:46:59 +01:00
2014-07-21 16:43:54 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2011-06-10 04:36:40 +01:00
2014-10-02 23:46:59 +01:00
2014-04-12 20:33:33 +01:00
2014-04-09 15:40:44 +01:00
2014-10-02 23:46:59 +01:00
2014-03-12 14:47:38 +00:00
2014-10-02 23:46:59 +01:00
2013-06-19 20:00:10 +02:00
2014-10-02 23:46:59 +01:00
2014-05-31 17:56:34 +01:00
2014-07-21 16:43:31 +01:00
2014-07-21 16:44:26 +01:00
2014-03-23 18:02:39 +00:00
2013-10-08 20:41:32 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2011-05-26 16:18:42 -01:00
2014-10-02 23:46:59 +01:00
2014-10-16 10:07:17 +01:00
2014-10-16 10:07:17 +01:00
2011-05-23 02:36:34 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-06-09 17:00:33 +01:00
2014-10-02 23:46:59 +01:00
2014-09-29 14:22:59 +01:00
2014-09-29 14:10:54 +01:00
2011-05-23 02:36:34 +01:00
2014-10-03 00:03:08 +01:00
2012-05-25 21:51:24 +01:00
2014-10-02 23:46:59 +01:00
2014-07-21 16:44:26 +01:00
2013-10-05 13:51:45 +01:00
2014-06-01 18:02:01 +01:00
2011-05-26 16:18:42 -01:00
2014-10-02 23:46:59 +01:00
2013-10-05 14:58:55 +01:00
2014-10-02 23:46:59 +01:00
2011-06-18 06:43:10 +01:00
2014-10-02 23:46:59 +01:00
2014-10-16 10:07:17 +01:00
2011-06-04 02:56:18 +01:00
2014-10-02 23:46:59 +01:00
2014-02-19 12:35:36 +00:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:49:19 +01:00
2014-04-12 20:33:33 +01:00
2014-05-05 10:05:48 +01:00
2013-10-05 13:51:45 +01:00
2014-10-02 23:46:59 +01:00
2013-11-30 20:58:15 +00:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2013-10-05 13:51:45 +01:00
2014-10-02 23:46:59 +01:00
2014-06-01 18:02:30 +01:00
2011-06-11 00:29:06 +01:00
2014-10-02 23:46:59 +01:00
2011-06-18 14:42:06 +01:00
2014-06-01 18:02:30 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-09-29 14:35:35 +01:00
2014-09-28 15:12:15 +01:00
2011-05-28 15:37:42 +01:00
2014-10-02 23:46:59 +01:00
2013-06-16 07:46:01 +02:00
2014-10-02 23:46:59 +01:00
2014-09-29 19:53:02 +01:00
2014-05-06 16:21:56 +01:00
2014-10-02 23:46:59 +01:00
2013-12-12 13:15:47 +00:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2013-10-05 14:58:55 +01:00
2014-10-02 23:46:59 +01:00
2014-04-12 20:33:33 +01:00
2014-05-05 10:05:48 +01:00
2013-07-20 13:20:16 -04:00
2014-04-12 20:33:33 +01:00
2013-08-04 11:00:34 -04:00
2014-04-12 20:33:33 +01:00
2011-05-25 18:29:46 +01:00
2014-10-02 23:46:59 +01:00
2014-06-02 13:35:59 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2013-07-02 13:26:24 -04:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2011-05-27 00:54:10 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2011-05-23 02:36:34 +01:00
2014-10-02 23:46:59 +01:00
2014-10-16 10:13:05 +01:00
2014-06-01 18:03:20 +01:00
2014-10-16 10:13:05 +01:00
2011-05-26 05:47:58 +01:00
2014-10-02 23:46:59 +01:00
2014-07-16 20:40:54 +01:00
2014-10-02 23:46:59 +01:00
2011-05-23 02:36:34 +01:00
2014-10-03 00:03:08 +01:00
2011-06-02 21:15:35 +01:00
2014-10-02 23:46:59 +01:00
2011-06-02 20:38:48 +01:00
2014-10-02 23:46:59 +01:00
2014-06-09 17:00:13 +01:00
2014-10-02 23:46:59 +01:00
2012-05-21 23:46:22 +00:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-10-02 23:46:59 +01:00
2014-01-31 15:29:11 +00:00
2014-10-02 23:46:59 +01:00
2011-05-24 01:13:34 +01:00
2014-10-02 23:46:59 +01:00
2014-04-12 20:33:33 +01:00
2014-05-12 12:06:14 +01:00
2014-10-02 23:46:59 +01:00

sbase - suckless unix tools
===========================

sbase  is a  collection of  unix  tools that  are inherently  portable
across UNIX and UNIX-like systems.

The following programs are currently implemented:

basename
cal
cat
chgrp
chmod
chown
chroot
cksum
cmp
col
cols
comm
cp
cut
date
dirname
du
echo
env
expand
expr
false
fold
grep
head
hostname
kill
ln
ls
md5sum
mkdir
mkfifo
mktemp
mv
nice
nl
nohup
paste
printenv
printf
pwd
readlink
renice
rm
rmdir
sleep
setsid
sort
split
sponge
strings
sync
tail
tar
tee
test
touch
tr
true
tty
uudecode
uuencode
uname
unexpand
uniq
unlink
seq
sha1sum
sha256sum
sha512sum
wc
xargs
yes

sbase is mostly following POSIX but we deviate wherever we think it is
appropriate.

The  complement of  sbase  is  ubase[1] which  is  Linux-specific  and
provides all  the non-portable tools.   Together they are  intended to
form a base system similar to busybox but much smaller and suckless.

Building
--------

To  build sbase,  simply  type  make.  You  may  have  to fiddle  with
config.mk depending on your system.

You  can  also  build  sbase-box,  which  generates  a  single  binary
containing  all  the  required  tools.    You  can  then  symlink  the
individual tools to sbase-box.

Ideally you will  want to statically link sbase.  If  you are on Linux
we recommend using musl-libc[2].

Portability
-----------

sbase has been  compiled on a variety of  different operating systems,
including Linux, *BSD, OSX, Haiku, Solaris, SCO OpenServer and others.

sbase  also compiles  and runs  on minix3  with slight  modifications.
They do  not provide mmap()/munmap()  so you need to  use minix_mmap()
and minix_munmap() respectively.

Various combinations of operating  systems and architectures have also
been built.

You can build sbase with gcc, clang, tcc, nwcc and pcc.

[1] http://git.suckless.org/ubase/
[2] http://www.musl-libc.org/
Description
Languages
C 79.5%
Roff 16%
Shell 1.9%
Awk 1.3%
Makefile 1.3%