diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-07-05 19:31:40 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-07-06 15:58:10 +0100 |
commit | f357ad2b38ecd64115aa3613e183fb61f057e2f7 (patch) | |
tree | 49021b2730e2986187b2a8cb70f3e5a317411b94 /infra | |
parent | f78fc122ea55be9cac0be8a15bab02e9b7549d41 (diff) |
dgit-repos-server: Break apart parsetag()
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'infra')
-rwxr-xr-x | infra/dgit-repos-server | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/infra/dgit-repos-server b/infra/dgit-repos-server index 2fa9090..7b8849a 100755 --- a/infra/dgit-repos-server +++ b/infra/dgit-repos-server @@ -552,7 +552,8 @@ sub readupdates () { printdebug " updates ok.\n"; } -sub parsetag () { +sub parsetag_general ($$) { + my ($mainfn, $dgititemfn) = @_; printdebug " parsetag...\n"; open PT, ">dgit-tmp/plaintext" or die $!; open DS, ">dgit-tmp/plaintext.asc" or die $!; @@ -569,12 +570,8 @@ sub parsetag () { } } $!=0; $_=<T>; defined or die $!; - m/^($package_re) release (\S+) for \S+ \((\S+)\) \[dgit\]$/ or - reject "tag message not in expected format"; - die unless $1 eq $package; - $version = $2; - die "$3 != $suite " unless $3 eq $suite; + $mainfn->(); my $copyl = $_; for (;;) { @@ -584,13 +581,9 @@ sub parsetag () { if (m/^\[dgit ([^"].*)\]$/) { # [dgit "something"] is for future $_ = $1." "; while (length) { - if (s/^distro\=(\S+) //) { + if ($dgititemfn->()) { + } elsif (s/^distro\=(\S+) //) { die "$1 != $distro" unless $1 eq $distro; - } elsif (s/^(--deliberately-$deliberately_re) //) { - push @deliberatelies, $1; - } elsif (s/^previously:(\S+)=(\w+) //) { - die "previously $1 twice" if defined $previously{$1}; - $previously{$1} = $2; } elsif (s/^[-+.=0-9a-z]\S* //) { } else { die "unknown dgit info in tag ($_)"; @@ -612,6 +605,26 @@ sub parsetag () { printdebug " parsetag ok.\n"; } +sub parsetag () { + parsetag_general sub { + m/^($package_re) release (\S+) for \S+ \((\S+)\) \[dgit\]$/ or + reject "tag message not in expected format"; + die unless $1 eq $package; + $version = $2; + die "$3 != $suite " unless $3 eq $suite; + }, sub { + if (s/^(--deliberately-$deliberately_re) //) { + push @deliberatelies, $1; + } elsif (s/^previously:(\S+)=(\w+) //) { + die "previously $1 twice" if defined $previously{$1}; + $previously{$1} = $2; + } else { + return 0; + } + return 1; + }; +} + sub checksig_keyring ($) { my ($keyringfile) = @_; # returns primary-keyid if signed by a key in this keyring |