Change CWD to the program's directory.

This commit is contained in:
Naim A 2013-08-16 00:52:36 +03:00
parent f7297aa4be
commit 9d7c7a055e

View file

@ -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)