From: Amadeusz Żołnowski Date: Sun, 21 Aug 2011 10:47:13 +0000 (+0200) Subject: dracut-functions: new function: inst_any [-d dest] f1 [f2 [f3 ...]] X-Git-Tag: 014~128 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3378a54f15016c86e4c8c2ecafcaa45f0119fc00;p=thirdparty%2Fdracut.git dracut-functions: new function: inst_any [-d dest] f1 [f2 [f3 ...]] --- diff --git a/dracut-functions b/dracut-functions index d7f2e5fbe..43a684305 100755 --- a/dracut-functions +++ b/dracut-functions @@ -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