Mirror of Suckless' sbase (git://git.suckless.org/sbase)
Go to file
FRIGN a88906b423 Rever the strmem() addition and add a TODO element
strmem() was not very well thought out. The thing is the following:
If the string contains a zero character, we want to match it, and not
stop right there in place.

The "real" solution is to use memmem() where needed and replace all
functions that assume zero-terminated-strings from standard input, which
could lead to early string-breakoffs.
This requires a strict tracking of string lengths.
2016-02-26 09:54:46 +00:00
libutf Add mkrunetype.awk 2015-02-23 20:36:47 +01:00
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 sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
basename.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
cal.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cal.c cal: Highlight current day 2015-11-21 10:20:07 +00:00
cat.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cat.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
chgrp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chgrp.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
chmod.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chmod.c Add maxdepth to recurse() 2015-04-20 11:12:40 +01:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chroot.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
cksum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cksum.c cksum: Skip files with read errors and continue 2015-06-13 10:39:54 +01:00
cmp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cmp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
cols.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cols.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
comm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
comm.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
compat.h Add compat.h 2014-11-17 15:46:28 +00:00
config.mk Use -D_FILE_OFFSET_BITS=64 by default 2015-11-13 11:01:00 +00:00
cp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
cron.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cron.c Sync cron with latest scron 2015-11-06 11:01:00 +00:00
crypt.h Refactor cryptcheck() to allow multiple list-files and stdin 2015-03-01 22:51:52 +01:00
cut.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cut.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
date.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
date.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
dirname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
dirname.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
du.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
du.c Fix type mismatches 2015-11-26 10:35:46 +00:00
echo.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
echo.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
env.c env: Check unsetenv() return value 2015-11-06 10:52:49 +00:00
expand.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
expand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
expr.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
expr.c Simplify return & fshut() logic 2015-05-26 16:41:43 +01:00
false.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
false.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
find.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
find.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
flock.1 Implement -o for flock(1) to close fd before exec 2015-10-26 11:55:41 +00:00
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
fold.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
fs.h Add SILENT flag to recurse() 2015-04-20 11:12:40 +01:00
getconf.1 getconf.1: fix: end list (El) 2015-10-10 01:18:24 +02:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
grep.c grep: Change match any pattern to "^" 2016-01-20 17:27:35 +00:00
head.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
head.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
hostname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
hostname.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
join.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
join.c Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
kill.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
kill.c kill: Include strings.h for strcasecmp() 2015-04-29 16:42:49 +01:00
link.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
link.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
ln.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
ln.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
logger.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
logger.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
logname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
logname.c Add *fshut() functions to properly flush file streams 2015-04-05 09:13:56 +01:00
ls.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
ls.c ls: check for the index size before using it in visit() 2016-02-18 14:18:49 +00:00
md5.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
md5sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
md5sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mkdir.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mkdir.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mkfifo.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mkfifo.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mktemp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mktemp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
mv.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
mv.c mv: Ensure stat is initialized when we prune a tree 2015-11-13 14:21:07 +00:00
nice.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nice.c Check if PRIO_MIN and PRIO_MAX are defined 2015-12-15 17:05:21 +00:00
nl.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nl.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
nohup.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nohup.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
od.1 od: document skip (-j) option 2015-11-06 10:18:56 +00:00
od.c od: document skip (-j) option 2015-11-06 10:18:56 +00:00
paste.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
paste.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
printenv.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
printf.1 Change the note in printf.1 on octal escapes 2016-02-21 08:52:48 +00:00
printf.c Remove debug-code in printf(1) 2015-06-22 20:03:55 +01:00
pwd.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
pwd.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
queue.h Use queue.h in grep(1) 2014-11-16 12:39:15 +00:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rm.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
rmdir.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
rmdir.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sed.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sed.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
seq.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
seq.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
setsid.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
setsid.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
sha1.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
sha1sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha1sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
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 Add sha256sum(1) 2013-07-20 13:20:16 -04:00
sha256sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha256sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
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 Add sha512sum(1) 2013-08-04 11:00:34 -04:00
sha512sum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sha512sum.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sleep.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sleep.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
split.c Fix type mismatch in split(1) 2015-11-26 10:35:46 +00:00
sponge.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sponge.c Simplify return & fshut() logic 2015-05-26 16:41:43 +01:00
strings.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
strings.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sync.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
sync.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
tail.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tee.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
test.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
test.c Audit test(1) 2015-03-17 23:35:11 +01:00
text.h Use size_t for number of lines in linebuf 2015-01-31 22:49:43 +00:00
tftp.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tftp.c Include sys/time.h for timeval structure 2015-11-13 11:32:11 +00:00
time.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
time.c Fix type mismatches 2015-11-26 10:35:46 +00:00
touch.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
touch.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
tr.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tr.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
true.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
true.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tty.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
uname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uname.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
unexpand.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
unexpand.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
uniq.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uniq.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
unlink.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
unlink.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00
utf.h Scrap chartorunearr(), introducing utftorunestr() 2015-02-11 21:32:09 +01:00
util.h Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
uudecode.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uudecode.c fix length after '\' getline string termination 2016-02-26 09:54:46 +00:00
uuencode.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uuencode.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
wc.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
wc.c Fix wc(1) output for large files 2016-02-24 14:45:20 +00:00
which.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
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 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
yes.c Do not use arg.h for tools which take no flags 2015-04-25 11:43:14 +01:00

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