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

@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