]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Control.pm
Package member key is the fully-qualified name; fix error in get
[debbugs.git] / Debbugs / Control.pm
index 916a02e32db40eff05c1a905a442a8a570fa8d95..1f8b3aac60d3cb98fe5264795fc7806e795c4bac 100644 (file)
@@ -380,8 +380,8 @@ sub set_blocks {
     # blocker
     if (keys %bad_blockers and $mode eq 'set') {
        __end_control(%info);
-       croak "Unknown blocking bug(s):".join(', ',keys %bad_blockers).
-           keys %ok_blockers?'':" and no known blocking bug(s)";
+       croak "Unknown/archived blocking bug(s):".join(', ',keys %bad_blockers).
+           keys %ok_blockers?'':" and no good blocking bug(s)";
     }
     # if there are no ok blockers and we are not setting the blockers,
     # there's an error.
@@ -389,7 +389,7 @@ sub set_blocks {
        print {$transcript} "No valid blocking bug(s) given; not doing anything\n";
        if (keys %bad_blockers) {
            __end_control(%info);
-           croak "Unknown blocking bug(s):".join(', ',keys %bad_blockers);
+           croak "Unknown/archived blocking bug(s):".join(', ',keys %bad_blockers);
        }
        __end_control(%info);
        return;
@@ -3246,6 +3246,15 @@ sub bug_unarchive {
      my @bugs = @{$info{bugs}};
      my $action = "$config{bug} unarchived.";
      my @files_to_remove;
+     ## error out if we're unarchiving unarchived bugs
+     for my $data (@{$info{data}}) {
+        if (not defined $data->{archived} or
+            not $data->{archived}
+           ) {
+            __end_control(%info);
+            croak("Bug $data->{bug_num} was not archived; not unarchiving it.");
+        }
+     }
      for my $bug (@bugs) {
          print {$debug} "$param{bug} removing $bug\n";
          my $dir = get_hashname($bug);