suckless unix tools
Go to file
Quentin Rameau 3da450e203 printf: replace strtonum with strtol functions in conversions
Use strtol and strtoul respectively for d, i and o, u, x, X conversions.
This way we can convert other bases than 10, which strtonum doesn't
provide.
Also don't exit on conversion error but display a warning, set a return
error code, and continue.
2016-03-01 11:14:42 +00:00
libutf
libutil Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
LICENSE Add Eivind Uggedal to LICENSE 2016-02-15 09:42:59 +00:00
Makefile Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
README Add symbol to mark NUL handling in each tool (and where it is missing) 2016-02-26 09:54:46 +00:00
TODO Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
arg.h arg.h: fixed argv checks order 2016-02-20 08:23:57 +00:00
basename.1
basename.c
cal.1
cal.c cal: Highlight current day 2015-11-21 10:20:07 +00:00
cat.1
cat.c
chgrp.1
chgrp.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
chmod.1
chmod.c
chown.1 chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chown.c chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chroot.1
chroot.c
cksum.1
cksum.c
cmp.1
cmp.c
cols.1
cols.c
comm.1
comm.c
compat.h
config.mk Use -D_FILE_OFFSET_BITS=64 by default 2015-11-13 11:01:00 +00:00
cp.1
cp.c
cron.1
cron.c Sync cron with latest scron 2015-11-06 11:01:00 +00:00
crypt.h
cut.1
cut.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
date.1
date.c
dirname.1
dirname.c
du.1
du.c Fix type mismatches 2015-11-26 10:35:46 +00:00
echo.1
echo.c
ed.1 Add ed(1) - the standard text editor 2015-12-14 12:14:52 +00:00
ed.c Do not try to rematch patterns with ^ or $ 2016-01-23 08:38:03 +00:00
env.1
env.c env: Check unsetenv() return value 2015-11-06 10:52:49 +00:00
expand.1
expand.c
expr.1
expr.c
false.1
false.c
find.1
find.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
flock.1
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1
fold.c
fs.h
getconf.1
getconf.c Fix getconf(1) usage 2015-12-15 08:45:39 +00:00
getconf.sh No need for using a sub-shell in getconf.sh 2015-12-15 09:46:06 +00:00
grep.1
grep.c grep: Change match any pattern to "^" 2016-01-20 17:27:35 +00:00
head.1
head.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
hostname.1
hostname.c
join.1
join.c Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
kill.1
kill.c
link.1
link.c
ln.1
ln.c
logger.1
logger.c
logname.1
logname.c
ls.1
ls.c ls: check for the index size before using it in visit() 2016-02-18 14:18:49 +00:00
md5.h
md5sum.1
md5sum.c
mkdir.1
mkdir.c
mkfifo.1
mkfifo.c
mktemp.1
mktemp.c
mv.1
mv.c mv: Ensure stat is initialized when we prune a tree 2015-11-13 14:21:07 +00:00
nice.1
nice.c Check if PRIO_MIN and PRIO_MAX are defined 2015-12-15 17:05:21 +00:00
nl.1
nl.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
nohup.1
nohup.c
od.1
od.c
paste.1
paste.c
pathchk.1 Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
pathchk.c Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
printenv.1
printenv.c
printf.1 Change the note in printf.1 on octal escapes 2016-02-21 08:52:48 +00:00
printf.c printf: replace strtonum with strtol functions in conversions 2016-03-01 11:14:42 +00:00
pwd.1
pwd.c
queue.h
readlink.1 readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
readlink.c readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
renice.1
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rm.1
rm.c
rmdir.1
rmdir.c
sed.1
sed.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
seq.1
seq.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
setsid.1
setsid.c
sha1.h
sha1sum.1
sha1sum.c
sha224.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha224sum.1 add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha224sum.c add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha256.h
sha256sum.1
sha256sum.c
sha384.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha384sum.1 add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha384sum.c add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha512-224.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-224sum.1 add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-224sum.c add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256sum.1 add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256sum.c add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c
sort.1 Forgot to bump date for sort(1) manpage 2016-02-17 08:43:15 +00:00
sort.c Add -d, -f and -i flags to sort(1) 2016-02-16 09:56:48 +00:00
split.1
split.c Fix type mismatch in split(1) 2015-11-26 10:35:46 +00:00
sponge.1
sponge.c
strings.1
strings.c
sync.1
sync.c
tail.1
tail.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
tar.1 tar: support -f - for stdin/out 2016-02-15 10:20:12 +00:00
tar.c tar: make remove(3) non-fatal when extracting 2016-02-15 14:27:10 +00:00
tee.1
tee.c
test.1
test.c
text.h
tftp.1
tftp.c Include sys/time.h for timeval structure 2015-11-13 11:32:11 +00:00
time.1
time.c Fix type mismatches 2015-11-26 10:35:46 +00:00
touch.1
touch.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
tr.1
tr.c
true.1
true.c
tsort.1 tsort.1: use mandoc literal block for example 2016-02-26 09:54:46 +00:00
tsort.c tsort style fixes 2016-02-24 15:57:33 +00:00
tty.1
tty.c
uname.1
uname.c
unexpand.1
unexpand.c
uniq.1
uniq.c
unlink.1
unlink.c
utf.h
util.h Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
uudecode.1
uudecode.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
uuencode.1
uuencode.c
wc.1
wc.c Fix wc(1) output for large files 2016-02-24 14:45:20 +00:00
which.1
which.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
whoami.1 Add whoami(1) 2015-12-14 10:14:07 +00:00
whoami.c Fix style issue in whoami which broke the sbase-box target 2015-12-14 11:59:48 +00:00
xargs.1
xargs.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
xinstall.1 Add missing .El to xinstall.1 2016-02-18 10:56:42 +00:00
xinstall.c install: treat target as file by default instead of dir 2016-02-18 10:48:16 +00:00
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,
'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             .
 #*|x cols            .
 =*|o comm            .
0=*|o cp              (-i)
0=*|x cron            .
 #*|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           .
 #*|o fold            .
0=*|o getconf         (-v)
 =*|o grep            .
 =*|o head            .
0=*|x hostname        .
0=*|x install         .
 =* o join            .
0=*|o kill            .
0=*|o link            .
0=*|o ln              .
 =*|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 mktemp          .
0=*|o mv              (-i)
0=*|o nice            .
 #*|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=*|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           .
 #*|o sort            .
0=*|o split           .
0=*|x sponge          .
0#*|o strings         .
0=*|x sync            .
 =*|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        .
 =*|o uniq            .
0=*|o unlink          .
0=*|o uudecode        .
0=*|o uuencode        .
0#*|o wc              .
0=*|x which           .
0=*|x whoami          .
 =*|o xargs           (-p)
0=*|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/