wxGetHomeDir() added

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@697 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1998-09-07 08:56:29 +00:00
parent 040f0110fc
commit 743e0a66f6

View File

@@ -6,7 +6,7 @@
// Created: 04/01/98 // Created: 04/01/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem // Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license // Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
@@ -27,7 +27,7 @@
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/app.h" #include "wx/app.h"
#include "wx/cursor.h" #include "wx/cursor.h"
#endif #endif //WX_PRECOMP
#include "wx/msw/private.h" #include "wx/msw/private.h"
#include "wx/timer.h" #include "wx/timer.h"
@@ -37,17 +37,18 @@
#ifndef __GNUWIN32__ #ifndef __GNUWIN32__
#include <direct.h> #include <direct.h>
#include <dos.h> #include <dos.h>
#endif #endif //GNUWIN32
#ifdef __GNUWIN32__ #ifdef __GNUWIN32__
#include <sys/unistd.h> #include <sys/unistd.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifndef __MINGW32__ #ifndef __MINGW32__
#include <std.h> #include <std.h>
#endif #endif //MINGW32
#define stricmp strcasecmp #endif //GNUWIN32
#endif
#include "wx/log.h"
#ifdef __BORLANDC__ // Please someone tell me which version of Borland needs #ifdef __BORLANDC__ // Please someone tell me which version of Borland needs
// this (3.1 I believe) and how to test for it. // this (3.1 I believe) and how to test for it.
@@ -160,8 +161,8 @@ bool wxGetUserId(char *buf, int maxSize)
// Can't assume we have NIS (PC-NFS) or some other ID daemon // Can't assume we have NIS (PC-NFS) or some other ID daemon
// So we ... // So we ...
if ( (user = getenv("USER")) == NULL && if ( (user = getenv("USER")) == NULL &&
(user = getenv("LOGNAME")) == NULL ) { (user = getenv("LOGNAME")) == NULL ) {
// Use wxWindows configuration data (comming soon) // Use wxWindows configuration data (comming soon)
GetProfileString(WX_SECTION, eUSERID, default_id, buf, maxSize - 1); GetProfileString(WX_SECTION, eUSERID, default_id, buf, maxSize - 1);
} else } else
@@ -323,7 +324,7 @@ void wxFatalError(const wxString& msg, const wxString& title)
void wxBell(void) void wxBell(void)
{ {
#ifdef __WIN32__ #ifdef __WIN32__
Beep(1000,1000) ; // 1kHz during 1 sec. Beep(1000,1000) ; // 1kHz during 1 sec.
#else #else
MessageBeep(-1) ; MessageBeep(-1) ;
#endif #endif
@@ -346,19 +347,19 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn)
if (majorVsn) *majorVsn = info.dwMajorVersion; if (majorVsn) *majorVsn = info.dwMajorVersion;
if (minorVsn) *minorVsn = info.dwMinorVersion; if (minorVsn) *minorVsn = info.dwMinorVersion;
switch (info.dwPlatformId) switch (info.dwPlatformId)
{ {
case VER_PLATFORM_WIN32s: case VER_PLATFORM_WIN32s:
return wxWIN32S; return wxWIN32S;
break; break;
case VER_PLATFORM_WIN32_WINDOWS: case VER_PLATFORM_WIN32_WINDOWS:
return wxWIN95; return wxWIN95;
break; break;
case VER_PLATFORM_WIN32_NT: case VER_PLATFORM_WIN32_NT:
return wxWINDOWS_NT; return wxWINDOWS_NT;
break; break;
}
} }
return wxWINDOWS; // error if we get here, return generic value }
return wxWINDOWS; // error if we get here, return generic value
#else #else
// Win16 code... // Win16 code...
int retValue ; int retValue ;
@@ -508,6 +509,64 @@ bool wxIsBusy(void)
return (wxBusyCursorCount > 0); 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 // Hack for MS-DOS
char *wxGetUserHome (const wxString& user) char *wxGetUserHome (const wxString& user)
{ {
@@ -518,14 +577,14 @@ char *wxGetUserHome (const wxString& user)
char tmp[64]; char tmp[64];
if (wxGetUserId(tmp, sizeof(tmp)/sizeof(char))) { if (wxGetUserId(tmp, sizeof(tmp)/sizeof(char))) {
// Guests belong in the temp dir // Guests belong in the temp dir
if (stricmp(tmp, "annonymous") == 0) { if (Stricmp(tmp, "annonymous") == 0) {
if ((home = getenv("TMP")) != NULL || if ((home = getenv("TMP")) != NULL ||
(home = getenv("TMPDIR")) != NULL || (home = getenv("TMPDIR")) != NULL ||
(home = getenv("TEMP")) != NULL) (home = getenv("TEMP")) != NULL)
return *home ? home : "\\"; return *home ? home : "\\";
} }
if (stricmp(tmp, WXSTRINGCAST user1) == 0) if (Stricmp(tmp, WXSTRINGCAST user1) == 0)
user1 = ""; user1 = "";
} }
} }
if (user1 == "") if (user1 == "")
@@ -542,19 +601,19 @@ char *wxGetUserHome (const wxString& user)
// in long calculations. // in long calculations.
bool wxCheckForInterrupt(wxWindow *wnd) bool wxCheckForInterrupt(wxWindow *wnd)
{ {
if(wnd){ if(wnd){
MSG msg; MSG msg;
HWND win= (HWND) wnd->GetHWND(); HWND win= (HWND) wnd->GetHWND();
while(PeekMessage(&msg,win,0,0,PM_REMOVE)){ while(PeekMessage(&msg,win,0,0,PM_REMOVE)){
TranslateMessage(&msg); TranslateMessage(&msg);
DispatchMessage(&msg); DispatchMessage(&msg);
} }
return TRUE;//*** temporary? return TRUE;//*** temporary?
} }
else{ else{
wxError("wnd==NULL !!!"); wxError("wnd==NULL !!!");
return FALSE;//*** temporary? return FALSE;//*** temporary?
} }
} }
// MSW only: get user-defined resource from the .res file. // MSW only: get user-defined resource from the .res file.