X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffmsapp.cpp;h=94443c4cd8440e298bda8018b8b986b4bbea85d4;hb=026dc6b2bc548c945359c4e166eff514f2c47c6a;hp=318244382475fd013734060e7e85f9eec3d77910;hpb=cd97061e86eeecf5b77dea35f0549e73a50eb200;p=fms.git diff --git a/src/fmsapp.cpp b/src/fmsapp.cpp index 3182443..94443c4 100644 --- a/src/fmsapp.cpp +++ b/src/fmsapp.cpp @@ -24,9 +24,17 @@ #include #endif -FMSApp::FMSApp():m_displayhelp(false),m_showoptions(false),m_setoption(false),m_logtype("file") +FMSApp::FMSApp():m_displayhelp(false),m_showoptions(false),m_setoption(false),m_logtype("file"),m_workingdirectory("") { - + // get current working dir so we can go to it later + char wd[1024]; + char *wdptr=NULL; + memset(wd,0,1024); + wdptr=getcwd(wd,1023); + if(wdptr) + { + m_workingdirectory=wdptr; + } } void FMSApp::defineOptions(Poco::Util::OptionSet &options) @@ -90,8 +98,12 @@ void FMSApp::initialize(Poco::Util::Application &self) { ServerApplication::initialize(self); - // set working directory to program directory - int rval=chdir(config().getString("application.dir").c_str()); + // set working directory - fall back on application.dir if working directory isn't set + if(m_workingdirectory=="") + { + m_workingdirectory=config().getString("application.dir"); + } + int rval=chdir(m_workingdirectory.c_str()); SetupDB(); SetupDefaultOptions(); @@ -145,8 +157,7 @@ int FMSApp::main(const std::vector &args) // running as a daemon would reset the working directory to / before calling main // so we need to set the working directory again - // set working directory to program directory - int rval=chdir(config().getString("application.dir").c_str()); + int rval=chdir(m_workingdirectory.c_str()); if(m_displayhelp) {