suckless unix tools
Go to file
Brandon Pribula d458fa2c7b fix: update man pages to standard mdoc date format
When viewing sbase's man pages the date displayed at the bottom is
the current date rather than the date entered in the <program>.1
file.

According to this:

https://mandoc.bsd.lv/mdoc/details/date.html

The traditional man date format used by sbase (.Dd year-month-day)
is no longer recommended and no longer supported by GNU troff or
Heirloom Docs and as a result the current date is displayed instead.
Although this format is still accepted by mandoc for backward
compatibility.

For portability it states the standard mdoc date format should be
used instead: .Dd month day, year

I applied the following patch to sbase's last commit b30fb56 and
it fixes the issue.
2024-09-08 08:35:39 +02:00
libutf libutf: add some const's 2023-04-12 21:22:28 -07:00
libutil libutil: Remove free() from strnsub() 2023-09-22 11:44:58 +02:00
scripts build: Fix sbase-box-install target 2024-03-12 17:11:35 +01:00
.gitignore sbase-box: Simplify Makefile rule 2023-09-27 07:10:05 +02:00
LICENSE Fix LICENSE name 2022-03-22 17:20:51 -07:00
Makefile build: Fix sbase-box-install target 2024-03-12 17:11:35 +01:00
README README: Add dd(1) to tool list 2021-06-17 19:09:25 -07:00
TODO ed: Add other pending bug 2024-03-22 04:39:25 +01:00
arg.h
basename.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
basename.c basename: support -- 2018-07-07 12:16:11 +01:00
cal.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cal.c cal: Centre month and year above calendar 2019-04-28 14:10:38 -07:00
cat.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cat.c concat: Use plain read/write instead of buffered stdio 2017-07-14 07:50:47 +02:00
chgrp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
chgrp.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chmod.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
chmod.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chown.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
chown.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
chroot.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cmp.c cmp: Make output of error message POSIX compliant 2023-04-12 21:37:04 -07:00
cols.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cols.c
comm.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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 build: Posixfy the Makefile 2023-09-27 09:46:39 +02:00
cp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cp.c cp: Default to -P when -R is specified 2019-12-21 21:26:19 -08:00
cron.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cron.c
crypt.h
cut.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
cut.c
date.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
date.c date: Fix default format string 2019-04-12 19:40:34 -07:00
dd.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
dd.c dd: Consider block count in inner read loop 2023-04-12 20:47:34 -07:00
dirname.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
dirname.c dirname: support -- 2018-07-07 12:16:15 +01:00
du.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
du.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
echo.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
echo.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ed.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
ed.c ed: Handle correctly lines in substitutions 2023-12-29 20:27:23 +01:00
env.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
env.c
expand.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
expand.c
expr.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
expr.c expr: tonum: handle case where result was previously calculated 2024-01-31 05:00:51 +01:00
false.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
false.c
find.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
find.c find: Make parameter error messages more specific 2023-11-14 19:36:18 +01:00
flock.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
flock.c
fold.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
fold.c fold: fix handling of -s 2020-10-14 15:03:20 -07:00
fs.h libutil/recurse: Use a single path buffer, and directory fd 2020-03-05 00:45:53 -08:00
getconf.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
getconf.c getconf: Add an explicit return at the end of main 2020-03-01 16:40:01 -08:00
grep.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
grep.c grep: Fix exit status on use of -l 2019-05-20 12:38:54 -07:00
head.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
head.c
hostname.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
join.c
kill.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
kill.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
link.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
ln.c
logger.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
logger.c
logname.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
logname.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
ls.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
ls.c ls, tar: Guard inclusion of sys/sysmacros.h by absence of `major` definition 2019-08-05 14:38:32 -07:00
md5.h
md5sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
md5sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
mkdir.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mkdir.c
mkfifo.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mkfifo.c mkfifo: Simplify -m handling 2019-06-13 13:45:37 -07:00
mknod.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mknod.c mknod: Add support for making FIFOs 2020-03-01 16:33:18 -08:00
mktemp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mktemp.c
mv.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
mv.c mv: Move on to other files if rename fails with something other than EXDEV 2021-07-30 12:24:32 -07:00
nice.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
nice.c
nl.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
nl.c
nohup.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
nohup.c nohup: Open nohup.out WRONLY 2021-10-23 16:17:20 -07:00
od.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
od.c od: For the 'c' type, format non-printable charecters as octal 2018-02-25 23:01:57 -08:00
paste.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
paste.c paste: Minor style tweaks 2020-04-15 16:13:22 -07:00
pathchk.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
pathchk.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
printenv.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02: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 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
printf.c printf: allow flags for the %s format string aswell 2021-07-26 20:10:09 +02:00
pwd.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
pwd.c
queue.h
readlink.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
readlink.c
renice.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
renice.c
rev.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
rev.c
rm.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
rm.c Remove unnecessary initializers of recursor members 2020-06-23 02:20:41 -07:00
rmdir.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
rmdir.c
sed.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sed.c sed: Include filename in error message 2020-02-20 21:49:11 -08:00
seq.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
seq.c
setsid.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
setsid.c setsid: fix usage information for -f flag 2022-06-20 12:39:59 +02:00
sha1.h
sha1sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha1sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha224.h
sha224sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha256.h
sha256sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha384.h
sha384sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha384sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512-224.h
sha512-224sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512-224sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08: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 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512-256sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sha512.h
sha512sum.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sha512sum.c *sum: Ignore -b and -t flags 2020-03-05 00:45:53 -08:00
sleep.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
sort.c sort: Don't do fallback top-level sort in check mode 2020-01-03 15:42:33 -08:00
split.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
split.c
sponge.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
strings.c strings: Rename `len` to `min` 2021-01-14 21:46:30 -08:00
sync.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02: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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tail.c
tar.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tar.c tar: chktar: fix conditional typo 2024-03-06 16:00:10 +01:00
tee.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tee.c
test.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
test.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
text.h
tftp.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tftp.c
time.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
time.c
touch.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
touch.c
tr.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tr.c tr: fix behavior of cflag when using character classes 2023-09-21 15:27:01 +02:00
true.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
true.c
tsort.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
tsort.c Remove unnecessary ';' after ARGEND 2019-06-29 18:39:07 -07:00
tty.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
uname.c uname: check that no operands are specified 2018-09-24 13:04:06 -07:00
unexpand.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
unexpand.c
uniq.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
uniq.c
unlink.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +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 paste: Support -d '\0' 2020-04-15 16:11:12 -07:00
util.h xargs: add replace string flag (-I) 2023-09-22 10:34:36 +02:00
uudecode.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
uudecode.c
uuencode.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
uuencode.c
wc.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
wc.c wc: Removing output padding 2019-12-21 20:19:08 -08:00
which.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
which.c which: check AT_EACCESS 2019-07-30 07:40:35 -07:00
whoami.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
whoami.c Handle { NULL } argv[] properly in manual arg-reduction 2017-08-05 23:50:39 +02:00
xargs.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
xargs.c xargs: Read full lines is -I 2023-09-22 14:19:36 +02:00
xinstall.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
xinstall.c install: Unlink destination file on failure 2020-05-24 20:58:36 -07:00
yes.1 fix: update man pages to standard mdoc date format 2024-09-08 08:35:39 +02:00
yes.c yes: Simplify, only support one argument 2019-10-31 18:14:18 -07:00

README

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 dd              .
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/