Change CWD to the program's directory.
This commit is contained in:
parent
f7297aa4be
commit
9d7c7a055e
45
src/main.cpp
45
src/main.cpp
|
@ -71,6 +71,48 @@ static void _doAPIStart (Settings *settings, WebApp **wa, HTTPServer **srv, Data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets current working directory to executables directory.
|
||||||
|
*/
|
||||||
|
static void _setCWD (char *argv0)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
wchar_t strFileName [MAX_PATH];
|
||||||
|
DWORD r, i;
|
||||||
|
r = GetModuleFileNameW(NULL, strFileName, MAX_PATH);
|
||||||
|
for (i = r;i >= 0;i--)
|
||||||
|
{
|
||||||
|
if (strFileName[i] == '\\')
|
||||||
|
{
|
||||||
|
strFileName[i] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetCurrentDirectoryW(strFileName);
|
||||||
|
|
||||||
|
#elif defined(linux)
|
||||||
|
int len, i;
|
||||||
|
char *strFN;
|
||||||
|
if (argv0 != NULL)
|
||||||
|
{
|
||||||
|
len = strlen (argv0);
|
||||||
|
strFN = new char [len + 1];
|
||||||
|
|
||||||
|
for (i = len;i >= 0;i--)
|
||||||
|
{
|
||||||
|
if (strFN[i] == '/')
|
||||||
|
{
|
||||||
|
strFN = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chdir (strFN);
|
||||||
|
delete [] strFN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
Settings *settings = NULL;
|
Settings *settings = NULL;
|
||||||
|
@ -91,6 +133,9 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
if (argc <= 1)
|
if (argc <= 1)
|
||||||
{
|
{
|
||||||
|
// set current directory when no filename is present.
|
||||||
|
_setCWD(argv[0]);
|
||||||
|
|
||||||
_print_usage ();
|
_print_usage ();
|
||||||
}
|
}
|
||||||
else if (argc >= 2)
|
else if (argc >= 2)
|
||||||
|
|
Loading…
Reference in a new issue