[Toybox] A brief argument in favor of implementing ed

Rob Landley rob at landley.net
Fri Nov 25 10:40:09 PST 2011

On 11/22/2011 08:56 AM, Robert Thompson wrote:
> Much like more, it can successfully work in truly messed-up
> environments. It needs no cursor-control at all to do its basic job.

I'm implementing sed.

> It's obnoxious to use interactively, true, but can be tiny and easily
> pays for itself the first time you have to work blind to modify a file.

With sed.

> It's also more useful than sed for modifying files from scripts. More
> than once, I have used it to let a shell script change a config option
> in a config file in cases where sed was inappropriate or missing/broken.

A) inappropriate how?  It started out as a streaming version of "ed"
rather than one that needed to load the entire file into a buffer to
operate on it.

B) The one in toybox shouldn't be missing or broken.

> If you're a little careful, you can use it to change just the option you
> care about without even damaging the surrounding comments.

You can do that with sed, yes.

> And unlike
> sed, it already takes care of the write-out phase without you having to
> explicitly sed to a tempfile, rename, handle possible error cases.

I'm implementing the sed -i option that gnu's had for a decade and
busybox has had since I implemented it circa 2006 or so.  (My first big
busybox applet rewrite was "sed", that's how I got involved in busybox
development in the first place.  Alas, I don't have a clean "just my
code" version of that one, so I have to rewrite it.)

> If it's not available, it is possible to work around it, but it does
> really simplify a lot of things that are likely to be needed in minimal
> environments.

Lots of people and scripts still use sed.  I don't know anybody under
the age of 50 who still uses ed, and have never encountered it in a script.

After I do vi, if there's sufficiently small overhead I might do a
version of "sed" that operates on a buffer just out of SUSv4
completionism.  But as priorities go, it's below implenting "asa":




More information about the Toybox mailing list