suckless unix tools https://core.suckless.org/sbase
Go to file
Michael Forney 22921a859f Fix various lint warnings in manuals
Fix "new sentence, new line" warnings throughout so that formatters
can produce correct spacing between sentences.

join.1
  Remove unnecessary Ns macros. These are not necessary for delimeters,
  which get special treatment.

xinstall.1
  Fix date in manual. The contents were last modified on 2016-12-03,
  so use that instead of the invalid date.

grep.1
  Fix escape sequence for `\<` and `\>`.

ed.1
  Remove spurious `\\n` escape for the null-command.
2020-03-01 15:32:11 -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 Add .gitignore 2019-06-28 00:10:10 -07: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 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 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 Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
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: Ensure output was written successfully 2017-09-03 17:26:04 -07: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 Add .gitignore 2019-06-28 00:10:10 -07: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 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
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 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
README Don't justify text in README 2019-06-30 13:17:17 -07: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 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 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 Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
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 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/