9bf3388 Fix usage sring alignment in sha1sum
~nabijaczleweli pushed to ~nabijaczleweli/voreutils git
ad1a498 HISTORYise echo.1. Proof echo.1, link.1, unlink.1, and sync.1
~nabijaczleweli pushed to ~nabijaczleweli/voreutils git
Drop-in Policy-compatible coreutils replacement, at the very least.
This probably wants a better blurb.
GNU coreutils provide the following 105 binaries, according to dpkg -L coreutils | grep bin/
on Buster (8.30-3):
splice(2)
s by default-n
only-l string -eq ...
--output-error
is multiple levels of wrong[
[=e=]
as e
: this matches 4.4BSD and GNU tr, but is nevertheless a missing POSIX feature; could also stand to do buffering lower than fgetc/fputc, as I imagine the overhead of calling those for each byte is noninsignificant locked I/O 33MB/s, unlocked I/O 46.6, GNU tr 180-200TODO: re-visit the early utilities' pages
TODO: multicalls should default to something rather than abort when appropriate like netbsd id(1) maybe?
TODO: should posix_fadvise(sequential) where appropriate maybe?
TODO: support SMACK in addition to SELinux? or don't either way, rip it out (rm
has it) or add it in
TODO: support TrustedBSD maybe?
TODO: filesize.js-style (include/vore-human
) sizing might be a bit suboptimal for this (df
) sort of display?
TODO? does "UNIX Programmer's Manual" want to have some part/entirety .Tn
ed
TODO: some sort of consistent uid/gid/pwent/grent caching?
You'll need a non-ancient C[++] toolchain, a POSIX AWK, GNU make, and mandoc (linting and HTML manuals only, MANDOC=true
to disable).
libb2
and libcrypto
are required (searched with pkg-config
if available). It'd be just libcrypto
if the implementation correctly used the result size in EVP_MD.
libselinux-dev
and pkg-config
will provide SELinux support.
Run GNU make. See the head of the Makefile for tunables,
notably VOREUTILS_VERSION
, derived from git HEAD by default,
and VOREUTILS_DATE{,_MODE}
, derived from the latest git commit affecting each file by default,
OUTDIR
(and {CMD,MAN,HTMLMAN}DIR
) where artifacts land, and
OBJDIR
where intermediate objects land; these can all be set independently,
SYMLINK
, if set to "y", will link binary altnames together symbolically.
VOREUTILS_LIB_PREFIX
(/usr/lib/voreutils/
) is the location of libstdbuf
.
Who knows yet!
The version is included in each output file, via the .version
directive (=> it ends up in .note
).
Unlocked stdio used by default, toggle comment in include/vore-stdio
to disable (for testing or otherwise).
TODO: temporarily permanently disabled for testing; enable later.
If C++ were good, gcc would have [[no_destroy]]
; it doesn't: use placement new
for (function-)static maps et al. like rm.cpp
.
Ideally we could do the same to main()
-scope variables, but it's too verbose.
The environment block is read-only (except as hidden by libc et al., but that's hidden) – argv and environ are const char * const *
.
argc
doesn't exist because argv
is a forward iterator: consecutive elements are *(argv + n)
; argv[0]
is self.
Enable in-line eqn(1) with
.EQ
delim %%
.EN
(or whichever delimiter is best) after .Sh DESCRIPTION
and disable it at the end.
If typesetting something that doesn't work in nroff mode (like the big equations in base64.1
) provide an .ie n
/.el
alternative in .Fn
-like syntax;
otherwise (like the polynomial in cksum.1
) enable eqn(1) preprocessing in man(1) by starting with '\" e
.
If typesetting something that doesn't work in troff mode, prefer .ie t
(cf. pathchk.1
).
In mandoc delimited eqn(1) breaks conditionals,
wrap them in braces (.el \{ [text] % eqn % [text] \}
).
Need to be attached to a teletype. Use script(1)
, for example, if the test environment doesn't allocate one by default.
Free UNIXes, hopefully. Debian, OpenBSD, and FreeBSD are on CI, as normal, bare, and fucked baselines, respectively. I also test on NetBSD (and TODO: some Illumos distro) before release.
Send a patch inline, as an attachment, or a git link and a ref to pull from to the list (~nabijaczleweli/voreutils@lists.sr.ht) or me directly. I'm not picky, just please include the repo name in the subject prefix.
Please use the tracker, the list, or Twitter.
Except where noted otherwise (e.g. in the headers of files from NetBSD) (if there end up being any), all contents of this repository are subject to the 0-clause BSD licence.
To all who support further development on Patreon, in particular: