Currently --with parameter had to be passed as: --with="mod1 mod2". Now one can pass: --with "mod1 mod2" or even --with mod1 mod2. Signed-off-by: Thomas Renninger <trenn@xxxxxxx> --- mkinitrd-dracut.sh | 43 +++++++++++++++++++++++++------------------ 1 files changed, 25 insertions(+), 18 deletions(-) diff --git a/mkinitrd-dracut.sh b/mkinitrd-dracut.sh index ace7725..d8e92f3 100755 --- a/mkinitrd-dracut.sh +++ b/mkinitrd-dracut.sh @@ -26,36 +26,43 @@ read_arg() { # $1 = arg name # $2 = arg value # $3 = arg parameter - local rematch='^[^=]*=(.*)$' + param="$1" + local rematch='^[^=]*=(.*)$' result if [[ $2 =~ $rematch ]]; then - read "$1" <<< "${BASH_REMATCH[1]}" - elif [[ $3 != -* ]]; then - # Only read next arg if it not an arg itself. - read "$1" <<< "$3" - # There is no way to shift our callers args, so - # return 1 to indicate they should do it instead. - return 1 + read "$param" <<< "${BASH_REMATCH[1]}" + else + for ((i=3; $i <= $#; i++)); do + # Only read next arg if it not an arg itself. + if [[ ${@:$i:1} = -* ]];then + break + fi + result="$result ${@:$i:1}" + # There is no way to shift our callers args, so + # return "no of args" to indicate they should do it instead. + done + read "$1" <<< "$result" + return $(($i - 3)) fi } while (($# > 0)); do case ${1%%=*} in - --with-usb) read_arg usbmodule "$@" || shift + --with-usb) read_arg usbmodule "$@" || shift $? basicmodules="$basicmodules ${usbmodule:-usb-storage}" unset usbmodule;; - --with-avail) read_arg modname "$@" || shift + --with-avail) read_arg modname "$@" || shift $? basicmodules="$basicmodules $modname";; - --with) read_arg modname "$@" || shift + --with) read_arg modname "$@" || shift $? basicmodules="$basicmodules $modname";; --version) echo "mkinitrd: dracut compatibility wrapper" exit 0;; -v|--verbose) dracut_args="${dracut_args} -v";; -f|--force) dracut_args="${dracut_args} -f";; - --preload) read_arg modname "$@" || shift + --preload) read_arg modname "$@" || shift $? basicmodules="$basicmodules $modname";; --image-version) img_vers=yes;; - --rootfs) read_arg rootfs "$@" || shift + --rootfs) read_arg rootfs "$@" || shift $? dracut_args="${dracut_args} --filesystems $rootfs";; --nocompress) dracut_args="$dracut_args --no-compress";; --help) usage -n;; @@ -82,24 +89,24 @@ while (($# > 0)); do --looppath*) ;; --dsdt*) ;; --bootchart) ;; - -b) read_arg boot_dir "$@" || shift + -b) read_arg boot_dir "$@" || shift $? if [ ! -d $boot_dir ];then error "Boot directory $boot_dir does not exist" exit 1 fi ;; -k) # Would be nice to get a list of images here - read_arg kernel_images "$@" || shift + read_arg kernel_images "$@" || shift $? for kernel_image in $kernel_images;do kernels="$kernels ${kernel_image#*-}" done ;; - -i) read_arg initrd_images "$@" || shift + -i) read_arg initrd_images "$@" || shift $? for initrd_image in $initrd_images;do - targets="$targets $boot_dir/$initrd_images" + targets="$targets $boot_dir/$initrd_image" done ;; - *) if [[ ! $targets ]]; then + *) if [[ ! $targets ]]; then targets=$1 elif [[ ! $kernels ]]; then kernels=$1 -- 1.7.6.1 -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html