aboutsummaryrefslogtreecommitdiff
path: root/slowbaud.1
diff options
context:
space:
mode:
Diffstat (limited to 'slowbaud.1')
-rw-r--r--slowbaud.149
1 files changed, 38 insertions, 11 deletions
diff --git a/slowbaud.1 b/slowbaud.1
index 7fcec1e..c25d8e9 100644
--- a/slowbaud.1
+++ b/slowbaud.1
@@ -38,28 +38,49 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.
.SH SYNOPSIS
.sp
-\fBslowbaud\fP \fI<bits\-per\-sec>\fP [\fI<file>\fP ...]
+\fBslowbaud\fP [\fI<bits\-per\-sec>\fP] [\fI<file>\fP ...]
.sp
-\fBslowbaud\fP \fI<bits\-per\-sec>\fP \fB\-c\fP [\fI<command>\fP [\fI<arg>\fP ...]]
+\fBslowbaud\fP [\fI<bits\-per\-sec>\fP] \fB\-c\fP [\fI<command>\fP [\fI<arg>\fP ...]]
+.sp
+\fBslowbaud\fP [\fI<bits\-per\-sec>\fP] \fB\-e\fP \fI<string>\fP [\fI<string>\fP ...]
.SH DESCRIPTION
.sp
slowbaud by default acts as a filter, or like the \fBcat(1)\fP command. It
reads files or its standard input, and writes the contents unmodified
to standard output... but slowly, at the given bits\-per\-second rate.
-Output is unbuffered.
+Input and output are unbuffered.
.sp
-With the \fB\-c\fP option, it creates a pseudo\-tty and runs the given command
-in it (or an interactive shell, if no command is given).
+slowbaud can also act like \fBecho(1)\fP (the \fB\-e\fP option), or run an
+interactive command (the \fB\-c\fP option).
.sp
-The \fI<bits\-per\-sec>\fP argument supports a range of 1 to 500000. Timing
-accuracy depends on your OS, kernel config (HZ and/or NO_HZ on Linux),
-and system load. No "fancy" techniques like realtime scheduling
-or hardware event timers are used. At bitrates up to 57600, on a
-typical unloaded Linux system, the timing should be around 99.7%
-accurate.
+The \fI<bits\-per\-sec>\fP argument is optional. If it\(aqs not given, the
+bit rate will be set from \fBSLOWBAUD_BPS\fP in the environment, or a
+built\-in default of 2400 if not set.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fBbits\-per\-sec\fP
+The bit ("baud") rate to simulate. This must be the first argument.
+slowbaud assumes that if the first argument is a number, it\(aqs the bit rate.
+If you\(aqre trying to pass a filename that consists only of digits, give
+\fB\-\-\fP as the first argument, or use e.g. \fI\&./filename\fP\&.
+.TP
+.B \fB\-e\fP
+Echo mode. Prints all further arguments as strings to stdout, separated
+by a single space, at the given bit rate. Does not support backslash\-escapes, or any of
+the options of the regular \fBecho\fP command.
+.TP
+.B \fB\-c\fP
+Command mode. Next argument (if present) is the command to run, any remaining arguments
+become arguments to the command. With no arguments after \fB\-c\fP, a shell is spawned.
+This creates a pseudo\-tty, so the command can be interactive.
+.UNINDENT
.SH ENVIRONMENT
.INDENT 0.0
.TP
+.B \fBSLOWBAUD_BPS\fP
+Can be used to set the bit rate, when no \fI<bits\-per\-sec>\fP argument is used.
+.TP
.B \fBSLOWBAUD_DEBUG\fP
Set this (to any value) in the environment to see verbose debug
output on stderr, including timing accuracy stats.
@@ -80,6 +101,12 @@ the child process couldn\(aqt be spawned (e.g. command not found).
Of course, the child process could also exit with status 127...
.SH NOTES
.sp
+The bitrate has a range of 1 to 500000. Timing accuracy depends on
+your OS, kernel config (HZ and/or NO_HZ on Linux), and system load. No
+"fancy" techniques like realtime scheduling or hardware event timers
+are used. At bitrates up to 57600, on a typical unloaded Linux system,
+the timing should be at least 99.7% accurate.
+.sp
We can\(aqt really insert a delay between the bits of a byte, since
I/O is done with byte granularity. For calculation purposes,
\fI<bits\-per\-sec>\fP is divided by 10 to get bytes per second. This