diff --git a/debian/changelog b/debian/changelog index 65c311a..69f50c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +alien (6.58) unstable; urgency=low + + * Patch from Michael Barabanov to make -n work by + preventing rpm from expanding stuff like %S in the uuencoded scripts. + + -- Joey Hess Sun, 12 Mar 2000 15:39:07 -0800 + alien (6.57) unstable; urgency=low * Corrected priority in control file to optional; ftp admins, please take diff --git a/lib/Torpm.pm b/lib/Torpm.pm index 65411b6..3ae0aa1 100644 --- a/lib/Torpm.pm +++ b/lib/Torpm.pm @@ -13,16 +13,19 @@ sub FixFields { my ($self,%fields)=@_; # Fix up the scripts. Since debian/slackware scripts can be anything, even # perl programs or binary files, and redhat is limited to only shell scripts, - # we need to encode the files and add a scrap of shell script to make it + # we need to encode the files and add a scrap of shell script to make it # unextract and run on the fly. my $field; foreach $field ('POSTINST', 'POSTRM', 'PREINST', 'PRERM') { if ($fields{$field}) { + # Rpm expands %S, so escape such things. + ` my $f = pack("u",$fields{$field}); + $f =~ s/%/%%/g; $fields{$field}= "set -e\n". "mkdir /tmp/alien.\$\$\n". qq{perl -pe '\$_=unpack("u",\$_)' << '__EOF__' > /tmp/alien.\$\$/script\n}. - pack("u",$fields{$field}). + $f. "__EOF__\n". "chmod 755 /tmp/alien.\$\$/script\n". "/tmp/alien.\$\$/script \"\$@\"\n".