]> code.delx.au - pulseaudio/commit
Don't refuse to start on systems using GNU stow, graft, STORE et al
authorNix <nix@esperi.org.uk>
Sat, 26 Sep 2009 19:18:00 +0000 (20:18 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Sep 2009 17:32:25 +0000 (19:32 +0200)
commiteac566226ed9026347cdb415a93ad9b15fbd8b45
tree40f1d8ab92b4c0dce2da8fc698faf0c5421bab5d
parentfaf113d95bfa6be3baa5d5a7330984e04bfd895f
Don't refuse to start on systems using GNU stow, graft, STORE et al

There are multiple package management systems out there which implement
packages using symlinks. The recent (otherwise useful) check to ensure that
a re-executed pulseaudio is actually reexecuting itself unfortunately breaks
in the presence of all these packaging systems, because PA_BINARY refers
to its installed location (e.g. /usr/local/bin/pulseaudio), which is a
symlink to the binary (e.g. /usr/local/stow/pulseaudio-0.9.18/bin/pulseaudio),
because /proc/self/exe always contains the canonical path of the executable,
with all symlinks resolved.

(At least one distribution uses a symlink-based packaging system, so
will be forced to apply this locally in any case.)

The fix is simple: canonicalize PA_BINARY before equality-testing. (This
should be completely safe, because the OS does just that when PA_BINARY
is executed.)

The patch is against 0.9.18, but applies without fuzz to current master.
src/daemon/main.c