21 Commits

Author SHA1 Message Date
4b3333d8d3 fop(1): record separator worky now? 2024-06-21 03:26:42 -06:00
578d947561 Merge branch 'README-clarity' 2024-06-19 23:30:03 -06:00
2e91338101 Merge branch 'makefile-posix-2024' 2024-06-19 23:29:42 -06:00
72f57ba08b Makefile: adds octal disclaimer 2024-06-19 23:29:22 -06:00
35f49a699f fop(1): fixes record separator, again 2024-06-19 15:26:46 -06:00
e1ac40e7ee docs: updates version number 2024-06-19 15:03:06 -06:00
125b4c8930 README: updated for clarity 2024-06-19 02:52:58 -06:00
f553cff096 Makefile: removes unneeded comment 2024-06-18 16:33:22 -06:00
d201f9228c Makefile: updates to use new POSIX 2024 standard features! 2024-06-18 16:32:20 -06:00
6814111ad1 dj.1: fixes many clunky sentences 2024-06-17 23:37:13 -06:00
e38dcc09b1 intcmp.1: bold 2024-06-17 23:27:19 -06:00
59eee27979 strcmp.1: or 2024-06-17 23:21:44 -06:00
bf10689606 swab.1: bold 2024-06-17 23:20:29 -06:00
266ee20d5c fop.1: removes unnecessary stdin section and adds AUTHOR 2024-06-17 23:18:45 -06:00
1b299f8ee1 rpn.1: fixes clunkiness 2024-06-17 23:16:25 -06:00
53d5a1db73 hru.1: italics and removes clunky sentences 2024-06-17 23:10:01 -06:00
ee9d42d0d4 str.1: cleanup 2024-06-17 23:02:13 -06:00
15d5761cd7 mm.1: fixes clunky sentence 2024-06-17 22:57:08 -06:00
376feb9ae9 npc.1: fixes minor details 2024-06-17 22:56:17 -06:00
314254b32f docs: hotfix 2024-06-06 13:32:54 -06:00
51421b2128 dj.1, strcmp.1, swab.1: remove nonexistent roff macros 2024-06-06 00:14:55 -06:00
16 changed files with 152 additions and 130 deletions

View File

@@ -8,11 +8,10 @@
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
.POSIX:
# The octal escape \043 is utilized twice in this file as make(1p) will
# interpret a hash in a rule as an inline comment.
# if using BSD make(1), remove these pragmas because they break it
.PRAGMA: posix_202x # future POSIX standard support à la pdpmake(1)
.PRAGMA: command_comment # breaks without this?
.POSIX:
DESTDIR ?= dist
PREFIX ?= /usr/local
@@ -32,9 +31,9 @@ CFLAGS += -I$(SYSEXITS)
.PHONY: all
all: dj false fop hru intcmp mm npc rpn scrut str strcmp swab true
# keep build/include until bindgen(1) has stdin support
# https://github.com/rust-lang/rust-bindgen/issues/2703
build:
# keep build/include until bindgen(1) has stdin support
# https://github.com/rust-lang/rust-bindgen/issues/2703
mkdir -p build/bin build/include build/lib build/o build/test
.PHONY: clean
@@ -67,9 +66,9 @@ build/o/libstrerror.rlib: build src/strerror.rs
$(RUSTC) $(RUSTFLAGS) --crate-type=lib -o $@ \
src/strerror.rs
# bandage solution until bindgen(1) gets stdin support
build/o/libsysexits.rlib: build $(SYSEXITS)sysexits.h
# bandage solution until bindgen(1) gets stdin support
printf '#define EXIT_FAILURE 1\n' | cat - $(SYSEXITS)sysexits.h \
printf '\043define EXIT_FAILURE 1\n' | cat - $(SYSEXITS)sysexits.h \
> build/include/sysexits.h
bindgen --default-macro-constant-type signed --use-core --formatter=none \
build/include/sysexits.h | $(RUSTC) $(RUSTFLAGS) --crate-type lib -o $@ -

