mirror of
https://github.com/lindbergh-loader/lindbergh-loader.git
synced 2026-10-14 01:49:12 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b426f0d11 | ||
|
|
442d03b144 | ||
|
|
50a1a35f7f |
@@ -11,6 +11,7 @@
|
|||||||
#define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
|
#define LD_LIBRARY_PATH "LD_LIBRARY_PATH"
|
||||||
#define LD_PRELOAD "LD_PRELOAD"
|
#define LD_PRELOAD "LD_PRELOAD"
|
||||||
#define PRELOAD_FILE_NAME "lindbergh.so"
|
#define PRELOAD_FILE_NAME "lindbergh.so"
|
||||||
|
#define PRELOAD_FILE_FLATPAK "/app/lib32/lindbergh.so"
|
||||||
#define TEAM "bobbydilley, retrofan, dkeruza-neo, doozer, francesco, rolel, caviar-x"
|
#define TEAM "bobbydilley, retrofan, dkeruza-neo, doozer, francesco, rolel, caviar-x"
|
||||||
#define LINDBERGH_CONFIG_PATH "LINDBERGH_CONFIG_PATH"
|
#define LINDBERGH_CONFIG_PATH "LINDBERGH_CONFIG_PATH"
|
||||||
|
|
||||||
@@ -232,7 +233,7 @@ void testModePath(char *name)
|
|||||||
* Makes sure the environment variables are set correctly
|
* Makes sure the environment variables are set correctly
|
||||||
* to run the game.
|
* to run the game.
|
||||||
*/
|
*/
|
||||||
void setEnvironmentVariables()
|
void setEnvironmentVariables(int isFlatpak)
|
||||||
{
|
{
|
||||||
// Ensure the library path is set correctly
|
// Ensure the library path is set correctly
|
||||||
char libraryPath[128] = {0};
|
char libraryPath[128] = {0};
|
||||||
@@ -249,7 +250,10 @@ void setEnvironmentVariables()
|
|||||||
setenv(LD_LIBRARY_PATH, libraryPath, 1);
|
setenv(LD_LIBRARY_PATH, libraryPath, 1);
|
||||||
|
|
||||||
// Ensure the preload path is set correctly
|
// Ensure the preload path is set correctly
|
||||||
setenv(LD_PRELOAD, PRELOAD_FILE_NAME, 1);
|
if (!isFlatpak)
|
||||||
|
setenv(LD_PRELOAD, PRELOAD_FILE_NAME, 1);
|
||||||
|
else
|
||||||
|
setenv(LD_PRELOAD, PRELOAD_FILE_FLATPAK, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -316,9 +320,6 @@ void printVersion() {
|
|||||||
*/
|
*/
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// Ensure environment variables are set correctly
|
|
||||||
setEnvironmentVariables();
|
|
||||||
|
|
||||||
// Check for --version before directory operations
|
// Check for --version before directory operations
|
||||||
if (argc > 1 && strcmp(argv[1], "--version") == 0) {
|
if (argc > 1 && strcmp(argv[1], "--version") == 0) {
|
||||||
printVersion();
|
printVersion();
|
||||||
@@ -338,6 +339,7 @@ int main(int argc, char *argv[])
|
|||||||
char *game = NULL;
|
char *game = NULL;
|
||||||
|
|
||||||
int lindberghSharedObjectFound = 0;
|
int lindberghSharedObjectFound = 0;
|
||||||
|
int isFlatpak = 0;
|
||||||
|
|
||||||
while ((ent = readdir(dir)) != NULL)
|
while ((ent = readdir(dir)) != NULL)
|
||||||
{
|
{
|
||||||
@@ -385,10 +387,22 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (!lindberghSharedObjectFound)
|
if (!lindberghSharedObjectFound)
|
||||||
{
|
{
|
||||||
log_error("The preload object lindbergh.so was not found in this directory.");
|
FILE *file = fopen(PRELOAD_FILE_FLATPAK, "r");
|
||||||
return EXIT_FAILURE;
|
if (file)
|
||||||
|
{
|
||||||
|
fclose(file);
|
||||||
|
isFlatpak = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log_error("The preload object lindbergh.so was not found in this directory.");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure environment variables are set correctly
|
||||||
|
setEnvironmentVariables(isFlatpak);
|
||||||
|
|
||||||
// Build up the command to start the game
|
// Build up the command to start the game
|
||||||
|
|
||||||
int testMode = 0;
|
int testMode = 0;
|
||||||
|
|||||||
@@ -1432,16 +1432,30 @@ int parseCgcArgs(const char *input, const char ***compilerArgs, const char **out
|
|||||||
|
|
||||||
void loadLibCg()
|
void loadLibCg()
|
||||||
{
|
{
|
||||||
|
int isFlatpak = 0;
|
||||||
void *handle = dlopen("./libCg.so", RTLD_NOW);
|
void *handle = dlopen("./libCg.so", RTLD_NOW);
|
||||||
if (!handle)
|
if (!handle)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Error: Unable to load library libCg.so %s\n", dlerror());
|
handle = dlopen("/app/lib32/libCg2.so", RTLD_NOW);
|
||||||
fprintf(stderr, "Error: libCg.so version 2.0 is needed to compile the shaders in the game's folder.\n");
|
if (!handle)
|
||||||
exit(1);
|
{
|
||||||
|
fprintf(stderr, "Error: Unable to load library libCg.so %s\n", dlerror());
|
||||||
|
fprintf(stderr, "Error: libCg.so version 2.0 is needed to compile the shaders in the game's folder.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isFlatpak = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char libCgVersion[9];
|
char libCgVersion[9];
|
||||||
FILE *libF = fopen("./libCg.so", "r");
|
FILE *libF;
|
||||||
|
if (isFlatpak)
|
||||||
|
libF = fopen("/app.lib32/libCg.so", "r");
|
||||||
|
else
|
||||||
|
libF = fopen("./libCg.so", "r");
|
||||||
|
|
||||||
fseek(libF, 0x226d84, SEEK_SET);
|
fseek(libF, 0x226d84, SEEK_SET);
|
||||||
fread(libCgVersion, 9, 1, libF);
|
fread(libCgVersion, 9, 1, libF);
|
||||||
fclose(libF);
|
fclose(libF);
|
||||||
|
|||||||
Reference in New Issue
Block a user