[pacman-dev] [arch-dev-public] [signoff] pacman 3.2.0

Xavier shiningxc at gmail.com
Thu Jul 31 09:15:05 EDT 2008

On Thu, Jul 31, 2008 at 2:50 PM, Allan McRae <allan at archlinux.org> wrote:
>> Indeed, that is the first problem, netfile should be quoted here.
>> local proto=$(echo "$netfile" | sed 's|://.*||')
> And that $netfile should be $url....

Yeah, apparently.

>> But once this is fixed, we run into a second problem, with another sed
>> command, which breaks because of all the & in the url.
>>  local dlcmd=$(echo "$dlagent" | sed "s|%o|$file.part|" | sed "s|%u|$netfile|"
>> $ netfile="ab&cd&ef"; echo "%u" | sed "s|%u|$netfile|"
>> ab%ucd%uef
>> $ netfile="ab\&cd\&ef"; echo "%u" | sed "s|%u|$netfile|"
>> ab&cd&ef
>> So I don't see how to fix this except manually escaping all & in the url...
> Well, to just make the bug more obscure.
> $ netfile="ab&cd&ef"; echo "%u" | sed "s|%u|$netfile|" | sed "s|\%u|\&|g"
> ab&cd&ef
> But that makes problems if there is a %u in the url.  But can we do some
> multistage hackery like that?

I really don't like this.

I think we could use bash feature instead.
echo ${netfile//foo/bar}
But even after converting the two above sed rules with this, I still
have other problem. It is driving me crazy.
When I print the whole download command myself, and copy/paste it to
the shell, it works fine.
But when it gets executed in makepkg with : $(get_downloadcmd foo
bar), it always fail.

More information about the pacman-dev mailing list