10
README
View File

@@ -1,9 +1,11 @@
“Seek not to walk the path of the masters; seek what they sought.”
Matsuo Basho
The Bonsai core utilities are the result of the careful examination of the
current state of POSIX and Unix utilies. The Unix Philosophy, “do one thing and
do it well” is its core but these tools do not cling to the names of the past.
The Bonsai core utilities are a replacement for standard POSIX utilities which
aim to fill its niche while expanding on their capabilities. These new tools are
the result of the careful examination of the current state of POSIX and Unix
utilies. The Unix Philosophy of “do one thing and do it well” are their core but
they avoid clinging to the past.
The era of the original Unix tools has been long and fruitful, but they have
their flaws. The new, non-POSIX era of this project started with frustration
@@ -38,7 +40,7 @@ To test the utilities:
$ make test
To remove all untracked files:
To remove all build and distributable files:
$ make clean

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH DJ 1
.TH DJ 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
dj \(en disk jockey
.\"
@@ -18,41 +18,29 @@ dj
.RB [ count ])
.RB ( -i
.R [
.B input file
.R ])
[\fBinput file\fP])
.RB ( -b
.R [
.B input block size
.R ])
[\fBinput block size\fP])
.RB ( -s
.R [
.B input offset
.R ])
[\fBinput offset\fP])
.RB ( -o
.R [
.B output file
.R ])
[\fBoutput file\fP])
.RB ( -B
.R [
.B output block size
.R ])
[\fBoutput block size\fP])
.RB ( -S
.R [
.B output offset
.R ])
[\fBoutput offset\fP])
.\"
.SH DESCRIPTION
Perform precise read and write operations on files. This utility is useful for
reading and writing binary data to and from disks, hence the name.
reading and writing binary data to and from disks.
This manual page uses the terms \(lqskip\(rq and \(lqseek\(rq to refer to moving
to a specified byte by index in the input and output of the program
respectively. This language is inherited from the
.BR dd (1p)
utility and is used here to decrease ambiguity.
utility and used here to decrease ambiguity.
When seeking or skipping to a byte, writing or reading starts at the byte
immediately subsequent to the specified byte.
@@ -62,8 +50,8 @@ immediately subsequent to the specified byte.
.IP \fB-i\fP
Takes a file path as an argument and opens it for use as an input.
.IP \fB-b\fP
Takes a numeric argument as the size in bytes of the input buffer, with the
default being 1024.
Takes a numeric argument as the size in bytes of the input buffer, the default
being 1024.
.IP \fB-s\fP
Takes a numeric argument as the number of bytes to skip into the input
before starting to read. If the standard input is used, bytes read to this point
@@ -78,25 +66,25 @@ but for the output buffer.
Seeks a number of bytes through the output before starting to write from
the input. If the output is a stream, null characters are printed.
.IP \fB-a\fP
Accepts a single literal byte with which input buffer is padded in the event
Accepts a single literal byte with which the input buffer is padded in the event
of an incomplete read from the input file.
.IP \fB-A\fP
Specifying this option pads the input buffer with null bytes in the event of an
incomplete read. Equivalent to specifying
incomplete read. This is equivalent to specifying
.B -a
with a null byte instead of a character.
.IP \fB-c\fP
Specifies a number of reads to make. The default is zero, in which case the
Specifies a number of reads to make. The default is 0, in which case the
input is read until a partial or empty read is made.
.IP \fB-d\fP
Prints invocation information before program execution as described in the
DIAGNOSTICS section below. Each invocation increments the debug level of the
DIAGNOSTICS section. Each invocation increments the debug level of the
program.
.IP \fB-H\fP
Prints diagnostics messages in a human-readable manner as described in the
DIAGNOSTICS section below.
DIAGNOSTICS section.
.IP \fB-n\fP
Retries failed reads once more before exiting.
Retries failed reads once before exiting.
.IP \fB-q\fP
Suppresses error messages which print when a read or write is partial or
empty. Each invocation decrements the debug level of the program.
@@ -106,22 +94,27 @@ empty. Each invocation decrements the debug level of the program.
The standard input shall be used as an input if no inputs are specified or if
one or more of the input files is \(lq-\(rq.
.\"
.SH STANDARD OUTPUT
The standard output shall be used as an output if no inputs are specified or if
one or more of the input files is \(lq-\(rq.
.\"
.SH DIAGNOSTICS
On a partial or empty read, a diagnostic message is printed (unless the
On a partial or empty read, unless the
.B -q
option is specified) and the program exits (unless the
option is specified, a diagnostic message is printed. Then, the program exits
unless the
.B -n
option is specified).
option is specified.
By default, statistics are printed for input and output to the standard error in
the following format:
.RS
.R {records read} {ASCII unit separator} {partial records read}
.R {ASCII record separator} {records written} {ASCII unit separator}
.R {partial records written} {ASCII group separator} {bytes read}
.R {ASCII record separator} {bytes written} {ASCII file separator}
{records read} {ASCII unit separator} {partial records read}
{ASCII record separator} {records written} {ASCII unit separator}
{partial records written} {ASCII group separator} {bytes read}
{ASCII record separator} {bytes written} {ASCII file separator}
.RE
This format for diagnostic output is designed to be machine-parseable for
@@ -130,23 +123,23 @@ convenience. For a more human-readable format, the
option may be specified. In this event, the following format is used instead:
.RS
.R {records read} '+' {partial records read} '>' {records written}
.R '+' {partial records written} ';' {bytes read} '>' {bytes written}
.R {ASCII line feed}
{records read} '+' {partial records read} '>' {records written}
'+' {partial records written} ';' {bytes read} '>' {bytes written}
{ASCII line feed}
.RE
If the
.B -d
option is specified, debug output will be printed at the beginning of
execution. This debug information contains information regarding how the program
was invoked. The following example is the result of running the program with
option is specified, debug information will be printed at the beginning of
execution. This output contains information regarding how the program was
invoked. The following example is the result of running the program with
.B -d
as the only argument:
.RS
.R argv0=dj
.R in=<stdin> ibs=1024 skip=0 align=ff count=0
.R out=<stdout> obs=1024 seek=0 debug= 3 noerror=0
argv0=dj
in=<stdin> ibs=1024 skip=0 align=ff count=0
out=<stdout> obs=1024 seek=0 debug= 3 noerror=0
.RE
In non-recoverable errors that don\(cqt pertain to the read-write cycle, a
@@ -160,12 +153,12 @@ If
.B -n
is specified along with the
.B -c
option and a count, actual byte output may be lower than expected (the product
of the count and the input block size). If the
option and a count, actual byte output is the product of the count and the input
block size and therefore may be lower than expected. If the
.B -a
or
.B -A
options are used, this could make data written nonsensical.
options are specified, this could make written data nonsensical.
.\"
.SH CAVEATS

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH FALSE 1
.TH FALSE 1 2024-06-06 "Bonsai Core Utilites 0.13.11"
.SH NAME
false \(en do nothing, unsuccessfully
.\"

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH fop 1
.TH FOP 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
fop \(en field operator
.\"
@@ -18,7 +18,7 @@ fop
.\"
.SH DESCRIPTION
Performs operations on specified fields in input data.
Performs operations on specified fields in data read from the standard input.
.\"
.SH OPTIONS
@@ -26,10 +26,6 @@ Performs operations on specified fields in input data.
Sets a delimiter by which the input data will be split into fields. The default
is an ASCII record separator.
.\"
.SH STANDARD INPUT
Data will be read from the standard input.
.\"
.SH CAVEATS
Field indices are zero-indexed, which may be unexpected behavior for some users.
@@ -51,6 +47,12 @@ but there was no easy way to modify the field in the ouput of
.BR ls (1p)
without creating a new tool.
.\"
.SH AUTHOR
Written by Emma Tebibyte
.MT emma@tebibyte.media
.ME .
.\"
.SH COPYRIGHT
Copyright \(co 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later

View File

@@ -3,7 +3,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH HRU 1
.TH HRU 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
hru \(en human readable units
.\"
@@ -15,9 +15,9 @@ hru
Convert counts to higher units.
The program will read byte counts in the form of whole numbers from the standard
input and write to the standard output the same number converted to a higher
unit of data as defined by the International System of Units.
Byte counts will be read in the form of whole numbers from the standard input
and be written to the standard output the same number converted to a higher unit
of data as defined by the \fIInternational System of Units\fP.
The program will convert the byte count to the highest unit possible where the
value is greater than one.
@@ -35,10 +35,8 @@ The GNU project\(cqs
.BR ls (1)
implementation contains a human-readable option (\fB-h\fP) that, when specified,
makes the tool print size information in a format more immediately
readable. This functionality is useful not only in the context of
.BR ls (1)
so the decision was made to split it into a new tool. The original functionality
in GNU\(cqs
readable. This functionality is useful not only in this context, so the decision
was made to split it into a new tool. The original functionality from GNU\(cqs
.BR ls (1)
can be emulated with
.BR fop (1)
@@ -46,8 +44,12 @@ combined with this program.
.\"
.SH STANDARDS
The standard unit prefixes as specified by the Bureau International des Poids
et Mesures (BIPM) in the ninth edition of The International System of Units (SI)
The standard unit prefixes as specified by the
.I Bureau International des Poids et Mesures
.RI ( BIPM )
in the ninth edition of
.I The International System of Units
.RI ( SI )
are utilized for the ouput of conversions.
.\"
.SH AUTHOR
@@ -64,4 +66,4 @@ Copyright \(co 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later
.SH SEE ALSO
GNU
.BR ls (1),
The International System of Units (SI) 9th Edition
.I The International System of Units (SI) 9th Edition

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH INTCMP 1
.TH INTCMP 1 2024-06-06 "Bonsai Core Utilites 0.13.11"
.SH NAME
intcmp \(en compare integers
.\"
@@ -28,19 +28,23 @@ Permits a given integer to be less than the following integer.
.\"
.SH EXAMPLES
It may help to think of the -e, -g, and -l options as equivalent to the
infix algebraic \(lq=\(rq, \(lq>\(rq, and \(lq<\(rq operators respectively, with
each option putting its symbol between every given integer. The following
example is equivalent to evaluating \(lq1 < 2 < 3\(rq:
It may help to think of the
.BR -e ,
.BR -g ,
and
.B -l
options as equivalent to the infix algebraic \(lq=\(rq, \(lq>\(rq, and \(lq<\(rq
operators respectively, with each option putting its symbol between every given
integer. The following example is equivalent to evaluating \(lq1 < 2 < 3\(rq:
\"
.RS
.R intcmp -l 1 2 3
intcmp -l 1 2 3
.RE
.\"
.SH DIAGNOSTICS
The program will exit with a status code of 0 for a valid expression and with a
code of 1 for an invalid expression.
The program will exit with a successfully for a valid expression and with an
error code of 1 for an invalid expression.
In the event of an error, a debug message will be printed and the program will
exit with the appropriate
@@ -49,7 +53,8 @@ error code.
.\"
.SH BUGS
-egl, \(lqequal to or less than or greater than\(rq, exits 0 no matter what for
.BR -egl ,
\(lqequal to or less than or greater than\(rq, always exits successfully for
valid program usage and may be abused to function as an integer validator. Use
.BR str (1)
instead.
@@ -57,9 +62,17 @@ instead.
.SH CAVEATS
There are multiple ways to express compound comparisons; \(lqless than or equal
to\(rq can be -le or -el, for example.
to\(rq can be
.B -le
or
.BR -el ,
for example.
The inequality comparison is -gl or -lg for \(lqless than or greater than\(rq;
The inequality comparison is
.B -gl
.B or
.B -lg
for \(lqless than or greater than\(rq;
this is elegant but unintuitive.
.\"
.SH RATIONALE

View File

@@ -3,7 +3,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH mm 1
.TH MM 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
mm \(en middleman
.\"
@@ -39,8 +39,8 @@ Causes SIGINT signals to be ignored.
.\"
.SH DIAGNOSTICS
If an output cannot be written to, an error occurs. Additional outputs are not
affected and writing to them continues.
If an output cannot be written to, an error occurs; however, exiting will be
deferred until writing to any other specified outputs completes.
When an error is encountered, a diagnostic message is printed and the program
exits with the appropriate

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH NPC 1
.TH NPC 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
npc \(en show non-printing characters
.\"
@@ -25,10 +25,10 @@ becomes '^?'. Characters with the high bit set (>127) are printed as 'M-'
followed by the graphical representation for the same character without the
high bit set.
.\"
.SH USAGE
.SH OPTIONS
.IP \fB-e\fP
Prints a dollar sign ('$') before each line ending.
Prints a dollar sign ('$') before each newline.
.IP \fB-t\fP
Prints tab characters as '^I' rather than a literal horizontal tab.
.\"
@@ -52,8 +52,8 @@ the
.B -v
option, is the bandage solution GNU and other software suites use.
This functionality is a separate tool because its usefulness extends beyond that
of
This functionality is included in a separate tool because its usefulness extends
beyond that of
.BR cat (1p).
.\"
.SH AUTHOR

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH rpn 1
.TH RPN 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
rpn \(en reverse polish notation evaluation
.\"
@@ -18,12 +18,12 @@ rpn
Evaluate reverse polish notation.
The program evaluates reverse polish notation expressions either read from the
The program evaluates reverse polish notation expressions read either from the
standard input or parsed from provided arguments. See the STANDARD INPUT
section.
Upon evaluation, the program will print the resulting number on the stack to the
standard output. Any further specified numbers will be placed at the end of the
Upon evaluation, the resulting number on the stack will be printed to the
standard output. Any further numbers specified will be placed at the end of the
stack.
For information on for reverse polish notation syntax, see
@@ -31,8 +31,8 @@ For information on for reverse polish notation syntax, see
.\"
.SH STANDARD INPUT
If arguments are passed, they are interpreted as an expression to be
evaluated. Otherwise, it reads whitespace-delimited numbers and operations from
If arguments are specified, they are interpreted as an expression to be
evaluated. Otherwise, whitespace-delimited numbers and operations are read from
the standard input.
.\"
.SH DIAGNOSTICS
@@ -46,11 +46,13 @@ error message and continue accepting input.
.SH CAVEATS
Due to precision constraints and the way floats are represented in accordance
with the IEEE Standard for Floating Point Arithmetic (\fIIEEE 754\fP),
floating-point arithmetic has rounding errors. This is somewhat curbed by using
the machine epsilon as provided by the Rust standard library to which to round
numbers. Because of this, variation is expected in the number of decimal places
the program can handle based on the platform and hardware of any given machine.
with the
.I IEEE Standard for Floating Point Arithmetic
(\fIIEEE 754\fP), floating-point arithmetic has rounding errors. This is
somewhat curbed by using the machine epsilon as provided by the Rust standard
library to which numbers are rounded. Because of this, variation is expected in
the number of decimal places the program can handle based on the platform and
hardware of any given machine.
.\"
.SH RATIONALE
@@ -63,8 +65,8 @@ program. A
pre-dates the standardized
.BR bc (1p),
the latter originally being a preprocessor for the former, and was included in
UNIX v2 onward. While it implements reverse polish notation, it still suffers
from being unable to accept an expression as an argument.
Second Edition UNIX and onward. While it implements reverse polish notation, it
still suffers from being unable to accept an expression as an argument.
.\"
.SH AUTHOR

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH scrut 1
.TH SCRUT 1 2024-06-06 "Bonsai Core Utilites 0.13.11"
.SH NAME
scrut \(en scrutinize file properties
.SH SYNOPSIS

View File

@@ -4,9 +4,9 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH STR 1
.TH STR 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
str \(en test the character types of string arguments
str \(en test string arguments
.\"
.SH SYNOPSIS
@@ -16,7 +16,7 @@ str
.\"
.SH DESCRIPTION
Test string arguments.
Test the character types of string arguments.
The tests in this program are equivalent to the functions with the same names in
.BR ctype.h (0p)
@@ -24,11 +24,8 @@ and are the methods by which string arguments are tested.
.\"
.SH DIAGNOSTICS
If all tests pass, the program will exit with an exit code of 0. If any of the
tests fail, the program will exit unsuccessfully with an error code of 1.
An empty string will cause an unsuccessful exit as none of its contents pass any
tests.
If all tests pass, the program will exit successfully. If any of the tests fail,
the program will exit unsuccessfully with an error code of 1.
When invoked incorrectly, a debug message will be printed and the program will
exit with the appropriate
@@ -37,6 +34,9 @@ error code.
.\"
.SH CAVEATS
None of an empty string\(cqs contents pass any of the tests, so the program will
exit unsuccessfully if one is specified.
There\(cqs no way of knowing which argument failed the test without re-testing
arguments individually.

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH STRCMP 1
.TH STRCMP 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
strcmp \(en compare strings
.\"
@@ -25,14 +25,14 @@ will exit with an error code of 1 if a string passed has a lesser byte value
than one of the prior strings:
.RS
.R strcmp b a
strcmp b a
.RE
and with an error code of 255 if it has a greater byte value than one of the
or with an error code of 255 if it has a greater byte value than one of the
prior strings:
.RS
.R strcmp a b
strcmp a b
.RE
When invoked incorrectly, a debug message will be printed and the program will
@@ -54,7 +54,8 @@ been
This tool also handles integer comparisons and file scrutiny. These parts of its
functionality have been broken out into multiple utilities.
This program\(cqs functionality may be performed on a POSIX-compliant system with
This program\(cqs functionality may be performed on a POSIX-compliant system
with
.BR test (1p).
.\"
.SH AUTHOR

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH SWAB 1
.TH SWAB 1 2024-06-17 "Bonsai Core Utilites 0.13.11"
.SH NAME
swab \(en swap bytes
.\"
@@ -38,13 +38,13 @@ The following
line:
.RS
.R printf 'hello world!\(rsn' | swab
printf 'hello world!\(rsn' | swab
.RE
Produces the following output:
.RS
.R ehll oowlr!d
ehll oowlr!d
.RE
.\"
.SH DIAGNOSTICS
@@ -56,7 +56,9 @@ error code.
.\"
.SH RATIONALE
This program was modeled and named after the conv=swab functionality specified
This program was modeled and named after the
.B conv=swab
functionality specified
in the
.BR dd (1p)
utility. It additionally allows the word size to be configured.
@@ -64,6 +66,12 @@ utility. It additionally allows the word size to be configured.
This functionality is useful for fixing the endianness of binary files produced
on other machines.
.\"
.SH AUTHOR
Written by DTB
.MT trinity@trinity.moe
.ME .
.\"
.SH COPYRIGHT
Copyright \(co 2024 DTB. License AGPLv3+: GNU AGPL version 3 or later

View File

@@ -4,7 +4,7 @@
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
.TH TRUE 1
.TH TRUE 1 2024-06-06 "Bonsai Core Utilites 0.13.11"
.SH NAME
true \(en do nothing, successfully
.\"

View File

@@ -32,7 +32,7 @@ use sysexits::{ EX_DATAERR, EX_IOERR, EX_UNAVAILABLE, EX_USAGE };
fn main() {
let argv = args().collect::<Vec<String>>();
let mut d = 0x1E.to_string();
let mut d = '\u{1E}'.to_string();
let mut arg_parser = Parser::new(&argv, "d:");
while let Some(opt) = arg_parser.next() {