X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=utils%2Fpb-plugin;h=e107f9648ba2e165aa31d6223e69eec5d8f8812f;hp=fcb7383afc534400ed47ba98c4eafa338d1fec20;hb=6e5cd61065181460be8152a73dfc79f94ecd27fe;hpb=e22d1340b96d3e22a92e8fcaabdcd2d494c1bea9 diff --git a/utils/pb-plugin b/utils/pb-plugin index fcb7383..e107f96 100755 --- a/utils/pb-plugin +++ b/utils/pb-plugin @@ -64,6 +64,27 @@ plugin_info() echo " (version $PLUGIN_VERSION)" } +parse_meta() +{ + local file name value IFS + + file=$1 + + IFS='=' + while read -r name value + do + # Ensure we have a sensible variable name + echo "$name" | grep -q '^PLUGIN_[A-Z_]*$' || continue + + # we know that $name has no quoting/expansion chars, but we + # may need to do some basic surrounding-quote removal for + # $value, without evaluating it + value=$(echo "$value" | sed "s/^\([\"']\)\(.*\)\1\$/\2/g") + + export $name="$value" + done < $file +} + # How the ABI versioning works: # # - This script has an ABI defined ($plugin_abi) @@ -187,7 +208,7 @@ do_install() exit 1 fi - . $__dest/$plugin_meta_path + parse_meta $__dest/$plugin_meta_path if ! plugin_abi_check then @@ -229,7 +250,7 @@ do_scan_mount() fi ( - . $__meta_tmp/$plugin_meta_path + parse_meta $__meta_tmp/$plugin_meta_path plugin_abi_check || exit 1 @@ -371,7 +392,7 @@ do_create() fi # Sanity check metadata file - . $meta_file + parse_meta $meta_file errors=0 warnings=0 @@ -501,10 +522,7 @@ do_lint() lint_fatal "No metadata file present (expecting" \ "$plugin_meta_path)" - (sh -e "$__dest/$plugin_meta_path") >/dev/null 2>&1 || - lint_err "Plugin metadata file has shell errors" - - . "$__dest/$plugin_meta_path" + parse_meta "$__dest/$plugin_meta_path" lint_metadata for executable in ${PLUGIN_EXECUTABLES}