Skip to content

Use readlink instead of realpath so find_exe works for flatpaks#136

Merged
aejsmith merged 2 commits intoFeralInteractive:masterfrom
gicmo:sandbox_root
May 7, 2019
Merged

Use readlink instead of realpath so find_exe works for flatpaks#136
aejsmith merged 2 commits intoFeralInteractive:masterfrom
gicmo:sandbox_root

Conversation

@gicmo
Copy link
Contributor

@gicmo gicmo commented May 2, 2019

Currently to find the executable for a game, a call to realpath(3) of /proc//exe is made. The realpath(3) call will fail if the target does not exist (internally realpath will stat all the components of the link target path). This is a problem in the case of sandbox applications where the exe points to the absolute path inside the sandbox, e.g. to /app/bin/ in the case of flatpak. For these cases realpath(3) will then fail. Therefore use readlink(3) instead.

I have omitted the call to stat for the target because I am not sure it is necessary (and most likely the target will exist, because it just requested gamemode). I can add it though. Also by using readlink(3) we lose the ability to resolve names with .. components but for our use case that should not matter.

gicmo added 2 commits May 2, 2019 11:29
Add a inline helper function and a helper macro to be able to
automatically close file descriptors. Does nothing if the argument
is NULL or the pointed to integer is < 0.
The realpath(3) will fail if the target does not exist (internally
realpath will stat all the components of the link target path).
This is a problem in the case of sandbox applications where
the exe points to the absolute path *inside* the sandbox, e.g. to
/app/bin/<name> in the case of flatpak. For these cases realpath(3)
will then fail. Therefore use readlink(3) instead.
@gicmo gicmo changed the title Sandbox root Use readlink instead of realpath so find_exe works for flatpaks May 2, 2019
@gicmo
Copy link
Contributor Author

gicmo commented May 2, 2019

This is part of the ongoing efforts to make GameMode work with flatpak (see flathub/com.valvesoftware.Steam#77).

@aejsmith aejsmith merged commit d801fe1 into FeralInteractive:master May 7, 2019
@aejsmith
Copy link
Contributor

aejsmith commented May 7, 2019

LGTM, thanks!

@gicmo gicmo deleted the sandbox_root branch May 7, 2019 08:19
afayaz-feral pushed a commit that referenced this pull request May 26, 2020
Use readlink instead of realpath so find_exe works for flatpaks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants