suckless unix tools https://core.suckless.org/sbase
Go to file
2015-02-20 14:36:50 +01:00
libutf Fix isprintrune()'s behaviour 2015-02-15 16:27:45 +01:00
libutil Fix recurse() prototype and convert char to int flags 2015-02-16 16:23:12 +00:00
arg.h ARGNUMF() only works on base 10 as it uses strtonum underneath 2015-01-30 16:45:44 +00:00
basename.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
basename.c Clean up #includes 2015-02-14 21:12:23 +01:00
cal.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
cal.c Convert cal(1) to strtonum 2015-01-30 16:01:37 +01:00
cat.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
cat.c Clean up #includes 2015-02-14 21:12:23 +01:00
chgrp.1 chgrp: Update program usage and manpage 2015-02-16 16:33:39 +00:00
chgrp.c chgrp: Update program usage and manpage 2015-02-16 16:33:39 +00:00
chmod.1 chmod: Add -HLP flags and update manpage 2015-02-16 16:47:07 +00:00
chmod.c chmod: Add -HLP flags and update manpage 2015-02-16 16:47:07 +00:00
chown.1 chown: Update program usage and manpage 2015-02-17 16:41:58 +00:00
chown.c chown: Update program usage and manpage 2015-02-17 16:41:58 +00:00
chroot.1 Finish up chroot(1) and md5sum(1) 2015-01-31 23:54:51 +01:00
chroot.c Finish up chroot(1) and md5sum(1) 2015-01-31 23:54:51 +01:00
cksum.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
cksum.c Clean up #includes 2015-02-14 21:12:23 +01:00
cmp.1 Refactor cmp(1) code and manpage 2015-02-07 21:05:33 +01:00
cmp.c Clean up #includes 2015-02-14 21:12:23 +01:00
cols.1 Add COLUMNS support to cols(1) 2015-02-19 11:25:51 +00:00
cols.c Add COLUMNS support to cols(1) 2015-02-19 11:25:51 +00:00
comm.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
comm.c Clean up #includes 2015-02-14 21:12:23 +01:00
compat.h Add compat.h 2014-11-17 15:46:28 +00:00
config.mk Import strcasestr() from musl and remove -D_GNU_SOURCE 2014-11-20 23:46:06 +00:00
cp.1 cp: Update program usage and manpages 2015-02-17 16:14:42 +00:00
cp.c cp: Remove unnecessary comment 2015-02-18 17:08:52 +00:00
cron.1 cron.1: path macro for /etc/crontab 2015-02-06 15:43:23 +01:00
cron.c Remove redundant definition of argv0 2015-02-16 16:12:36 +00:00
crypt.h checksum tools: implement -c 2014-03-23 18:02:39 +00:00
cut.1 man pages: fix some typos 2015-02-01 21:28:17 +01:00
cut.c Clean up #includes 2015-02-14 21:12:23 +01:00
date.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
date.c Clean up #includes 2015-02-14 21:12:23 +01:00
dirname.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
dirname.c Clean up #includes 2015-02-14 21:12:23 +01:00
du.1 Update manpage for du(1) 2015-02-18 20:42:23 +00:00
du.c Don't terminate du(1) if chdir(2) fails 2015-02-18 22:04:32 +01:00
echo.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
echo.c Clean up #includes 2015-02-14 21:12:23 +01:00
env.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
env.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
expand.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
expand.c expand, unexpand: Minor style fix as per the suckless guide 2015-02-17 12:14:44 +00:00
expr.1 Add periods in expr.1 2015-02-10 00:34:47 +01:00
expr.c Don't be too pedantic in expr.c 2015-02-20 13:45:57 +01:00
false.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
false.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
find.c code-style: unindent one level of switch 2015-02-20 13:29:38 +01:00
fold.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
fold.c Clean up #includes 2015-02-14 21:12:23 +01:00
fs.h Fix recurse() prototype and convert char to int flags 2015-02-16 16:23:12 +00:00
grep.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
grep.c Clean up #includes 2015-02-14 21:12:23 +01:00
head.1 Make wording more consistent in head.1 and tail.1 2015-02-09 20:04:54 +01:00
head.c Clean up #includes 2015-02-14 21:12:23 +01:00
hostname.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
hostname.c Clean up #includes 2015-02-14 21:12:23 +01:00
kill.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
kill.c Add some missing includes 2015-02-14 20:15:01 +00:00
LICENSE Update LICENSE 2015-02-18 12:30:34 +01:00
link.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
link.c Clean up #includes 2015-02-14 21:12:23 +01:00
ln.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
ln.c Clean up #includes 2015-02-14 21:12:23 +01:00
logger.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
logger.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
logname.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
logname.c Fix coding style 2014-11-13 18:08:43 +00:00
ls.1 ls: add support for -p 2015-02-19 18:52:13 +00:00
ls.c ls: add support for -p 2015-02-19 18:52:13 +00:00
Makefile Add initial find(1) implementation 2015-02-20 10:17:16 +00:00
md5.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
md5sum.1 Finish up chroot(1) and md5sum(1) 2015-01-31 23:54:51 +01:00
md5sum.c Finish up chroot(1) and md5sum(1) 2015-01-31 23:54:51 +01:00
mkdir.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
mkdir.c Clean up #includes 2015-02-14 21:12:23 +01:00
mkfifo.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
mkfifo.c Clean up #includes 2015-02-14 21:12:23 +01:00
mktemp.1 Finish up printenv(1) 2015-02-01 00:23:38 +01:00
mktemp.c Clean up #includes 2015-02-14 21:12:23 +01:00
mv.1 mv: Remove -i from usage and manpage 2015-02-19 14:56:02 +00:00
mv.c mv: Remove -i from usage and manpage 2015-02-19 14:56:02 +00:00
nice.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
nice.c Clean up #includes 2015-02-14 21:12:23 +01:00
nl.1 Implement nl -w width 2015-02-20 12:15:43 +00:00
nl.c Add missing limits.h include for nl(1) 2015-02-20 12:21:46 +00:00
nohup.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
nohup.c Clean up #includes 2015-02-14 21:12:23 +01:00
paste.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
paste.c Clean up #includes 2015-02-14 21:12:23 +01:00
printenv.1 Finish up printenv(1) 2015-02-01 00:23:38 +01:00
printenv.c Style fix 2014-11-16 13:17:06 +00:00
printf.1 Add printf(1) 2015-02-15 14:46:58 +01:00
printf.c Fix \c behaviour 2015-02-16 10:31:13 +01:00
pwd.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
pwd.c Clean up #includes 2015-02-14 21:12:23 +01:00
queue.h Use queue.h in grep(1) 2014-11-16 12:39:15 +00:00
readlink.1 Edit readlink.1 and document missing flags 2015-02-01 00:43:43 +01:00
readlink.c code-style: unindent one level of switch 2015-02-20 13:29:38 +01:00
README Implement nl -w width 2015-02-20 12:15:43 +00:00
renice.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
renice.c Clean up #includes 2015-02-14 21:12:23 +01:00
rm.1 rm: Remove -i from usage and manpage 2015-02-19 14:54:12 +00:00
rm.c rm: Remove -i from usage and manpage 2015-02-19 14:54:12 +00:00
rmdir.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
rmdir.c Clean up #includes 2015-02-14 21:12:23 +01:00
sed.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
seq.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
seq.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
setsid.1 Finish up setsid(1) 2015-02-01 00:47:32 +01:00
setsid.c Clean up #includes 2015-02-14 21:12:23 +01:00
sha1.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
sha1sum.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
sha1sum.c Simplify sha*sum.c 2015-02-17 10:08:28 +01:00
sha256.h Add sha256sum(1) 2013-07-20 13:20:16 -04:00
sha256sum.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
sha256sum.c Simplify sha*sum.c 2015-02-17 10:08:28 +01:00
sha512.h Add sha512sum(1) 2013-08-04 11:00:34 -04:00
sha512sum.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
sha512sum.c Simplify sha*sum.c 2015-02-17 10:08:28 +01:00
sleep.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
sleep.c Clean up #includes 2015-02-14 21:12:23 +01:00
sort.1 sort: minor manual page adjustments 2015-02-01 21:46:58 +01:00
sort.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
split.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
split.c Clean up #includes 2015-02-14 21:12:23 +01:00
sponge.1 Refactor sponge(1) code and manpage 2015-02-08 22:17:21 +01:00
sponge.c Refactor sponge(1) code and manpage 2015-02-08 22:17:21 +01:00
strings.1 Add UTF-8-support to strings(1), add t-flag and refactor code 2015-02-17 17:04:36 +01:00
strings.c Refactor strings(1) loop again 2015-02-17 18:18:54 +01:00
sync.1 Refactor sync(1) code and manpage 2015-02-08 22:08:14 +01:00
sync.c Add arg.h-handling to sync(1) and unlink(1) 2015-02-08 22:13:50 +01:00
tail.1 Make wording more consistent in head.1 and tail.1 2015-02-09 20:04:54 +01:00
tail.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
tar.1 tar.1: add symbolic link dereferencing to manpage 2015-02-09 22:54:53 +00:00
tar.c tar: Style fix 2015-02-17 09:13:15 +00:00
tee.1 Add .Os sbase and sed replace to .Os sbase $(VERSION) in make install 2015-01-31 19:37:03 +00:00
tee.c Clean up #includes 2015-02-14 21:12:23 +01:00
test.1 fix some mandoc warnings 2015-02-10 17:37:57 +01:00
test.c Clean up #includes 2015-02-14 21:12:23 +01:00
text.h Use size_t for number of lines in linebuf 2015-01-31 22:49:43 +00:00
TODO Add initial find(1) implementation 2015-02-20 10:17:16 +00:00
touch.1 Add proper d- and t-flag support to touch(1) 2015-02-19 18:54:56 +01:00
touch.c Get rid of the %Z-flag in strptime-format 2015-02-19 19:27:17 +01:00
tr.1 Update escape-sequence information in tr.1 2015-02-15 14:56:49 +01:00
tr.c Clean up #includes 2015-02-14 21:12:23 +01:00
true.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
true.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
tty.1 Refactor tty(1) code and manpage 2015-02-07 22:00:28 +01:00
tty.c Refactor tty(1) code and manpage 2015-02-07 22:00:28 +01:00
uname.1 Refactor uname(1) code and manpage 2015-02-07 22:15:56 +01:00
uname.c Clean up #includes 2015-02-14 21:12:23 +01:00
unexpand.1 Refactor unexpand(1) code and manpage, adding tablist support 2015-02-08 21:24:22 +01:00
unexpand.c unexpand: spaces to tabs 2015-02-20 13:29:38 +01:00
uniq.1 uniq: Add standards section to manpage and update README 2015-02-11 15:55:58 +00:00
uniq.c uniq: corrected arg syntax in usage() 2015-02-19 14:57:09 +00:00
unlink.1 Refactor unlink(1) code and manpage 2015-02-08 21:59:59 +01:00
unlink.c Add arg.h-handling to sync(1) and unlink(1) 2015-02-08 22:13:50 +01:00
utf.h Scrap chartorunearr(), introducing utftorunestr() 2015-02-11 21:32:09 +01:00
util.h Fix recurse() prototype and convert char to int flags 2015-02-16 16:23:12 +00:00
uudecode.1 Fix section order in uudecode.1 2015-02-13 11:37:17 +00:00
uudecode.c uudecode: add newline to out-of-range error 2015-02-20 14:36:50 +01:00
uuencode.1 Update uuencode manpage and mark as complete in README 2015-02-13 11:38:52 +00:00
uuencode.c code-style: minor cleanup and nitpicking 2015-02-20 13:29:38 +01:00
wc.1 Finish up wc(1) 2015-02-01 03:01:11 +01:00
wc.c Clean up #includes 2015-02-14 21:12:23 +01:00
xargs.1 xargs.1: dont justify text, remove " " 2015-02-06 15:43:46 +01:00
xargs.c Clean up #includes 2015-02-14 21:12:23 +01:00
yes.1 Finish up yes(1) by adding multiple string support 2015-02-01 02:13:47 +01:00
yes.c Clean up #includes 2015-02-14 21:12:23 +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 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           yes                          none
=* chmod           yes                          none
=* chown           yes                          none
=* 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                          -u
=* dirname         yes                          none
=* du              yes                          none
=* echo            yes                          none
=* env             yes                          none
#* expand          yes                          none
=* expr            yes                          none
=* false           yes                          none
=  find            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                           -A, (-C), -R, -S, -f, -m, -n, -s, -x
=* 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
=* nohup           yes                          none
#* paste           yes                          none
=* printenv        non-posix                    none
#* printf          yes                          none
=* 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         yes                          none
=* 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/