pacman.conf cannot be properly parsed in bash, e.g. it fails to handle `Include = ` directives, hence why pacman introduced a configuration parsing tool in the first place. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- v2: Forgot to remove the get_cachedirs_from_config function. Also fix typo in CacheDir. src/checkupdates.sh.in | 2 +- src/paccache.sh.in | 17 +---------------- src/pacdiff.sh.in | 4 +--- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/checkupdates.sh.in b/src/checkupdates.sh.in index 9f34dc1..1d01fda 100644 --- a/src/checkupdates.sh.in +++ b/src/checkupdates.sh.in @@ -46,7 +46,7 @@ fi trap 'rm -f $CHECKUPDATES_DB/db.lck' INT TERM EXIT -DBPath="$(awk -F' *= *' '/^DBPath/ { print $2 }' @sysconfdir@/pacman.conf)" +DBPath="$(pacman-conf DBPath)" if [[ -z "$DBPath" ]] || [[ ! -d "$DBPath" ]]; then DBPath="@localstatedir@/lib/pacman/" fi diff --git a/src/paccache.sh.in b/src/paccache.sh.in index 143c6e3..49680be 100644 --- a/src/paccache.sh.in +++ b/src/paccache.sh.in @@ -40,20 +40,6 @@ die() { exit 1 } -get_cachedirs_from_config() { - local key value ret - - ret=1 - while IFS=$'= \t' read -r key value _; do - if [[ $key = CacheDir ]]; then - echo "$value" - ret=0 - fi - done <"$1" - - return $ret -} - # reads a list of files on stdin and prints out deletion candidates pkgfilter() { # there's whitelist and blacklist parameters passed to this @@ -287,8 +273,7 @@ m4_include(../lib/term_colors.sh) # setting default cachedirs if [[ -z $cachedirs ]]; then - cachedir="$(get_cachedirs_from_config "@sysconfdir@/pacman.conf")" - cachedirs=("${cachedirs[@]:-@localstatedir@/cache/pacman/pkg}") + cachedirs=($(pacman-conf CacheDir)) fi # remaining args are a whitelist diff --git a/src/pacdiff.sh.in b/src/pacdiff.sh.in index ef385c2..866932d 100644 --- a/src/pacdiff.sh.in +++ b/src/pacdiff.sh.in @@ -130,12 +130,10 @@ case $(( USE_FIND + USE_LOCATE + USE_PACDB )) in esac if (( USE_PACDB )); then - if [[ ! -r @sysconfdir@/pacman.conf ]]; then + if ! DBPath="$(pacman-conf DBPath)"; then error "unable to read @sysconfdir@/pacman.conf" usage; exit 1 fi - - eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) pac_db="${DBPath:-@localstatedir@/lib/pacman/}local" if [[ ! -d "${pac_db}" ]]; then error "unable to read pacman database %s". "${pac_db}" -- 2.16.1