1
0
mirror of git://git.suckless.org/sbase synced 2024-12-22 07:01:15 +00:00
suckless unix tools
Go to file
Michael Forney eb74f374f2 getconf: Add an explicit return at the end of main
ISO C does not require that main() have an explicit return value
(if the end of the main function is reached, it is as if it returned
0). However, when built as sbase-box, the main function is turned
into getconf_main, which does not have the same special treatment.
2020-03-01 16:40:01 -08:00
libutf Add mkrunetype.awk 2015-02-23 20:36:47 +01:00
libutil chmod: Implement X perm symbol 2020-01-06 13:47:26 -08:00
.gitignore Import mknod from ubase 2020-03-01 16:33:11 -08: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 basename: support -- 2018-07-07 12:16:11 +01:00
cal.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cal.c cal: Centre month and year above calendar 2019-04-28 14:10:38 -07:00
cat.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cat.c concat: Use plain read/write instead of buffered stdio 2017-07-14 07:50:47 +02:00
chgrp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chgrp.c chgrp: Pass -1 as the owner ID to chown(3) 2019-11-01 19:03:00 -07:00
chmod.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chmod.c chmod: Implement X perm symbol 2020-01-06 13:47:26 -08:00
chown.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
chown.c chown/chgrp: chown target not symlink by default 2019-07-03 22:33:06 -07:00
chroot.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
chroot.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
cksum.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
cksum.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
cmp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cmp.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
cols.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cols.c Use the UTF8_POINT macro in cols(1) 2016-03-10 08:48:09 +00:00
comm.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
comm.c Rename struct linebufline to struct line and add linecmp() 2016-03-10 08:48:09 +00:00
compat.h
config.mk Use -D_FILE_OFFSET_BITS=64 by default 2015-11-13 11:01:00 +00:00
cp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cp.c cp: Default to -P when -R is specified 2019-12-21 21:26:19 -08: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 Don't use buffered IO (fread) when not appropriate 2017-07-03 21:04:14 +02:00
cut.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
cut.c Support NUL containing lines in cut(1) 2016-03-10 08:48:09 +00:00
date.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
date.c date: Fix default format string 2019-04-12 19:40:34 -07:00
dirname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
dirname.c dirname: support -- 2018-07-07 12:16:15 +01:00
du.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
du.c du: Don't print 0 entry if stat of named file fails 2017-07-03 21:03:04 +02:00
echo.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
echo.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ed.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
ed.c ed: Use reallocarray 2019-12-31 13:41:38 -08: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 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
expr.c expr: Allocate arrays with reallocarray instead of VLA 2019-04-16 17:44:08 -07:00
false.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
false.c
find.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
find.c find: Make -H and -L flag handling clearer 2018-09-25 19:16:19 -07:00
flock.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
fold.c Support NUL containing lines in fold(1) and reuse the line-buffer(!) 2016-03-10 08:48:09 +00:00
fs.h Add SILENT flag to recurse() 2015-04-20 11:12:40 +01:00
getconf.1 getconf: Report invalid variables as errors 2017-09-03 17:23:28 -07:00
getconf.c getconf: Add an explicit return at the end of main 2020-03-01 16:40:01 -08:00
getconf.sh getconf.sh: Be more explicit we are using a heredoc here 2016-10-05 18:48:10 +02:00
grep.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
grep.c grep: Fix exit status on use of -l 2019-05-20 12:38:54 -07:00
head.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
head.c Support NUL containing lines in head(1) 2016-03-10 08:48:09 +00:00
hostname.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
hostname.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
join.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
join.c Support NUL containing lines in join(1) 2016-03-10 08:48:09 +00:00
kill.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
kill.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
LICENSE ed: Don't match against line 0 in search() 2016-12-27 12:28:36 +01:00
link.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
link.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
ln.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
ln.c ln: Only fail if same inode without -f flag 2016-07-09 10:17:16 +01:00
logger.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08: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 Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ls.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
ls.c ls, tar: Guard inclusion of sys/sysmacros.h by absence of major definition 2019-08-05 14:38:32 -07:00
Makefile Import mknod from ubase 2020-03-01 16:33:11 -08:00
md5.h
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 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
mkdir.c mkdir: Fix created directory permissions 2017-07-03 21:03:11 +02:00
mkfifo.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
mkfifo.c mkfifo: Simplify -m handling 2019-06-13 13:45:37 -07:00
mknod.1 mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mknod.c mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mktemp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08: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 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
nl.c Support NUL containing lines in nl(1) and reuse the line-buffer(!) 2016-03-10 08:48:09 +00:00
nohup.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
nohup.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
od.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
od.c od: For the 'c' type, format non-printable charecters as octal 2018-02-25 23:01:57 -08:00
paste.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
paste.c Fix segmentation fault in paste(1) 2017-09-07 22:58:24 -07:00
pathchk.1 Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
pathchk.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
printenv.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
printenv.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
printf.1 Change the note in printf.1 on octal escapes 2016-02-21 08:52:48 +00:00
printf.c printf: handle \0 in %b arguments 2016-12-27 13:25:38 +01:00
pwd.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
pwd.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
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
README Import mknod from ubase 2020-03-01 16:33:11 -08: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
rev.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
rev.c Add rev(1) 2016-12-27 11:35:27 +01: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 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sed.c sed: Include filename in error message 2020-02-20 21:49:11 -08:00
seq.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08: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 Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
sha1.h
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
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
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 Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
sort.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sort.c sort: Don't do fallback top-level sort in check mode 2020-01-03 15:42:33 -08: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 Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
strings.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
strings.c No need for semicolon after ARGEND 2015-11-01 10:18:55 +00:00
sync.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
sync.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
tail.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tail.c tail: Process bytes with -c option, and add -m option for runes 2017-07-14 07:50:54 +02:00
tar.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tar.c ls, tar: Guard inclusion of sys/sysmacros.h by absence of major definition 2019-08-05 14:38:32 -07:00
tee.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tee.c Don't use buffered IO (fread) when not appropriate 2017-07-03 21:04:14 +02:00
test.1 Update test.1: 2016-04-20 22:57:40 +01:00
test.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
text.h concat: Use plain read/write instead of buffered stdio 2017-07-14 07:50:47 +02:00
tftp.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08: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
TODO Add a TODO-note about crypt.c 2016-12-27 14:30:51 +01:00
touch.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
touch.c touch: Avoid unnecessary call to stat 2016-07-09 10:17:16 +01:00
tr.1 tr.1: Make note of some changes in the utility 2016-10-05 21:42:24 +02:00
tr.c tr: Fix infinite loop 2017-10-21 12:44:09 -07:00
true.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
true.c
tsort.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
tsort.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
tty.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
tty.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
uname.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uname.c uname: check that no operands are specified 2018-09-24 13:04:06 -07: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 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uniq.c uniq: always store previous line length 2016-03-11 15:38:36 +00:00
unlink.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
unlink.c Revert "Do not use arg.h for tools which take no flags" 2019-06-29 18:33:48 -07:00
utf.h libutf: Adjust runelen prototype to match definition 2019-04-16 17:27:38 -07:00
util.h libutil: Rename functions in reserved namespace to prevent potential conflict 2019-05-20 16:56:07 -07:00
uudecode.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
uudecode.c Revert "fix length after '\' getline string termination" 2016-03-01 15:24:32 +00:00
uuencode.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
uuencode.c uuencode: style: just use pointer *b 2016-03-01 15:24:32 +00:00
wc.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
wc.c wc: Removing output padding 2019-12-21 20:19:08 -08:00
which.1 Use ISO-date-format in manpages 2015-10-08 17:15:08 +02:00
which.c which: check AT_EACCESS 2019-07-30 07:40:35 -07:00
whoami.1 Add whoami(1) 2015-12-14 10:14:07 +00:00
whoami.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
xargs.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
xargs.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
xinstall.1 Fix various lint warnings in manuals 2020-03-01 15:32:11 -08:00
xinstall.c install: Fix -d with more than two directories 2020-01-11 02:19:26 -08:00
yes.1 yes: Simplify, only support one argument 2019-10-31 18:14:18 -07:00
yes.c yes: Simplify, only support one argument 2019-10-31 18:14:18 -07:00

sbase - suckless unix tools
===========================

sbase is a collection of unix tools that are inherently portable across
UNIX and UNIX-like systems.

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.

Status
------

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             .
0#*|x cols            .
0=*|o comm            .
0=*|o cp              (-i)
0=*|x cron            .
0#*|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           .
0#*|o fold            .
0=*|o getconf         (-v)
 =*|o grep            .
0=*|o head            .
0=*|x hostname        .
0=*|x install         .
0=* o join            .
0=*|o kill            .
0=*|o link            .
0=*|o ln              .
0=*|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 mknod           .
0=*|x mktemp          .
0=*|o mv              (-i)
0=*|o nice            .
0#*|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#* x rev             .
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           .
0#*|o sort            .
0=*|o split           .
0=*|x sponge          .
0#*|o strings         .
0=*|x sync            .
0=*|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        .
0=*|o uniq            .
0=*|o unlink          .
0=*|o uudecode        .
0=*|o uuencode        .
0#*|o wc              .
0=*|x which           .
0=*|x whoami          .
0=*|o xargs           (-p)
0=*|x yes             .

[1] http://git.suckless.org/ubase/
[2] http://www.musl-libc.org/