summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2022-01-01 18:08:15 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2022-01-01 18:08:56 -0800
commitd405fa2ec63b0e4ebb9f84d1a4b2a6de63b2d26d (patch)
treed8c51583368d5e232cfec83f1eb9288fb1520257
parent407d5955f06523d464f40c118d326de3cf1ee3b9 (diff)
downloadautoconf-d405fa2ec63b0e4ebb9f84d1a4b2a6de63b2d26d.tar.gz
doc: document BusyBox sed w bug
-rw-r--r--doc/autoconf.texi24
1 files changed, 24 insertions, 0 deletions
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 17a6326e..04730dcc 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -20170,6 +20170,30 @@ s/.*/deleted/g
:end
@end example
+@item @command{sed} (@samp{w})
+@c ---------------------------
+@prindex @command{sed} (@samp{w})
+
+When a script contains multiple commands to write lines to the same
+output file, BusyBox @command{sed} mistakenly opens a separate output
+stream for each command. This can cause one of the commands to ``win''
+and the others to ``lose'', in the sense that their output is discarded.
+For example:
+
+@example
+sed -n -e '
+ /a/w xxx
+ /b/w xxx
+' <<EOF
+a
+b
+EOF
+@end example
+
+This might output only @samp{a} to @file{xxx}; the @samp{b} is lost.
+To avoid the problem, a portable script should contain at most one
+@samp{w} or @samp{s/.../.../w} command per output file.
+
@item @command{sleep}
@c ------------------
@prindex @command{sleep}