[PATCH] scripts/config: use sed's POSIX interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Script `config' relies on extensions of `GNU sed', and is thus not
working on all Unixes:
- in-place edition of files (-i), which can be replaced with
a temporary file;
- extended-regexps (-r), which can be split into basic regexps;
- single-line calls to `a' command, while some implementations
require a leading newline before the parameter.

Rewrite calls to `sed' program to comply with POSIX interface.

Signed-off-by: Clement Chauplannaz <chauplac@xxxxxxxxx>
---
 scripts/config | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/scripts/config b/scripts/config
index a65ecbb..3fd95eb 100755
--- a/scripts/config
+++ b/scripts/config
@@ -66,9 +66,14 @@ set_var() {
 	name_re="^($name=|# $name is not set)"
 	before_re="^($before=|# $before is not set)"
 	if test -n "$before" && grep -Eq "$before_re" "$FN"; then
-		sed -ri "/$before_re/a $new" "$FN"
+		lf=$'\n'
+		sed -e "/^$before=/a\\$lf$new$lf" \
+		    -e "/^# $before is not set/a\\$lf$new$lf" "$FN" >"$FN.swp"
+		mv "$FN.swp" "$FN"
 	elif grep -Eq "$name_re" "$FN"; then
-		sed -ri "s:$name_re.*:$new:" "$FN"
+		sed -e "s:^$name=.*:$new:" \
+		    -e "s:^# $name is not set:$new:" "$FN" >"$FN.swp"
+		mv "$FN.swp" "$FN"
 	else
 		echo "$new" >>"$FN"
 	fi
@@ -77,7 +82,8 @@ set_var() {
 undef_var() {
 	local name=$1
 
-	sed -ri "/^($name=|# $name is not set)/d" "$FN"
+	sed -e "/^$name=/d" -e "/^# $name is not set/d" "$FN" >"$FN.swp"
+	mv "$FN.swp" "$FN"
 }
 
 if [ "$1" = "--file" ]; then
-- 
1.8.3.rc1.44.gb387c77.dirty

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux