From f357ad2b38ecd64115aa3613e183fb61f057e2f7 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 5 Jul 2019 19:31:40 +0100 Subject: [PATCH] dgit-repos-server: Break apart parsetag() No functional change. Signed-off-by: Ian Jackson --- infra/dgit-repos-server | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/infra/dgit-repos-server b/infra/dgit-repos-server index 2fa9090a..7b8849a8 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; $_=; 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 -- 2.30.2