From f63e260c843c76b1168b4377f77ef41c6f92182c Mon Sep 17 00:00:00 2001 From: vidplace7 Date: Tue, 25 Feb 2025 22:25:05 -0500 Subject: [PATCH] Customize VFS location via meshtasticd --- cores/portduino/main.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/cores/portduino/main.cpp b/cores/portduino/main.cpp index 630d7c6..e4da474 100644 --- a/cores/portduino/main.cpp +++ b/cores/portduino/main.cpp @@ -113,6 +113,14 @@ void portduinoAddArguments(const struct argp_child &child, childArguments = _childArguments; } +/** + * call from portduinoSetup() if you want to specify a custom filesystem root + */ +static const char* portduinoCustomfsRoot = nullptr; +void portduinoCustomFSDir(const char *newFsRoot) { + portduinoCustomfsRoot = newFsRoot; +} + void reboot() { int err = execv(progArgv[0], progArgv); printf("execv() returned %i!\n", err); @@ -141,18 +149,23 @@ int main(int argc, char *argv[]) { String fsRoot; if (!args->fsDir) { - // create a default dir + if(portduinoCustomfsRoot) { + fsRoot = portduinoCustomfsRoot; + } else { + // create a default dir - const char *homeDir = getenv("HOME"); - assert(homeDir); + const char *homeDir = getenv("HOME"); + assert(homeDir); - fsRoot += homeDir + String("/.portduino"); - mkdir(fsRoot.c_str(), 0700); + fsRoot += homeDir + String("/.portduino"); + mkdir(fsRoot.c_str(), 0700); - const char *instanceName = "default"; - fsRoot += "/" + String(instanceName); - } else + const char *instanceName = "default"; + fsRoot += "/" + String(instanceName); + } + } else { fsRoot += args->fsDir; + } printf("Portduino is starting, VFS root at %s\n", fsRoot.c_str());