suckless unix tools
Go to file
Michael Forney 2b8f1ee3a6 install: Remove special handling for non-regular files
All install(1) implementations I'm aware of don't try to replicate
the source file node like this. Additionally, this reportedly breaks
some scripts that use install(1) in a pipeline.
2020-03-21 12:27:00 -07:00
libutf
libutil libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
.gitignore Import mknod from ubase 2020-03-01 16:33:11 -08:00
LICENSE
Makefile Import mknod from ubase 2020-03-01 16:33:11 -08:00
README Import mknod from ubase 2020-03-01 16:33:11 -08:00
TODO
arg.h
basename.1
basename.c
cal.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cal.c
cat.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cat.c
chgrp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chgrp.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
chmod.1 chmod: Remove -HLP flags, and ignore symlinks during traversal 2020-03-05 00:45:44 -08:00
chmod.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
chown.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chown.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
chroot.1
chroot.c
cksum.1
cksum.c
cmp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cmp.c
cols.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cols.c
comm.1
comm.c
compat.h
config.mk
cp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cp.c
cron.1
cron.c
crypt.h
cut.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cut.c
date.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
date.c
dirname.1
dirname.c
du.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
du.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
echo.1
echo.c
ed.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
ed.c
env.1
env.c
expand.1
expand.c
expr.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
expr.c
false.1
false.c
find.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
find.c
flock.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
flock.c
fold.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
fold.c
fs.h libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
getconf.1
getconf.c getconf: Add an explicit return at the end of main 2020-03-01 16:40:01 -08:00
getconf.sh getconf.sh: remove unnecessary use of cat(1) 2020-03-01 16:47:15 -08:00
grep.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
grep.c
head.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
head.c
hostname.1
hostname.c
join.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
join.c
kill.1
kill.c
link.1
link.c
ln.1
ln.c
logger.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
logger.c
logname.1
logname.c
ls.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
ls.c
md5.h
md5sum.1
md5sum.c
mkdir.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
mkdir.c
mkfifo.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
mkfifo.c
mknod.1 mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mknod.c mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mktemp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
mktemp.c
mv.1
mv.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
nice.1
nice.c
nl.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
nl.c
nohup.1
nohup.c
od.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
od.c
paste.1
paste.c
pathchk.1
pathchk.c
printenv.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
printenv.c
printf.1
printf.c
pwd.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
pwd.c
queue.h
readlink.1
readlink.c
renice.1
renice.c
rev.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
rev.c
rm.1
rm.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
rmdir.1
rmdir.c
sed.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sed.c
seq.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
seq.c
setsid.1
setsid.c
sha1.h
sha1sum.1
sha1sum.c
sha224.h
sha224sum.1
sha224sum.c
sha256.h
sha256sum.1
sha256sum.c
sha384.h
sha384sum.1
sha384sum.c
sha512-224.h
sha512-224sum.1
sha512-224sum.c
sha512-256.h
sha512-256sum.1
sha512-256sum.c
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c
sort.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sort.c
split.1
split.c
sponge.1
sponge.c
strings.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
strings.c
sync.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sync.c
tail.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tail.c
tar.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tar.c libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
tee.1
tee.c
test.1
test.c
text.h
tftp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tftp.c
time.1
time.c
touch.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
touch.c
tr.1
tr.c
true.1
true.c
tsort.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tsort.c
tty.1
tty.c
uname.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uname.c
unexpand.1
unexpand.c
uniq.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uniq.c
unlink.1
unlink.c
utf.h
util.h
uudecode.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uudecode.c
uuencode.1
uuencode.c
wc.1
wc.c
which.1
which.c
whoami.1
whoami.c
xargs.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
xargs.c
xinstall.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
xinstall.c
yes.1
yes.c

README

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

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

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 or run: make sbase-box-install

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.

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

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

Status
------

The following tools are implemented:

'#'  -> UTF-8 support, '=' -> Implicit UTF-8 support, '*' -> Finished,
'|'  -> Audited,       'o' -> POSIX 2013 compliant,   'x' -> Non-POSIX,
'0'  -> NUL handling,  '()' -> Petty flag

      UTILITY         MISSING
      -------         -------
0=*|o basename        .
0=*|o cal             .
0=*|o cat             .
0=*|o chgrp           .
0=*|o chmod           .
0=*|o chown           .
0=*|x chroot          .
0=*|o cksum           .
0=*|o cmp             .
0#*|x cols            .
0=*|o comm            .
0=*|o cp              (-i)
0=*|x cron            .
0#*|o cut             .
0=*|o date            .
0=*|o dirname         .
0=*|o du              .
0=*|o echo            .
    o ed              .
0=*|o env             .
0#*|o expand          .
0#*|o expr            .
0=*|o false           .
0=    find            .
0=* x flock           .
0#*|o fold            .
0=*|o getconf         (-v)
 =*|o grep            .
0=*|o head            .
0=*|x hostname        .
0=*|x install         .
0=* o join            .
0=*|o kill            .
0=*|o link            .
0=*|o ln              .
0=*|o logger          .
0=*|o logname         .
0#* o ls              (-C, -k, -m, -p, -s, -x)
0=*|x md5sum          .
0=*|o mkdir           .
0=*|o mkfifo          .
0=*|x mknod           .
0=*|x mktemp          .
0=*|o mv              (-i)
0=*|o nice            .
0#*|o nl              .
0=*|o nohup           .
0=*|o od              .
0#* o pathchk         .
 #*|o paste           .
0=*|x printenv        .
0#*|o printf          .
0=*|o pwd             .
0=*|x readlink        .
0=*|o renice          .
0#* x rev             .
0=*|o rm              (-i)
0=*|o rmdir           .
 #    sed             .
0=*|x seq             .
0=*|x setsid          .
0=*|x sha1sum         .
0=* x sha224sum       .
0=*|x sha256sum       .
0=* x sha238sum       .
0=*|x sha512sum       .
0=* x sha512-224sum   .
0=* x sha512-256sum   .
0=*|o sleep           .
0#*|o sort            .
0=*|o split           .
0=*|x sponge          .
0#*|o strings         .
0=*|x sync            .
0=*|o tail            .
0=*|x tar             .
0=*|o tee             .
0=*|o test            .
0=*|x tftp            .
0=*|o time            .
0=*|o touch           .
0#*|o tr              .
0=*|o true            .
0=* o tsort           .
0=*|o tty             .
0=*|o uname           .
0#*|o unexpand        .
0=*|o uniq            .
0=*|o unlink          .
0=*|o uudecode        .
0=*|o uuencode        .
0#*|o wc              .
0=*|x which           .
0=*|x whoami          .
0=*|o xargs           (-p)
0=*|x yes             .

[1] http://git.suckless.org/ubase/
[2] http://www.musl-libc.org/