[arch-projects] [devtools] [PATCH 1/4] lib/common.sh: add 'lock_close'; use it as appropriate.

Luke Shumaker lukeshu at parabola.nu
Sat Mar 25 16:33:36 UTC 2017


`lock_close FD` is easier to remember than 'exec FD>&-`; and is especially
easier if FD is a variable (though that isn't actually taken advantage of
here).

This uses Bash 4.1+ `exec {var}>&-`, rather than the clunkier
`eval exec "$var>&-"` that was necessary in older versions of Bash.
Thanks to Dave Reisner for pointing this new bit of syntax out to me
the last time I submitted this (back in 2014, 4.1 had just come out).
---
 archbuild.in     | 2 +-
 lib/common.sh    | 8 ++++++++
 makechrootpkg.in | 2 +-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/archbuild.in b/archbuild.in
index a78353c..4d1b351 100644
--- a/archbuild.in
+++ b/archbuild.in
@@ -55,7 +55,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
 		subvolume_delete_recursive "${copy}"
 		rm -rf --one-file-system "${copy}"
 	done
-	exec 9>&-
+	lock_close 9
 
 	rm -rf --one-file-system "${chroots}/${repo}-${arch}"
 	mkdir -p "${chroots}/${repo}-${arch}"
diff --git a/lib/common.sh b/lib/common.sh
index 599be54..689772f 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -159,6 +159,14 @@ slock() {
 }
 
 ##
+#  usage : lock_close( $fd )
+##
+lock_close() {
+	local fd=$1
+	exec {fd}>&-
+}
+
+##
 # usage: pkgver_equal( $pkgver1, $pkgver2 )
 ##
 pkgver_equal() {
diff --git a/makechrootpkg.in b/makechrootpkg.in
index dc598f7..ad99334 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -108,7 +108,7 @@ create_chroot() {
 		stat_done
 
 		# Drop the read lock again
-		exec 8>&-
+		lock_close 8
 	fi
 
 	# Update mtime
-- 
2.12.0


More information about the arch-projects mailing list