simplify code based on afresh1@'s remark: indeed I always need to
authorespie <espie@openbsd.org>
Tue, 15 Feb 2022 07:35:35 +0000 (07:35 +0000)
committerespie <espie@openbsd.org>
Tue, 15 Feb 2022 07:35:35 +0000 (07:35 +0000)
have a state once I'm past the initial locking

usr.sbin/pkg_add/OpenBSD/PackageInfo.pm

index 2c67e64..865deb4 100644 (file)
@@ -1,5 +1,5 @@
 # ex:ts=8 sw=4:
-# $OpenBSD: PackageInfo.pm,v 1.62 2022/02/14 10:34:36 espie Exp $
+# $OpenBSD: PackageInfo.pm,v 1.63 2022/02/15 07:35:35 espie Exp $
 #
 # Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org>
 #
@@ -191,23 +191,18 @@ sub lock_db($;$)
 {
        my ($shared, $state) = @_;
        my $mode = $shared ? LOCK_SH : LOCK_EX;
-       my $s = 
-           sub {
-               if (!defined $state) {
-                       require OpenBSD::BaseState;
-                       return 'OpenBSD::BaseState';
-               } else {
-                       return $state;
-               }
-           };
        open($dlock, '<', $pkg_db) or return;
        if (flock($dlock, $mode | LOCK_NB)) {
                return;
        }
-       &$s->errprint("Package database already locked... awaiting release... ");
+       if (!defined $state) {
+               require OpenBSD::BaseState;
+               $state = 'OpenBSD::BaseState';
+       }
+       $state->errprint("Package database already locked... awaiting release... ");
        while (!flock($dlock, $mode)) {
        }
-       &$s->errsay("done!");
+       $state->errsay("done!");
        return;
 }