chiark / gitweb /
dgit: Dgit parsing: Move @ourdscfield loop into parse_dsc_field
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 54b0e6fc7719237d1d357459edfb6e2a3d360c62..eb6fb9cd5970169854b0a5f85551b746c03c23d9 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -727,7 +727,10 @@ sub access_basedistro () {
 
 sub access_nomdistro () {
     my $base = access_basedistro();
-    return cfg("dgit-distro.$base.nominal-distro",'RETURN-UNDEF') // $base;
+    my $r = cfg("dgit-distro.$base.nominal-distro",'RETURN-UNDEF') // $base;
+    $r =~ m/^$distro_re$/ or badcfg
+ "bad syntax for (nominal) distro \`$r' (does not match /^$distro_re$/)";
+    return $r;
 }
 
 sub access_quirk () {
@@ -2701,7 +2704,12 @@ sub fetch_from_archive_record_2 ($) {
 }
 
 sub parse_dsc_field ($$) {
-    my ($f, $what) = @_;
+    my ($dsc, $what) = @_;
+    my $f;
+    foreach my $field (@ourdscfield) {
+       $f = $dsc->{$field};
+       last if defined $f;
+    }
     if (!defined $f) {
        progress "$what: NO git hash";
     } elsif ($f =~ m/^\w+/) {
@@ -2723,12 +2731,7 @@ sub fetch_from_archive () {
     get_archive_dsc();
 
     if ($dsc) {
-       my $f;
-       foreach my $field (@ourdscfield) {
-           $f = $dsc->{$field};
-           last if defined $f;
-       }
-       parse_dsc_field($f, 'last upload to archive');
+       parse_dsc_field($dsc, 'last upload to archive');
     } else {
        progress "no version available from the archive";
     }
@@ -5898,8 +5901,7 @@ sub cmd_import_dsc {
 
     parse_dscdata();
 
-    my $dgit_field = $dsc->{$ourdscfield[0]};
-    parse_dsc_field($dgit_field, "$ourdscfield[0] field in .dsc");
+    parse_dsc_field($dsc, "Dgit metadata in .dsc");
 
     if (defined $dsc_hash
        && !forceing [qw(import-dsc-with-dgit-field)]) {