summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pkg_add
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2019-11-15 18:28:13 +0000
committerespie <espie@openbsd.org>2019-11-15 18:28:13 +0000
commitb48a274eed59ba227f0bf6a05bb075837e7d8d4a (patch)
treef31115cec257142ab5a06cd80eb1d98ade4c09cb /usr.sbin/pkg_add
parentRemove gratuitous #ifdef. (diff)
downloadwireguard-openbsd-b48a274eed59ba227f0bf6a05bb075837e7d8d4a.tar.xz
wireguard-openbsd-b48a274eed59ba227f0bf6a05bb075837e7d8d4a.zip
nicer order of multi-choice packages (by version if everything else is
equal, alphabetically otherwise) prompted by claudio@, okay claudio@ kmos@
Diffstat (limited to 'usr.sbin/pkg_add')
-rw-r--r--usr.sbin/pkg_add/OpenBSD/AddDelete.pm16
1 files changed, 14 insertions, 2 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/AddDelete.pm b/usr.sbin/pkg_add/OpenBSD/AddDelete.pm
index b335f5b7cc9..901e949d9d7 100644
--- a/usr.sbin/pkg_add/OpenBSD/AddDelete.pm
+++ b/usr.sbin/pkg_add/OpenBSD/AddDelete.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: AddDelete.pm,v 1.91 2019/08/19 12:09:07 espie Exp $
+# $OpenBSD: AddDelete.pm,v 1.92 2019/11/15 18:28:13 espie Exp $
#
# Copyright (c) 2007-2010 Marc Espie <espie@openbsd.org>
#
@@ -407,7 +407,19 @@ sub choose_location
if ($state->is_interactive) {
$h{'<None>'} = undef;
$state->progress->clear;
- my $result = $state->ask_list("Ambiguous: choose package for $name", sort keys %h);
+ my $cmp = sub {
+ return -1 if !defined $h{$a};
+ return 1 if !defined $h{$b};
+ my $r = $h{$a}->pkgname->to_pattern cmp
+ $h{$b}->pkgname->to_pattern;
+ if ($r == 0) {
+ return $h{$a}->pkgname->{version}->
+ compare($h{$b}->pkgname->{version});
+ } else {
+ return $r;
+ }
+ };
+ my $result = $state->ask_list("Ambiguous: choose package for $name", sort $cmp keys %h);
return $h{$result};
} else {
$state->errsay("Ambiguous: #1 could be #2",