From d759eadb50409e83d8d58fa54812738c30ac626d Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Sun, 21 May 2023 16:24:54 +0200 Subject: fix(diffpkg): Fix scoping of DIFFOPTIONS when comparing split pkgs `diff_pkgs` needs to use a local variable for its options, otherwise they will accumulate for each package diffed. Whem comparing split packages this lead to earlier mutated DIFFOPTIONS containing too many labels which resulted in a failure. --- src/diffpkg.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/diffpkg.in b/src/diffpkg.in index ab1a5af..160c4ba 100644 --- a/src/diffpkg.in +++ b/src/diffpkg.in @@ -215,7 +215,8 @@ diff_pkgs() { [[ -f $oldpkg ]] || die "No such file: %s" "${oldpkg}" [[ -f $newpkg ]] || die "No such file: %s" "${newpkg}" - DIFFOPTIONS+=(--label "${oldpkg}" --label "${newpkg}") + local -a diffoptions + diffoptions=("${DIFFOPTIONS[@]}" --label "${oldpkg}" --label "${newpkg}") if (( TARLIST )); then tar_list "$oldpkg" > "$TMPDIR/old" @@ -236,7 +237,7 @@ diff_pkgs() { # Resolve dynamic auto width one we know the content to diff if [[ $DIFFWIDTH == --width=auto ]]; then AUTOLENGTH=$(file_diff_columns "$TMPDIR/old" "$TMPDIR/new") - DIFFOPTIONS+=("--width=${AUTOLENGTH}") + diffoptions+=("--width=${AUTOLENGTH}") fi # Print a header for side-by-side view as it lacks labels @@ -244,7 +245,7 @@ diff_pkgs() { printf -- "--- %s\n+++ %s\n" "${oldpkg}" "${newpkg}" fi - diff "${DIFFOPTIONS[@]}" "$TMPDIR/old" "$TMPDIR/new" + diff "${diffoptions[@]}" "$TMPDIR/old" "$TMPDIR/new" fi if (( DIFFOSCOPE )); then -- cgit v1.2.3-70-g09d2