From d590409a990da1446c15d8dd74168d7352ff2b8b Mon Sep 17 00:00:00 2001 From: illiliti Date: Tue, 25 Feb 2020 15:40:07 +0300 Subject: [PATCH] remove eval --- tinyramfs | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/tinyramfs b/tinyramfs index 6c64341..b8a2d38 100755 --- a/tinyramfs +++ b/tinyramfs @@ -21,14 +21,12 @@ msg() { } usage() { - scriptdir=$(readlink -f $(dirname "$0")) - # TODO more options cat << EOF usage: $0 [options] - -o, --output output file. default is ${scriptdir}/initramfs-$(uname -r) - -c, --config config file. default is ${scriptdir}/config - -f, --files files directory. default is ${scriptdir}/files + -o, --output output file + -c, --config config file + -f, --files files directory EOF } @@ -37,15 +35,15 @@ parse_args() { while [ "$1" ]; do case "$1" in -o | --output) - initramfs="${2?}" + _initramfs="${2:?}" shift 2 ;; -f | --files) - filesdir="${2?}" + _filesdir="${2:?}" shift 2 ;; -c | --config) - config="${2?}" + _config="${2:?}" shift 2 ;; -h | --help) @@ -62,19 +60,13 @@ parse_args() { } parse_conf() { - while read -r line; do + . "${_config:-./config}" || + msg panic "failed to parse config" - # ignore comments - if [ ! "${line##\#*}" ]; then - continue - - # check if variable already exists via 'variable indirection' method - # if no exists then 'source' variable - # see https://stackoverflow.com/q/36235612 - elif [ ! "$(eval printf "%s" "\"\$${line%%=*}\"")" ]; then - eval "$line" - fi - done < "${config:-$(readlink -f $(dirname "$0"))/config}" || msg panic "failed to parse config" + kernel="${kernel:-$(uname -r)}" + moddir="${moddir:-/lib/modules}" + filesdir="${_filesdir:-./files}" + initramfs="${_initramfs:-${initramfs:-./initramfs-${kernel}}}" } create_workdir() { @@ -462,11 +454,6 @@ create_initramfs() { parse_args "$@" parse_conf -: "${kernel:=$(uname -r)}" -: "${moddir:=/lib/modules}" -: "${filesdir:=$(readlink -f $(dirname "$0"))/files}" -: "${initramfs:=$(readlink -f $(dirname "$0"))/initramfs-${kernel}}" - # remove workdir on exit or unexpected error trap remove_workdir EXIT INT