X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fba44b4103530bd7904c4b5720b7568b753daec..89c831801467203372b6964a785823f19e8063dd:/src/os2/utils.cpp diff --git a/src/os2/utils.cpp b/src/os2/utils.cpp index a2f9dafe5a..ccf622b9a2 100644 --- a/src/os2/utils.cpp +++ b/src/os2/utils.cpp @@ -39,16 +39,19 @@ #define PURE_32 -#ifndef __EMX__ -#include -#include -#include +#if defined(__WATCOMC__) +extern "C" +{ + #include +} +#elif !defined(__EMX__) + #include + #include + #include #endif static const wxChar WX_SECTION[] = _T("wxWidgets"); static const wxChar eHOSTNAME[] = _T("HostName"); -static const wxChar eUSERID[] = _T("UserId"); -static const wxChar eUSERNAME[] = _T("UserName"); // For the following functions we SHOULD fill in support // for Windows-NT (which I don't know) as I assume it begin @@ -99,41 +102,30 @@ bool wxGetHostName( } // Get user ID e.g. jacs -bool wxGetUserId( - wxChar* zBuf -, int nType -) +bool wxGetUserId(wxChar* zBuf, int nType) { -#if defined(__VISAGECPP__) - long lrc; +#if defined(__VISAGECPP__) || defined(__WATCOMC__) // UPM procs return 0 on success - lrc = U32ELOCU((unsigned char*)zBuf, (unsigned long *)&nType); + long lrc = U32ELOCU((PUCHAR)zBuf, (PULONG)&nType); if (lrc == 0) return true; #endif return false; } -bool wxGetUserName( - wxChar* zBuf -, int nMaxSize -) +bool wxGetUserName( wxChar* zBuf, int nMaxSize ) { #ifdef USE_NET_API - wxGetUserId( zBuf - ,nMaxSize - ); + wxGetUserId( zBuf, nMaxSize ); #else wxStrncpy(zBuf, _T("Unknown User"), nMaxSize); #endif return true; } -int wxKill( - long lPid -, wxSignal eSig -, wxKillError* peError -, int flags -) +int wxKill(long lPid, + wxSignal WXUNUSED(eSig), + wxKillError* WXUNUSED(peError), + int WXUNUSED(flags)) { return((int)::DosKillProcess(0, (PID)lPid)); } @@ -198,7 +190,7 @@ bool wxShell( } // Shutdown or reboot the PC -bool wxShutdown(wxShutdownFlags wFlags) +bool wxShutdown(wxShutdownFlags WXUNUSED(wFlags)) { // TODO return false; @@ -219,10 +211,10 @@ wxBatteryState wxGetBatteryState() // Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) wxMemorySize wxGetFreeMemory() { - void* pMemptr = NULL; - LONG lSize; - ULONG lMemFlags; - APIRET rc; + void* pMemptr = NULL; + LONG lSize; + ULONG lMemFlags; + APIRET rc; lMemFlags = PAG_FREE; rc = ::DosQueryMem(pMemptr, (PULONG)&lSize, &lMemFlags); @@ -275,6 +267,8 @@ bool wxSetEnv(const wxString& variable, const wxChar *value) return putenv(buf) == 0; #else // no way to set an env var + wxUnusedVar(variable); + wxUnusedVar(value); return false; #endif } @@ -306,74 +300,40 @@ void wxFlushEvents() // wxYield(); } -#if WXWIN_COMPATIBILITY_2_2 - -// Output a debug mess., in a system dependent fashion. -void wxDebugMsg( - const wxChar* zFmt ... -) -{ - va_list vAp; - static wxChar zBuffer[512]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - va_start(vAp, zFmt); - sprintf(zBuffer, zFmt, vAp) ; - va_end(vAp); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError( - const wxString& rMsg -, const wxString& rTitle -) -{ - wxChar *wxBuffer = new wxChar[256]; - wxSprintf(wxBuffer, "%s\nContinue?", WXSTRINGCAST rMsg); - if (::WinMessageBox( HWND_DESKTOP - ,NULL - ,(PSZ)wxBuffer - ,(PSZ)WXSTRINGCAST rTitle - ,0 - ,MB_ICONEXCLAMATION | MB_YESNO - ) == MBID_YES) - delete[] wxBuffer; - wxExit(); -} - -// Fatal error: pop up message box and abort -void wxFatalError( - const wxString& rMsg -, const wxString& rTitle -) -{ - unsigned long ulRc; - - ulRc = ::WinMessageBox( HWND_DESKTOP - ,NULL - ,WXSTRINGCAST rMsg - ,WXSTRINGCAST rTitle - ,0 - ,MB_NOICON | MB_OK - ); - DosExit(EXIT_PROCESS, ulRc); -} - -#endif // WXWIN_COMPATIBILITY_2_2 - // Emit a beeeeeep void wxBell() { DosBeep(1000,1000); // 1kHz during 1 sec. } +wxString wxGetOsDescription() +{ + wxString strVer(_T("OS/2")); + ULONG ulSysInfo[QSV_MAX] = {0}; + + if (::DosQuerySysInfo( 1L, + QSV_MAX, + (PVOID)ulSysInfo, + sizeof(ULONG) * QSV_MAX + ) == 0L ) + { + wxString ver; + ver.Printf( _T(" ver. %d.%d rev. %c"), + int(ulSysInfo[QSV_VERSION_MAJOR] / 10), + int(ulSysInfo[QSV_VERSION_MINOR]), + char(ulSysInfo[QSV_VERSION_REVISION]) + ); + strVer += ver; + } + + return strVer; +} -void wxAppTraits::InitializeGui(unsigned long &ulHab) +void wxAppTraits::InitializeGui(unsigned long &WXUNUSED(ulHab)) { } -void wxAppTraits::TerminateGui(unsigned long ulHab) +void wxAppTraits::TerminateGui(unsigned long WXUNUSED(ulHab)) { } @@ -428,12 +388,14 @@ const wxChar* wxGetHomeDir( } // Hack for OS/2 -wxChar* wxGetUserHome ( - const wxString& rUser -) +#if wxUSE_UNICODE +const wxMB2WXbuf wxGetUserHome( const wxString &rUser ) +#else // just for binary compatibility -- there is no 'const' here +wxChar* wxGetUserHome ( const wxString &rUser ) +#endif { - wxChar* zHome; - wxString sUser1(rUser); + wxChar* zHome; + wxString sUser1(rUser); wxChar *wxBuffer = new wxChar[256]; #ifndef __EMX__ @@ -455,7 +417,7 @@ wxChar* wxGetUserHome ( return *zHome ? zHome : (wxChar*)_T("\\"); } if (wxStricmp(zTmp, WXSTRINGCAST sUser1) == 0) - sUser1 = _T(""); + sUser1 = wxEmptyString; } } #endif @@ -465,18 +427,22 @@ wxChar* wxGetUserHome ( { wxStrcpy(wxBuffer, zHome); wxUnix2DosFilename(wxBuffer); +#if wxUSE_UNICODE + wxWCharBuffer retBuffer (wxBuffer); + delete[] wxBuffer; + return retBuffer; +#else wxStrcpy(zHome, wxBuffer); delete[] wxBuffer; return zHome; +#endif } } delete[] wxBuffer; return (wxChar*)wxEmptyString; // No home known! } -wxString WXDLLEXPORT wxPMErrorToStr( - ERRORID vError -) +wxString WXDLLEXPORT wxPMErrorToStr(ERRORID vError) { wxString sError; @@ -536,7 +502,7 @@ wxString WXDLLEXPORT wxPMErrorToStr( // to be used by all X11 based ports. struct wxEndProcessData; -void wxHandleProcessTermination(wxEndProcessData *proc_data) +void wxHandleProcessTermination(wxEndProcessData *WXUNUSED(proc_data)) { // For now, just do nothing. To be filled in as needed. }