Mirror of Suckless' sbase (git://git.suckless.org/sbase)
Go to file
2015-02-13 11:37:17 +00:00
libutf
libutil Make getlines() less verbose 2015-02-12 14:34:07 +00:00
arg.h
basename.1
basename.c basename: make usage line the same as the man page 2015-02-01 19:26:49 +01:00
cal.1
cal.c Convert cal(1) to strtonum 2015-01-30 16:01:37 +01:00
cat.1
cat.c read stdin if arg is exactly "-" not just begins with '-' 2014-11-18 21:53:37 +00:00
chgrp.1
chgrp.c Add h-flag to chown(1) and chgrp(1) 2015-02-12 21:56:06 +01:00
chmod.1
chmod.c Add mandoc-manpage for chmod(1) 2015-01-17 21:59:37 +00:00
chown.1
chown.c Also add proper error-reporting to chown(1) 2015-02-12 21:57:57 +01:00
chroot.1
chroot.c Finish up chroot(1) and md5sum(1) 2015-01-31 23:54:51 +01:00
cksum.1
cksum.c Add mandoc-manpage for cksum(1) and clean up code 2015-01-17 23:09:41 +00:00
cmp.1
cmp.c No need to check for stdin on fclose() 2015-02-07 21:42:41 +01:00
cols.1
cols.c Adjust some limits to more flexibility for strtonum 2015-02-01 01:24:03 +01:00
comm.1
comm.c
compat.h
config.mk
cp.1
cp.c cp: add symlink deref flags -H and -L for cp and mv 2015-02-09 22:54:52 +00:00
cron.1
cron.c Rename crond to cron 2014-12-16 11:04:07 +00:00
crypt.h
cut.1
cut.c Add unescape() to libutil 2015-01-29 21:52:44 +01:00
date.1
date.c Do not rely on the underlying type of time_t in date(1) and touch(1) 2015-02-08 23:45:03 +00:00
dirname.1
dirname.c man pages: improve consistency 2015-02-01 20:52:28 +01:00
du.1
du.c du.c: add symlink dereferencing flags -H and -L 2015-02-09 22:54:53 +00:00
echo.1
echo.c Add mandoc-manpage for echo(1) 2015-01-23 23:49:24 +01:00
env.1
env.c Add mandoc-manpage for env(1) 2015-01-24 00:22:06 +01:00
expand.1
expand.c Scrap writerune(), introducing fputrune() 2015-02-11 20:58:00 +01:00
expr.1
expr.c make use of en*alloc functions 2015-02-11 01:17:21 +00:00
false.1
false.c
fold.1
fold.c Adjust some limits to more flexibility for strtonum 2015-02-01 01:24:03 +01:00
fs.h
grep.1
grep.c make use of en*alloc functions 2015-02-11 01:17:21 +00:00
head.1
head.c Adjust some limits to more flexibility for strtonum 2015-02-01 01:24:03 +01:00
hostname.1
hostname.c Fix coding style 2014-11-13 18:08:43 +00:00
kill.1
kill.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
LICENSE
link.1
link.c
ln.1
ln.c ln: usage, just use %s 2015-01-31 15:23:59 +01:00
logger.1
logger.c logger: Don't bother freeing buf 2014-12-16 20:14:40 +00:00
logname.1
logname.c Fix coding style 2014-11-13 18:08:43 +00:00
ls.1
ls.c ls: Implement -c and update manpage 2015-01-20 16:50:37 +00:00
Makefile
md5.h
md5sum.1
md5sum.c
mkdir.1
mkdir.c Add full mode support to mkdir(1) and fix return values 2015-01-28 20:57:32 +01:00
mkfifo.1
mkfifo.c Add mandoc-manpage for mkfifo(1) and add full mode support 2015-01-28 20:55:50 +01:00
mktemp.1
mktemp.c Fix coding style 2014-11-13 18:08:43 +00:00
mv.1
mv.c cp: add symlink deref flags -H and -L for cp and mv 2015-02-09 22:54:52 +00:00
nice.1
nice.c Convert estrto{l, ul} to estrtonum 2015-01-30 16:52:44 +01:00
nl.1
nl.c
nohup.1
nohup.c Add mandoc-manpage for nohup(1) 2015-01-28 23:55:57 +01:00
paste.1
paste.c Scrap chartorunearr(), introducing utftorunestr() 2015-02-11 21:32:09 +01:00
printenv.1
printenv.c Style fix 2014-11-16 13:17:06 +00:00
printf.1
printf.c Import printf(1) from OpenBSD 2014-09-28 15:12:15 +01:00
pwd.1
pwd.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
queue.h
readlink.1
readlink.c
README Update uudecode manpage and mark as complete 2015-02-13 11:30:55 +00:00
renice.1
renice.c
rm.1
rm.c Fix return values in rm(1) and mv(1) 2015-01-30 12:45:54 +01:00
rmdir.1
rmdir.c
sed.c Add initial implementation of sed(1) 2015-02-10 10:35:22 +00:00
seq.1
seq.c Adjust some limits to more flexibility for strtonum 2015-02-01 01:24:03 +01:00
setsid.1
setsid.c Sort includes and more cleanup and fixes in util/ 2014-11-14 10:54:10 +00:00
sha1.h
sha1sum.1
sha1sum.c Staticise globals 2014-11-17 13:39:11 +00:00
sha256.h
sha256sum.1
sha256sum.c Staticise globals 2014-11-17 13:39:11 +00:00
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c Remember to include limits.h for UINT_MAX 2015-01-30 14:02:59 +00:00
sort.1
sort.c make use of en*alloc functions 2015-02-11 01:17:21 +00:00
split.1
split.c split: fixes 2015-02-01 16:30:12 +01:00
sponge.1
sponge.c Refactor sponge(1) code and manpage 2015-02-08 22:17:21 +01:00
strings.1
strings.c Respect exit status in strings(1) and update manpage 2014-11-23 12:44:38 +00:00
sync.1
sync.c Add arg.h-handling to sync(1) and unlink(1) 2015-02-08 22:13:50 +01:00
tail.1
tail.c
tar.1
tar.c
tee.1
tee.c tee: -i option ignores SIGINT 2015-01-22 21:35:36 +00:00
test.1
test.c Use strtonum and libutf in test(1), refactor code and manpage 2015-02-09 22:21:23 +01:00
text.h
TODO
touch.1
touch.c Do not rely on the underlying type of time_t in date(1) and touch(1) 2015-02-08 23:45:03 +00:00
tr.1
tr.c
true.1
true.c
tty.1
tty.c Refactor tty(1) code and manpage 2015-02-07 22:00:28 +01:00
uname.1
uname.c Refactor uname(1) code and manpage 2015-02-07 22:15:56 +01:00
unexpand.1
unexpand.c Scrap writerune(), introducing fputrune() 2015-02-11 20:58:00 +01:00
uniq.1
uniq.c uniq: add support for writing output files 2015-02-11 15:26:57 +00:00
unlink.1
unlink.c Add arg.h-handling to sync(1) and unlink(1) 2015-02-08 22:13:50 +01:00
utf.h
util.h
uudecode.1 Fix section order in uudecode.1 2015-02-13 11:37:17 +00:00
uudecode.c uudecode: Style fix 2015-02-13 11:20:23 +00:00
uuencode.1
uuencode.c uuencode: Style fix 2015-02-13 11:20:22 +00:00
wc.1
wc.c
xargs.1
xargs.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
yes.1
yes.c yes: Minor style fix 2015-02-01 01:27:05 +00:00

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 ('*' == finished, '#' == UTF-8 support,
'=' == implicit UTF-8 support):

   UTILITY         POSIX 2008 COMPLIANT         MISSING OPTIONS
   -------         --------------------         ---------------
