Add config path sepcification

This commit is contained in:
Synth_Magic
2025-01-10 20:52:07 +08:00
parent a3d476c584
commit fbc76dfe5e
5 changed files with 32 additions and 7 deletions
+9 -2
View File
@@ -1,3 +1,4 @@
#include <linux/limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -1341,7 +1342,7 @@ KeyMapping getDefaultKeymap()
return defaultKeyMapping;
}
int initConfig()
int initConfig(const char* configFilePath)
{
config.emulateRideboard = 0;
config.emulateDriveboard = 0;
@@ -1396,7 +1397,13 @@ int initConfig()
config.inputMode = 0; // Default to all inputs
configFile = fopen(CONFIG_PATH, "r");
char filePath[PATH_MAX] = CONFIG_PATH;
if (configFilePath != NULL && configFilePath[0] != '\0')
{
strcpy(filePath, configFilePath);
}
configFile = fopen(filePath, "r");
if (configFile == NULL)
{
+1 -1
View File
@@ -267,7 +267,7 @@ typedef struct
} EmulatorConfig;
KeyMapping getDefaultKeymap();
int initConfig();
int initConfig(const char* configFilePath);
EmulatorConfig *getConfig();
char *getGameName();
char *getDVPName();
+3 -1
View File
@@ -174,7 +174,9 @@ void __attribute__((constructor)) hook_init()
act.sa_flags = SA_SIGINFO;
sigaction(SIGSEGV, &act, NULL);
initConfig();
char *(*_getenv)(const char *name) = dlsym(RTLD_NEXT, "getenv");
char* envPath = _getenv("LINDBERGH_CONFIG_PATH");
initConfig(envPath);
if (getConfig()->fpsLimiter == 1)
{
+19 -2
View File
@@ -1,4 +1,5 @@
#include <dirent.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -12,6 +13,7 @@
#define LD_PRELOAD "LD_PRELOAD"
#define PRELOAD_FILE_NAME "lindbergh.so"
#define TEAM "bobbydilley, retrofan, dkeruza-neo, doozer, francesco, rolel, caviar-x"
#define LINDBERGH_CONFIG_PATH "LINDBERGH_CONFIG_PATH"
uint32_t elf_crc = 0;
@@ -119,6 +121,7 @@ void printUsage(char *argv[])
printf(" --list-controllers Lists available controllers and inputs\n");
printf(" --version Displays the version of the loader and team's names\n");
printf(" --help Displays this usage text\n");
printf(" --config | -c Specifies configuration path\n");
}
/**
@@ -248,8 +251,9 @@ int main(int argc, char *argv[])
int gdb = 0;
int forceGame = 0;
int segaboot = 0;
char extConfigPath[PATH_MAX] = {0};
char forceGamePath[128] = {0};
for (int i = 1; i < argc; i++)
{
if (strcmp(argv[i], "-t") == 0 || strcmp(argv[i], "--test") == 0)
@@ -269,7 +273,16 @@ int main(int argc, char *argv[])
gdb = 1;
continue;
}
if (strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--config") == 0)
{
if (i+1 >= argc)
{
break;
}
strcpy(extConfigPath, argv[i+1]);
i += 1;
continue;
}
// Treat the argument as the game name
strcpy(forceGamePath, argv[i]);
forceGame = 1;
@@ -305,6 +318,10 @@ int main(int argc, char *argv[])
strcat(temp, command);
strcpy(command, temp);
}
if (extConfigPath[0] != '\0')
{
setenv(LINDBERGH_CONFIG_PATH,extConfigPath,1);
}
log_info("Starting $ %s", command);
-1
View File
@@ -4,7 +4,6 @@
#include <stdarg.h>
#include <stdio.h>
#include <time.h>
// Structure to hold the formatted message and its size