On Mon, Jan 23, 2012 at 12:48:37PM +1000, Allan McRae wrote:
On 23/01/12 12:13, Dave Reisner wrote:
On Mon, Jan 23, 2012 at 12:08:14PM +1000, Allan McRae wrote:
On 20/01/12 23:59, Dave Reisner wrote:
On Fri, Jan 20, 2012 at 11:24:23PM +1000, Allan McRae wrote:
The grep statement used to check for a difference between the installed package list before and after resolving dependencies returns 1 if there is no difference. This sets of the error trap when "-r" is used "unnecessarily".
Signed-off-by: Allan McRae <allan@archlinux.org> ---
...
local deplist - if ! deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \ - <(printf "%s\n" "${current_pkglist[@]}"))); then + deplist=($(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \ + <(printf "%s\n" "${current_pkglist[@]}") || true)) + if [[ -n deplist ]]; then
My brain tells me there's a way to avoid this, but I'm not sure I trust it right now.
I have not thought of one... let me know if your brain is working better now and has come up with the answer!
What about something like...
local dep deplist while read -r dep; do deplist+=("$dep") done < <(grep -xvFf <(printf "%s\n" "${original_pkglist[@]}") \ <(printf "%s\n" "${current_pkglist[@]}"))
if (( ${#deplist[*]} )); then return fi
I'm not sure the whole "while read" construct is worth it to get rid of the || true. I'll just leave my patch as it is for now unless you really feel strongly that I should not do it that way...
Allan
Yeah, I'm not sure either. Ideally we'd have something decent like an array_diff or array_subtract function, but passing arrays in bash is an undocumented feature and otherwise awful to do "properly".