Use readlink instead of realpath so find_exe works for flatpaks #136
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.