Преглед изворни кода

Dpkg::Vendor::*: better handle unknown hooks

Implement vendor objects in a way that the return value for unknown
hooks is better defined: empty list in list context or undef in scalar
context.
Raphaël Hertzog пре 17 година
родитељ
комит
8c8f3aa28b
3 измењених фајлова са 9 додато и 8 уклоњено
  1. 3 5
      scripts/Dpkg/Vendor/Debian.pm
  2. 3 0
      scripts/Dpkg/Vendor/Default.pm
  3. 3 3
      scripts/Dpkg/Vendor/Ubuntu.pm

+ 3 - 5
scripts/Dpkg/Vendor/Debian.pm

@@ -36,11 +36,7 @@ for Debian specific actions.
 sub run_hook {
     my ($self, $hook, @params) = @_;
 
-    if ($hook eq "before-source-build") {
-        my $srcpkg = shift @params;
-    } elsif ($hook eq "before-changes-creation") {
-        my $fields = shift @params;
-    } elsif ($hook eq "keyrings") {
+    if ($hook eq "keyrings") {
         return ('/usr/share/keyrings/debian-keyring.gpg',
                 '/usr/share/keyrings/debian-maintainers.gpg');
     } elsif ($hook eq "register-custom-fields") {
@@ -50,6 +46,8 @@ sub run_hook {
             [ "insert_after", CTRL_APT_SRC, "Uploaders", "Dm-Upload-Allowed" ],
             [ "insert_after", CTRL_PKG_SRC, "Uploaders", "Dm-Upload-Allowed" ],
         );
+    } else {
+        return $self->SUPER::run_hook($hook, @params);
     }
 }
 

+ 3 - 0
scripts/Dpkg/Vendor/Default.pm

@@ -120,6 +120,9 @@ sub run_hook {
         my $fields = shift @params;
     }
 
+    # Default return value for unknown/unimplemented hooks
+    return () if wantarray;
+    return undef;
 }
 
 =back

+ 3 - 3
scripts/Dpkg/Vendor/Ubuntu.pm

@@ -61,9 +61,6 @@ sub run_hook {
            }
         }
 
-    } elsif ($hook eq "before-changes-creation") {
-        my $fields = shift @params;
-
     } elsif ($hook eq "keyrings") {
         my @keyrings = $self->SUPER::run_hook($hook);
 
@@ -87,6 +84,9 @@ sub run_hook {
         if (scalar(@$bugs)) {
             $fields->{"Launchpad-Bugs-Fixed"} = join(" ", @$bugs);
         }
+
+    } else {
+        return $self->SUPER::run_hook($hook, @params);
     }
 
 }