Mirror of Suckless' sbase (git://git.suckless.org/sbase)
Go to file
FRIGN 3a04302c66 Audit chown(1)
Similar to the chgrp(1)-audit:
1) Refactor manpage so it's actually fun to read
2) BUGFIX: Call (l)chown properly when the H-flag is specified
   (only when depth > 0)
3) BUGFIX: Call (l)chown properly when the h-flag is specified
   (only when depth = 0).
4) BUGFIX: Only recurse() in chgrp() when the initial chownf()
   succeeds.
5) Style fixes, argv-basing.
6) Rename status to ret for consistency.
7) Add blank line before return.
2015-03-09 00:42:23 +01:00
libutf
libutil Fix off-by-one in apathmax() as the path is relative to "/" 2015-03-06 23:50:39 +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
basename.c
cal.1 Audit cal(1) 2015-03-08 21:28:32 +01:00
cal.c
cat.1
cat.c Make already audited tools argv-centric instead of argc-centric 2015-03-02 14:19:26 +01:00
chgrp.1 Audit chgrp(1) 2015-03-08 23:31:59 +01:00
chgrp.c
chmod.1
chmod.c staticize some functions 2015-03-07 13:33:39 +01:00
chown.1 Audit chown(1) 2015-03-09 00:42:23 +01:00
chown.c Audit chown(1) 2015-03-09 00:42:23 +01:00
chroot.1
chroot.c Audit chroot(1) 2015-03-02 17:46:45 +01:00
cksum.1
cksum.c
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
col.1
col.c
cols.1 Audit cols(1) 2015-03-08 19:49:59 +01:00
cols.c
comm.1
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 Add info about NetBSD to config.mk 2015-02-20 16:24:17 +00:00
cp.1 Audit cp(1) 2015-03-02 19:15:19 +01:00
cp.c
cron.1
cron.c Remove redundant definition of argv0 2015-02-16 16:12:36 +00:00
crypt.h Refactor cryptcheck() to allow multiple list-files and stdin 2015-03-01 22:51:52 +01:00
cut.1 man pages: fix some typos 2015-02-01 21:28:17 +01:00
cut.c
date.1
date.c
dirname.1
dirname.c
du.1
du.c
echo.1
echo.c Make already audited tools argv-centric instead of argc-centric 2015-03-02 14:19:26 +01:00
env.1
env.c
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
expr.1 Add periods in expr.1 2015-02-10 00:34:47 +01:00
expr.c
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
find.1 add find.1, sed.1, time.1 stubs 2015-02-28 13:46:20 +01:00
find.c
fold.1 fold: Fix usage and manpage for -width 2015-03-05 08:16:58 +00:00
fold.c
fs.h
grep.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
grep.c
head.1
head.c Small fix in head.c 2015-03-06 00:32:22 +01:00
hostname.1 Audit hostname(1) 2015-02-28 21:22:55 +01:00
hostname.c
kill.1
kill.c grep, kill, renice, sort: style: put main at bottom 2015-03-08 12:51:33 +01:00
LICENSE
link.1
link.c Audit unlink(1) 2015-02-28 20:05:22 +01:00
ln.1 Audit ln(1) 2015-03-05 21:14:43 +01:00
ln.c Audit ln(1) 2015-03-05 21:14:43 +01:00
logger.1 Audit logger(1) 2015-03-07 00:10:22 +01:00
logger.c
logname.1
logname.c
ls.1
ls.c ls: add -n option 2015-02-22 12:30:47 +00:00
Makefile
md5.h Add crypt.[ch] and update md5sum and sha1sum 2013-07-18 09:51:17 -04:00
md5sum.1 Update *sum(1)-manpages and mark them as finished and audited 2015-03-01 22:59:20 +01:00
md5sum.c
mkdir.1
mkdir.c
mkfifo.1
mkfifo.c Audit mkfifo(1) 2015-03-02 17:25:29 +01:00
mktemp.1
mktemp.c Clean up #includes 2015-02-14 21:12:23 +01:00
mv.1
mv.c
nice.1 Audit nice(1) 2015-03-02 16:53:13 +01:00
nice.c
nl.1 Implement nl -n format 2015-02-20 14:12:48 +00:00
nl.c
nohup.1 Add EXIT STATUS to nohup.1 2015-03-05 00:27:36 +01:00
nohup.c
paste.1
paste.c Clean up #includes 2015-02-14 21:12:23 +01:00
printenv.1
printenv.c
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 Audit pwd(1) 2015-03-03 17:24:14 +01:00
pwd.c
queue.h
readlink.1
readlink.c
README Audit chown(1) 2015-03-09 00:42:23 +01:00
renice.1
renice.c
rm.1
rm.c
rmdir.1
rmdir.c Add argv0 to usage() in rmdir.c 2015-03-02 16:24:08 +01:00
sed.1 add find.1, sed.1, time.1 stubs 2015-02-28 13:46:20 +01:00
sed.c
seq.1 man pages: improve consistency 2015-02-01 20:52:28 +01:00
seq.c
setsid.1 Finish up setsid(1) 2015-02-01 00:47:32 +01:00
setsid.c
sha1.h
sha1sum.1
sha1sum.c
sha256.h Add sha256sum(1) 2013-07-20 13:20:16 -04:00
sha256sum.1 Update *sum(1)-manpages and mark them as finished and audited 2015-03-01 22:59:20 +01:00
sha256sum.c Refactor cryptcheck() to allow multiple list-files and stdin 2015-03-01 22:51:52 +01:00
sha512.h
sha512sum.1 Update *sum(1)-manpages and mark them as finished and audited 2015-03-01 22:59:20 +01:00
sha512sum.c Refactor cryptcheck() to allow multiple list-files and stdin 2015-03-01 22:51:52 +01:00
sleep.1
sleep.c Audit sleep(1) 2015-02-28 20:10:25 +01:00
sort.1
sort.c grep, kill, renice, sort: style: put main at bottom 2015-03-08 12:51:33 +01:00
split.1
split.c staticize some functions 2015-03-07 13:33:39 +01:00
sponge.1
sponge.c
strings.1
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
tail.1 tail: Add -num to usage and fix manpage to align with head.1 2015-03-05 08:16:58 +00:00
tail.c tail: Add -num to usage and fix manpage to align with head.1 2015-03-05 08:16:58 +00:00
tar.1
tar.c Fix segmentation fault in tar(1) 2015-03-03 11:26:59 +01:00
tee.1 Audit tee(1) 2015-03-04 23:05:11 +01:00
tee.c Audit tee(1) 2015-03-04 23:05:11 +01:00
test.1
test.c test: Minor cleanup 2015-03-05 08:04:52 +00:00
text.h Use size_t for number of lines in linebuf 2015-01-31 22:49:43 +00:00
time.1 Add time(1) manpage 2015-03-05 00:22:36 +01:00
time.c
TODO
touch.1
touch.c staticize some functions 2015-03-07 13:33:39 +01:00
tr.1
tr.c
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
tty.c
uname.1
uname.c
unexpand.1
unexpand.c
uniq.1
uniq.c
unlink.1
unlink.c
utf.h Scrap chartorunearr(), introducing utftorunestr() 2015-02-11 21:32:09 +01:00
util.h
uudecode.1 Fix section order in uudecode.1 2015-02-13 11:37:17 +00:00
uudecode.c uudecode: fix no newline before EOF 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
wc.1
wc.c staticize some functions 2015-03-07 13:33:39 +01:00
xargs.1 xargs.1: dont justify text, remove " " 2015-02-06 15:43:46 +01:00
xargs.c seq, xargs: style: put main at bottom 2015-03-07 13:36:40 +01:00
yes.1 Finish up yes(1) by adding multiple string support 2015-02-01 02:13:47 +01:00
yes.c

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, '|' == audited):

    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
    col             yes                          none
=*  comm            yes                          none
=*| cp              yes                          none (-i)
=*  cron            non-posix                    none
#*  cut             yes                          none
=*| date            yes                          none
=*| 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                           (-C), -S, -f, -m, -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, -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
=*| time            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 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/