Date: Sun, 07 Mar 2021 09:47:06 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 254091] sed: Please fix -i behavior Message-ID: <bug-254091-227@https.bugs.freebsd.org/bugzilla/>
index | next in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 Bug ID: 254091 Summary: sed: Please fix -i behavior Product: Base System Version: Unspecified Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: tobik@freebsd.org Created attachment 223048 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=223048&action=edit sed.diff This is one of the most frustrating things in FreeBSD userland for me and can be a PITA when creating new ports or updating them because the rest of the world expects sed to behave differently than our sed. I'm sure this has come up before but I could not find a bug for it. Our sed uses getopt("i:") instead of getopt("i::") like GNU sed or even NetBSD sed or OpenBSD sed. As a consequence something like `sed -i 's/foo/bar/' file` will not work on FreeBSD but works just fine on Linux/NetBSD/OpenBSD (our sed interprets `s/foo/bar/` as the backup file suffix and `file` as the expression, whereas GNU/NetBSD/OpenBSD sed see that we want no backup file). For a concrete example of something in the wild, this here is from the editors/mg configure script which is fine with the other seds sed -i 's,<term.h>,"terminfo_term.h",g' display.c but errors out with ours sed: 1: "display.c": extra characters at the end of d command If have sent a patch for this upstream to "fix" it, but really it is sed(1) that should be fixed and should be made to work like the rest of the world. We should deal with the consequences on our side. I have a hard time sending patches like this upstream without flinching because I'm essentially pushing a fix for a FreeBSD bug onto upstream. It has been like this forever and FWICT it has been copied to macOS too, so maybe it is too late now... Changing this is obviously a POLA violation and will break scripts of many users but it would be nice if we could do it for FreeBSD 14 anyway. I'm attaching a patch that does what I want I think but most of the tests and other scripts in the tree are broken since they all use bad sed calls now. Ironically there also seem to be some scripts in the tree that are obviously broken with FreeBSD sed and expect GNU sed behavior (for example release/tools/gce.conf). I'd be willing to help fix any ports fallout caused by this. -- You are receiving this mail because: You are the assignee for the bug.help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-254091-227>
