From: Ian Jackson Date: Sat, 25 Jul 2009 11:05:52 +0000 (+0100) Subject: metadata as tsv text header X-Git-Tag: 3.0~41 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.main.git;a=commitdiff_plain;h=e9a9436c3d826aa12bea29c567769049a90198ad metadata as tsv text header --- diff --git a/pctb/commod-update-receiver b/pctb/commod-update-receiver index 11064cd..532bf31 100755 --- a/pctb/commod-update-receiver +++ b/pctb/commod-update-receiver @@ -119,16 +119,29 @@ foreach my $cs (qw(client server)) { $o{"${cs}spec"}= join ' ', map { $o{$cs.$_} } qw(name version fixes); } -foreach my $vn (sort keys %o) { - my $mpart= MIME::Entity->build(Top => 0, - Type => 'text/plain', - Charset => 'utf-8', - Disposition => 'attachment', - Filename => $vn, - Data => $o{$vn}); - $mcontent->add_part($mpart); +my $metadata= ''; + +sub ksmap ($) { + my ($v) = @_; + my $i=0; grep { return $i if $_ eq $v; $i++ } qw(ocean island timestamp); + sprintf "z %d %s", (length $v) / 8, $v; } +foreach my $vn (sort { ksmap($a) cmp ksmap($b) } keys %o) { + my $val= $o{$vn}; + die if $val =~ m/\n|\r|\t/; + $metadata .= "$vn\t$o{$vn}\n"; +} + +my $mdpart= MIME::Entity->build(Top => 0, + Type => 'text/plain', + Charset => 'utf-8', + Disposition => 'inline', + Encoding => 'quoted-printable', + Filename => 'metadata', + Data => $metadata); +$mcontent->add_part($mdpart); + my $gunzchild= open(GZ, "-|"); defined $gunzchild or die $!; if (!$gunzchild) { open STDIN, "<&=", $indatafh or die $!;