dracut-functions: new function: inst_any [-d dest] f1 [f2 [f3 ...]]
authorAmadeusz Żołnowski <aidecoe@aidecoe.name>
Sun, 21 Aug 2011 10:47:13 +0000 (12:47 +0200)
committerHarald Hoyer <harald@redhat.com>
Mon, 22 Aug 2011 09:19:19 +0000 (11:19 +0200)
dracut-functions

index d7f2e5f..43a6843 100755 (executable)
@@ -537,6 +537,34 @@ inst_hook() {
     inst_simple "$3" "/lib/dracut/hooks/${1}/${2}${3##*/}"
 }
 
+# install any of listed files
+#
+# If first argument is '-d' and second some destination path, first accessible
+# source is installed into this path, otherwise it will installed in the same
+# path as source.  If none of listed files was installed, function return 1.
+# On first successful installation it returns with 0 status.
+#
+# Example:
+#
+# inst_any -d /bin/foo /bin/bar /bin/baz
+#
+# Lets assume that /bin/baz exists, so it will be installed as /bin/foo in
+# initramfs.
+inst_any() {
+    local to f
+
+    [[ $1 = '-d' ]] && to="$2" && shift 2
+
+    for f in "$@"; do
+        if [[ -e $f ]]; then
+            [[ $to ]] && inst "$f" "$to" && return 0
+            inst "$f" && return 0
+        fi
+    done
+
+    return 1
+}
+
 dracut_install() {
     local _optional=no
     if [[ $1 = '-o' ]]; then