diff options
Diffstat (limited to 'src/lib/blacklist.sh')
-rwxr-xr-x | src/lib/blacklist.sh | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/blacklist.sh b/src/lib/blacklist.sh index e3d976b..c092ed3 100755 --- a/src/lib/blacklist.sh +++ b/src/lib/blacklist.sh @@ -93,7 +93,24 @@ blacklist-get-pkg() { # Usage: blacklist-cat | blacklist-get-rep # Prints only the replacement package field of the blacklist line(s) on stdin. blacklist-get-rep() { - blacklist-normalize | cut -d: -f2 + local -a targets=($(blacklist-get-pkg)) + expac -Ss '%r/%n %n %P %R' | awk -v arr="${targets[*]}" ' + { + gsub("[=<>]+[^[:blank:]]*", "", $0) # discard versioning + # build pkg -> providers table from pkg -> provides + for (provided = 2; provided <= NF; ++provided) { + if (! seen[$1 " " $provided]++) { + providers[$provided] = providers[$provided] $1 " " + } + } + } + END { + split(arr, targets, " ") + for (pkg in targets) { + sub("[ \t]+$", "", providers[targets[pkg]]) + print providers[targets[pkg]] + } + }' } # Usage: blacklist-cat | blacklist-get-url |