=* basename        yes                          none
=* cal             yes                          none
=* cat             yes                          none
=  chgrp           no                           -H -L -P
=* chmod           yes                          none
=  chown           no                           -H -L -P
=* chroot          non-posix                    none
=* cksum           yes                          none
=* cmp             yes                          none
#* cols            non-posix                    none
=* comm            yes                          none
=  cp              yes                          none (-i)
=* cron            non-posix                    none
#* cut             yes                          none
=* date            yes                          none
=* dirname         yes                          none
=  du              yes                          none (-x)
=* echo            yes                          none
=* env             yes                          none
#* expand          yes                          none
=* expr            yes                          none
=* false           yes                          none
#* fold            yes                          none
=* grep            yes                          none
=* head            yes                          none
=* hostname        non-posix                    none
=* kill            yes                          none
=* link            yes                          none
=* ln              yes                          none
=* logger          yes                          none
=* logname         yes                          none
=  ls              no                           -C, -R, -q, -u
=* md5sum          non-posix                    none
=* mkdir           yes                          none
=* mkfifo          yes                          none
=* mktemp          non-posix                    none
=* mv              yes                          none (-i)
=* nice            yes                          none
=  nl              no                           -d, -f, -h, -l, -n, -p, -v, -w
=* nohup           yes                          none
#* paste           yes                          none
=* printenv        non-posix                    none
   printf          stolen                       stolen
=* pwd             yes                          none
=  readlink        non-posix                    none
=* renice          yes                          none
=* rm              yes                          none (-i)
=* rmdir           yes                          none
#  sed
   seq             non-posix                    none
=* setsid          non-posix                    none
=  sha1sum         non-posix                    none
=  sha256sum       non-posix                    none
=  sha512sum       non-posix                    none
=* sleep           yes                          none
   sort            no                           -m, -o, -d, -f, -i
=* split           yes                          none
=* sponge          non-posix                    none
   strings         no                           -a, -n, -t
=* sync            non-posix                    none
=* tail            yes                          none
=* tar             non-posix                    none
=* tee             yes                          none
#* test            yes                          none
=* touch           yes                          none
#* tr              yes                          none
=* true            yes                          none
=* tty             yes                          none
=* uname           yes                          none
#* unexpand        yes                          none
=* uniq            yes                          none
=* unlink          yes                          none
=* uudecode        yes                          none
=  uuencode        yes                          none
#* wc              yes                          none
=  xargs           no                           -I, -L, -p, -s, -t, -x
=* yes             non-posix                    none

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.

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/