[kexec-tools] Use an array to hold arguments to avoid quote problems

Cong Wang wangcong at fedoraproject.org
Fri Dec 16 10:06:51 UTC 2011


commit 2d16a847d49aae206583ce3d75287eda43e2f492
Author: Cong Wang <xiyou.wangcong at gmail.com>
Date:   Fri Dec 16 18:06:45 2011 +0800

    Use an array to hold arguments to avoid quote problems

 mkdumprd |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)
---
diff --git a/mkdumprd b/mkdumprd
index 225f19c..d596c4d 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -10,14 +10,22 @@ export IN_KDUMP=1
 
 conf_file="/etc/kdump.conf"
 extra_modules=""
-dracut_args="-m kdumpbase --add dash --add fstab-sys -c /dev/null"
+dracut_args=("-m" "kdumpbase" "--add" "dash" "--add" "fstab-sys" "-c" "/dev/null")
 
 add_dracut_arg() {
-    dracut_args="$dracut_args $*"
+    while [ $# -gt 0 ];
+    do
+        dracut_args+=("$1")
+        shift
+    done
 }
 
 add_dracut_module() {
-    add_dracut_arg "--add $1"
+    add_dracut_arg "--add" "$1"
+}
+
+add_dracut_mount() {
+    add_dracut_arg "--mount" "$1"
 }
 
 while [ $# -gt 0 ]; do
@@ -43,7 +51,7 @@ done
 # Generic substring function.  If $2 is in $1, return 0.
 strstr() { [[ $1 =~ $2 ]]; }
 
-to_udev_name() {
+to_dev_name() {
     local dev="$1"
 
     case "$dev" in
@@ -54,7 +62,12 @@ to_udev_name() {
         dev=`blkid -L "${dev#LABEL=}"`
         ;;
     esac
-    echo ${dev#/dev/}
+    echo $dev
+}
+
+to_mount() {
+    local _dev=$(to_dev_name $1)
+    echo "$(grep "$_dev" /proc/mounts | cut -d' ' -f1-4)"
 }
 
 # $1 remote target
@@ -70,7 +83,7 @@ if [ -n "$conf_file" ]; then
             extra_modules="$extra_modules $config_val"
             ;;
         ext[234]|xfs|btrfs|minix)
-            add_dracut_arg "--mount $(to_udev_name $config_val)"
+            add_dracut_mount "$(to_mount $config_val)"
             ;;
         raw)
             #TODO
@@ -82,7 +95,7 @@ if [ -n "$conf_file" ]; then
                 add_dracut_module "scp"
             else
                 add_dracut_module "nfs"
-                add_dracut_arg "--mount $config_val"
+                add_dracut_mount "$(to_mount $config_val)"
             fi
             ;;
         core_collector)
@@ -106,6 +119,6 @@ then
     add_dracut_arg "--add-drivers $extra_modules"
 fi
 
-dracut $dracut_args -M "$@"
+dracut "${dracut_args[@]}" -M "$@"
 exit $?
 


More information about the scm-commits mailing list