wxGetHomeDir() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@697 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
#include "wx/utils.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/cursor.h"
|
||||
#endif
|
||||
#endif //WX_PRECOMP
|
||||
|
||||
#include "wx/msw/private.h"
|
||||
#include "wx/timer.h"
|
||||
@@ -37,17 +37,18 @@
|
||||
#ifndef __GNUWIN32__
|
||||
#include <direct.h>
|
||||
#include <dos.h>
|
||||
#endif
|
||||
#endif //GNUWIN32
|
||||
|
||||
#ifdef __GNUWIN32__
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#ifndef __MINGW32__
|
||||
#include <std.h>
|
||||
#endif
|
||||
#endif //MINGW32
|
||||
|
||||
#define stricmp strcasecmp
|
||||
#endif
|
||||
#endif //GNUWIN32
|
||||
|
||||
#include "wx/log.h"
|
||||
|
||||
#ifdef __BORLANDC__ // Please someone tell me which version of Borland needs
|
||||
// this (3.1 I believe) and how to test for it.
|
||||
@@ -508,6 +509,64 @@ bool wxIsBusy(void)
|
||||
return (wxBusyCursorCount > 0);
|
||||
}
|
||||
|
||||
const char* WXDLLEXPORT wxGetHomeDir(wxString *pstr)
|
||||
{
|
||||
wxString& strDir = *pstr;
|
||||
|
||||
#ifdef __UNIX__
|
||||
const char *szHome = getenv("HOME");
|
||||
if ( szHome == NULL ) {
|
||||
// we're homeless...
|
||||
wxLogWarning(_("can't find user's HOME, using current directory."));
|
||||
strDir = ".";
|
||||
}
|
||||
else
|
||||
strDir = szHome;
|
||||
|
||||
// add a trailing slash if needed
|
||||
if ( strDir.Last() != '/' )
|
||||
strDir << '/';
|
||||
#else // Windows
|
||||
#ifdef __WIN32__
|
||||
const char *szHome = getenv("HOMEDRIVE");
|
||||
if ( szHome != NULL )
|
||||
strDir << szHome;
|
||||
szHome = getenv("HOMEPATH");
|
||||
if ( szHome != NULL ) {
|
||||
strDir << szHome;
|
||||
|
||||
// the idea is that under NT these variables have default values
|
||||
// of "%systemdrive%:" and "\\". As we don't want to create our
|
||||
// config files in the root directory of the system drive, we will
|
||||
// create it in our program's dir. However, if the user took care
|
||||
// to set HOMEPATH to something other than "\\", we suppose that he
|
||||
// knows what he is doing and use the supplied value.
|
||||
if ( strcmp(szHome, "\\") != 0 )
|
||||
return strDir.c_str();
|
||||
}
|
||||
|
||||
#else // Win16
|
||||
// Win16 has no idea about home, so use the working directory instead
|
||||
#endif // WIN16/32
|
||||
|
||||
// 260 was taken from windef.h
|
||||
#ifndef MAX_PATH
|
||||
#define MAX_PATH 260
|
||||
#endif
|
||||
|
||||
wxString strPath;
|
||||
::GetModuleFileName(::GetModuleHandle(NULL),
|
||||
strPath.GetWriteBuf(MAX_PATH), MAX_PATH);
|
||||
strPath.UngetWriteBuf();
|
||||
|
||||
// extract the dir name
|
||||
wxSplitPath(strPath, &strDir, NULL, NULL);
|
||||
|
||||
#endif // UNIX/Win
|
||||
|
||||
return strDir.c_str();
|
||||
}
|
||||
|
||||
// Hack for MS-DOS
|
||||
char *wxGetUserHome (const wxString& user)
|
||||
{
|
||||
@@ -518,13 +577,13 @@ char *wxGetUserHome (const wxString& user)
|
||||
char tmp[64];
|
||||
if (wxGetUserId(tmp, sizeof(tmp)/sizeof(char))) {
|
||||
// Guests belong in the temp dir
|
||||
if (stricmp(tmp, "annonymous") == 0) {
|
||||
if (Stricmp(tmp, "annonymous") == 0) {
|
||||
if ((home = getenv("TMP")) != NULL ||
|
||||
(home = getenv("TMPDIR")) != NULL ||
|
||||
(home = getenv("TEMP")) != NULL)
|
||||
return *home ? home : "\\";
|
||||
}
|
||||
if (stricmp(tmp, WXSTRINGCAST user1) == 0)
|
||||
if (Stricmp(tmp, WXSTRINGCAST user1) == 0)
|
||||
user1 = "";
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user