Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from May 7, 2019

Conversation

@gicmo
Copy link
Contributor

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 Apr 30, 2019
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

This comment has been minimized.

Copy link
Contributor Author

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
1 check passed
1 check passed
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@aejsmith

This comment has been minimized.

Copy link
Contributor

commented May 7, 2019

LGTM, thanks!

@gicmo gicmo deleted the gicmo:sandbox_root branch May 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.