Enable lite-xl to be started from a symlink to the deployed binary (#249)

Use resolved executablePath instead of resourcePath to allow lanching
the lite-xl binary via a symlink, like typically done by Homebrew:

/usr/local/bin/lite-xl -> /Applications/lite-xl.app/Contents/MacOS/lite-xl

The resourcePath returns /usr/local in this case instead of
/Applications/lite-xl.app/Contents/Resources, which makes later
access to the resource files fail. Resolving the symlink to the
executable and then the relative path to the expected directory
Resources is a workaround for starting the application from both
the launcher directly and the command line via the symlink.
This commit is contained in:
Ferdinand Prantl
2021-06-03 21:48:15 +02:00
committed by GitHub
parent f23419994d
commit 1eabf99054
2 changed files with 26 additions and 3 deletions
+7 -1
View File
@@ -1,4 +1,5 @@
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include "api/api.h"
#include "rencache.h"
@@ -62,8 +63,13 @@ static void get_exe_filename(char *buf, int sz) {
int len = readlink(path, buf, sz - 1);
buf[len] = '\0';
#elif __APPLE__
/* use realpath to resolve a symlink if the process was launched from one.
** This happens when Homebrew installs a cack and creates a symlink in
** /usr/loca/bin for launching the executable from the command line. */
unsigned size = sz;
_NSGetExecutablePath(buf, &size);
char exepath[size];
_NSGetExecutablePath(exepath, &size);
realpath(exepath, buf);
#else
strcpy(buf, "./lite");
#endif