]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(img-lib): shellcheck for modules.d/99img-lib
authorHarald Hoyer <harald@redhat.com>
Fri, 26 Mar 2021 09:29:34 +0000 (10:29 +0100)
committerHarald Hoyer <harald@hoyer.xyz>
Mon, 29 Mar 2021 09:19:26 +0000 (11:19 +0200)
modules.d/99img-lib/.shchkdir [new file with mode: 0644]
modules.d/99img-lib/img-lib.sh
modules.d/99img-lib/module-setup.sh

diff --git a/modules.d/99img-lib/.shchkdir b/modules.d/99img-lib/.shchkdir
new file mode 100644 (file)
index 0000000..e69de29
index 79f42d77c3b0cd0d29a0eb08faf0ef8b5d72ba4f..fa117adfab2c767e6a4c71bc3490c12abe1bc6ee 100755 (executable)
@@ -6,9 +6,14 @@
 # super-simple "file" that only identifies archives.
 # works with stdin if $1 is not set.
 det_archive() {
-    # NOTE: echo -e works in ash and bash, but not dash
-    local bz="BZh" xz="$(echo -e '\xfd7zXZ')" gz="$(echo -e '\x1f\x8b')" zs="$(echo -e '\x28\xB5\x2F\xFD')"
-    local headerblock="$(dd ${1:+if=$1} bs=262 count=1 2> /dev/null)"
+    # NOTE: internal echo -e works in ash and bash, but not dash
+    local bz xz gz zs
+    local headerblock
+    bz="BZh"
+    xz="$(/bin/echo -e '\xfd7zXZ')"
+    gz="$(/bin/echo -e '\x1f\x8b')"
+    zs="$(/bin/echo -e '\x28\xB5\x2F\xFD')"
+    headerblock="$(dd ${1:+if=$1} bs=262 count=1 2> /dev/null)"
     case "$headerblock" in
         $xz*) echo "xz" ;;
         $gz*) echo "gzip" ;;
@@ -21,10 +26,11 @@ det_archive() {
 
 # determine filesystem type for a filesystem image
 det_fs_img() {
-    local dev=$(losetup --find --show "$1") rv=""
-    det_fs $dev
+    local dev
+    dev=$(losetup --find --show "$1") rv=""
+    det_fs "$dev"
     rv=$?
-    losetup -d $dev
+    losetup -d "$dev"
     return $rv
 }
 
@@ -32,41 +38,44 @@ det_fs_img() {
 # unpack a (possibly compressed) cpio/tar archive
 unpack_archive() {
     local img="$1" outdir="$2" archiver="" decompr=""
-    local ft="$(det_archive $img)"
+    local ft
+    ft="$(det_archive "$img")"
     case "$ft" in
         xz | gzip | bzip2 | zstd) decompr="$ft -dc" ;;
         cpio | tar) decompr="cat" ;;
         *) return 1 ;;
     esac
-    ft="$($decompr $img | det_archive)"
+    ft="$($decompr "$img" | det_archive)"
     case "$ft" in
         cpio) archiver="cpio -iumd" ;;
         tar) archiver="tar -xf -" ;;
         *) return 2 ;;
     esac
-    mkdir -p $outdir
+    mkdir -p "$outdir"
     (
-        cd $outdir
+        cd "$outdir" || exit
         $decompr | $archiver 2> /dev/null
-    ) < $img
+    ) < "$img"
 }
 
 # unpack_fs FSIMAGE OUTDIR
 # unpack a filesystem image
 unpack_fs() {
-    local img="$1" outdir="$2" mnt="$(mkuniqdir /tmp unpack_fs.)"
-    mount -o loop $img $mnt || {
-        rmdir $mnt
+    local img="$1" outdir="$2"
+    local mnt
+    mnt="$(mkuniqdir /tmp unpack_fs.)"
+    mount -o loop "$img" "$mnt" || {
+        rmdir "$mnt"
         return 1
     }
-    mkdir -p $outdir
+    mkdir -p "$outdir"
     outdir="$(
-        cd $outdir
+        cd "$outdir" || exit
         pwd
     )"
-    copytree $mnt $outdir
-    umount $mnt
-    rmdir $mnt
+    copytree "$mnt" "$outdir"
+    umount "$mnt"
+    rmdir "$mnt"
 }
 
 # unpack an image file - compressed/uncompressed cpio/tar, filesystem, whatever
@@ -82,7 +91,7 @@ unpack_img() {
         return 1
     }
 
-    if [ "$(det_archive $img)" ]; then
+    if [ "$(det_archive "$img")" ]; then
         unpack_archive "$@" || {
             warn "can't unpack archive file!"
             return 1
index e11c7ba96c185d99bffeb5eb4f994a757c28106e..61c1103854047584704b762ccbba55908a25732a 100755 (executable)
@@ -3,7 +3,7 @@
 
 # called by dracut
 check() {
-    require_binaries tar gzip dd bash || return 1
+    require_binaries tar gzip dd echo || return 1
     return 255
 }
 
@@ -14,7 +14,7 @@ depends() {
 
 # called by dracut
 install() {
-    inst_multiple tar gzip dd bash
+    inst_multiple tar gzip dd echo
     # TODO: make this conditional on a cmdline flag / config option
     inst_multiple -o cpio xz bzip2 zstd
     inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh"