mirror of git://git.suckless.org/sbase
244539e473
- declare variables at the top of a function. - free(NULL) is valid. - avoid VLA. |
||
---|---|---|
libutf | ||
libutil | ||
LICENSE | ||
Makefile | ||
README | ||
TODO | ||
arg.h | ||
basename.1 | ||
basename.c | ||
cal.1 | ||
cal.c | ||
cat.1 | ||
cat.c | ||
chgrp.1 | ||
chgrp.c | ||
chmod.1 | ||
chmod.c | ||
chown.1 | ||
chown.c | ||
chroot.1 | ||
chroot.c | ||
cksum.1 | ||
cksum.c | ||
cmp.1 | ||
cmp.c | ||
col.1 | ||
col.c | ||
cols.1 | ||
cols.c | ||
comm.1 | ||
comm.c | ||
compat.h | ||
config.mk | ||
cp.1 | ||
cp.c | ||
cron.1 | ||
cron.c | ||
crypt.h | ||
cut.1 | ||
cut.c | ||
date.1 | ||
date.c | ||
dirname.1 | ||
dirname.c | ||
du.1 | ||
du.c | ||
echo.1 | ||
echo.c | ||
env.1 | ||
env.c | ||
expand.1 | ||
expand.c | ||
expr.1 | ||
expr.c | ||
false.1 | ||
false.c | ||
find.1 | ||
find.c | ||
fold.1 | ||
fold.c | ||
fs.h | ||
grep.1 | ||
grep.c | ||
head.1 | ||
head.c | ||
hostname.1 | ||
hostname.c | ||
kill.1 | ||
kill.c | ||
link.1 | ||
link.c | ||
ln.1 | ||
ln.c | ||
logger.1 | ||
logger.c | ||
logname.1 | ||
logname.c | ||
ls.1 | ||
ls.c | ||
md5.h | ||
md5sum.1 | ||
md5sum.c | ||
mkdir.1 | ||
mkdir.c | ||
mkfifo.1 | ||
mkfifo.c | ||
mktemp.1 | ||
mktemp.c | ||
mv.1 | ||
mv.c | ||
nice.1 | ||
nice.c | ||
nl.1 | ||
nl.c | ||
nohup.1 | ||
nohup.c | ||
paste.1 | ||
paste.c | ||
printenv.1 | ||
printenv.c | ||
printf.1 | ||
printf.c | ||
pwd.1 | ||
pwd.c | ||
queue.h | ||
readlink.1 | ||
readlink.c | ||
renice.1 | ||
renice.c | ||
rm.1 | ||
rm.c | ||
rmdir.1 | ||
rmdir.c | ||
sed.1 | ||
sed.c | ||
seq.1 | ||
seq.c | ||
setsid.1 | ||
setsid.c | ||
sha1.h | ||
sha1sum.1 | ||
sha1sum.c | ||
sha256.h | ||
sha256sum.1 | ||
sha256sum.c | ||
sha512.h | ||
sha512sum.1 | ||
sha512sum.c | ||
sleep.1 | ||
sleep.c | ||
sort.1 | ||
sort.c | ||
split.1 | ||
split.c | ||
sponge.1 | ||
sponge.c | ||
strings.1 | ||
strings.c | ||
sync.1 | ||
sync.c | ||
tail.1 | ||
tail.c | ||
tar.1 | ||
tar.c | ||
tee.1 | ||
tee.c | ||
test.1 | ||
test.c | ||
text.h | ||
time.1 | ||
time.c | ||
touch.1 | ||
touch.c | ||
tr.1 | ||
tr.c | ||
true.1 | ||
true.c | ||
tty.1 | ||
tty.c | ||
uname.1 | ||
uname.c | ||
unexpand.1 | ||
unexpand.c | ||
uniq.1 | ||
uniq.c | ||
unlink.1 | ||
unlink.c | ||
utf.h | ||
util.h | ||
uudecode.1 | ||
uudecode.c | ||
uuencode.1 | ||
uuencode.c | ||
wc.1 | ||
wc.c | ||
xargs.1 | ||
xargs.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 following tools are implemented: '#' -> UTF-8 support, '=' -> Implicit UTF-8 support, '*' -> Finished, '|' -> Audited, 'o' -> POSIX 2013 compliant, 'x' -> Non-POSIX, '()' -> Petty flag UTILITY MISSING FLAGS ------- ------------- =*| basename . =*| cal . =*| cat . =*| chgrp . =*| chmod . =*| chown . =*|x chroot . =*| cksum . =*| cmp . #*|x cols . #*|x col . =*| comm . =*| cp (-i) =*|x cron . #*| cut . =*| date . =*| dirname . =*| du . =*| echo . =*| env . #*| expand . #*| expr . =*| false . = find . #*| fold . =* grep . =*| head . =*|x hostname . =*| kill . =*| link . =*| ln . =*| logger . =*| logname . #* ls (-C, -m, -s, -x) =*|x md5sum . =*| mkdir . =*| mkfifo . =*|x mktemp . =*| mv (-i) =*| nice . #*| nl . =*| nohup . #*| paste . =*|x printenv . #*| printf . =*| pwd . =*|x readlink . =*| renice . =*| rm (-i) =*| rmdir . # sed . =*|x seq . =*|x setsid . =*|x sha1sum . =*|x sha256sum . =*|x sha512sum . =*| sleep . sort -d, -f, -i =*| split . =*|x sponge . #*| strings . =*|x sync . =*| tail . =*|x tar . =*| tee . =*| test . =*| time . =*| touch . #*| tr . =*| true . =*| tty . =*| uname . #*| unexpand . =*| uniq . =*| unlink . =*| uudecode . =*| uuencode . #*| wc . =*| xargs (-p) =*|x yes . 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. [1] http://git.suckless.org/ubase/ [2] http://www.musl-libc.org/