diff options
-rw-r--r-- | src/cpt-lib.in | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/cpt-lib.in b/src/cpt-lib.in index a978ebd..2c7471f 100644 --- a/src/cpt-lib.in +++ b/src/cpt-lib.in @@ -1860,7 +1860,11 @@ pkg_get_base() ( # cpt-base is an optional file, return with success if it doesn't exist. [ -f "$CPT_ROOT/etc/cpt-base" ] || return 0 - nonl=$1; set -- + + # If there is an argument, change the format to use spaces instead of + # newlines. + format='%s\n' + [ "$#" -eq 0 ] || format='%s '; set -- # Older versions of shellcheck warns us that the variable is changing on the # subshell. That is our purpose here, thank you very much. @@ -1873,7 +1877,10 @@ pkg_get_base() ( contains "$*" "$dep" || set -- "$@" "$dep" done done < "$CPT_ROOT/etc/cpt-base" - if [ "$nonl" ]; then printf '%s ' "$@"; else printf '%s\n' "$@"; fi + + # Format variable is intentional. + # shellcheck disable=2059 + printf "$format" "$@" ) pkg_gentree() ( @@ -1882,14 +1889,14 @@ pkg_gentree() ( # given package. A second argument can be given as a combination of # characters (similar to 'tar(1)' keys) which will be used as an option # parser. See the documentation for more information on the keys. - deps='' reverse='' nonl='' make_deps=first + deps='' reverse='' format='%s\n' make_deps=first for op in $(sepchar "$2"); do case "$op" in b) deps="$(pkg_get_base nonl)" ;; f) make_deps='' ;; x) make_deps=first-nomake ;; r) reverse=1 ;; - n) nonl=1 ;; + n) format='%s ' ;; *) die "pkg_gentree: Unknown key '$op'" esac done @@ -1897,7 +1904,11 @@ pkg_gentree() ( eval set -- "$deps" pkg_order "$@" if [ "$reverse" ]; then eval set -- "$redro"; else eval set -- "$order"; fi - if [ "$nonl" ]; then printf '%s ' "$@"; else printf '%s\n' "$@"; fi + [ "$1" ] || return 0 + + # Format variable is intentional. + # shellcheck disable=2059 + printf "$format" "$@" ) pkg_clean() { |