Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / base / applications / msconfig_new / utils.c
diff --git a/reactos/base/applications/msconfig_new/utils.c b/reactos/base/applications/msconfig_new/utils.c
deleted file mode 100644 (file)
index 52d5c2d..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * PROJECT:     ReactOS Applications
- * LICENSE:     LGPL - See COPYING in the top level directory
- * FILE:        base/applications/msconfig_new/utils.c
- * PURPOSE:     Memory Management, Resources, ... Utility Functions
- * COPYRIGHT:   Copyright 2011-2012 Hermes BELUSCA - MAITO <hermes.belusca@sfr.fr>
- */
-
-#include "precomp.h"
-#include "utils.h"
-#include "stringutils.h"
-
-// HANDLE g_hHeap = GetProcessHeap();
-#define g_hHeap GetProcessHeap()
-
-#if 0
-VOID
-MemInit(IN HANDLE Heap)
-{
-    /* Save the heap handle */
-    g_hHeap = Heap;
-}
-#endif
-
-BOOL
-MemFree(IN PVOID lpMem)
-{
-    /* Free memory back into the heap */
-    return HeapFree(g_hHeap, 0, lpMem);
-}
-
-PVOID
-MemAlloc(IN DWORD dwFlags,
-         IN DWORD dwBytes)
-{
-    /* Allocate memory from the heap */
-    return HeapAlloc(g_hHeap, dwFlags, dwBytes);
-}
-
-LPWSTR
-FormatDateTime(IN LPSYSTEMTIME pDateTime)
-{
-    LPWSTR lpszDateTime = NULL;
-    int iDateBufSize, iTimeBufSize;
-
-    if (pDateTime == NULL) return NULL;
-
-    iDateBufSize = GetDateFormatW(LOCALE_USER_DEFAULT,
-                                  /* Only for Windows 7 : DATE_AUTOLAYOUT | */ DATE_SHORTDATE,
-                                  pDateTime,
-                                  NULL,
-                                  NULL,
-                                  0);
-    iTimeBufSize = GetTimeFormatW(LOCALE_USER_DEFAULT,
-                                  0,
-                                  pDateTime,
-                                  NULL,
-                                  NULL,
-                                  0);
-
-    if ( (iDateBufSize > 0) && (iTimeBufSize > 0) )
-    {
-        lpszDateTime = (LPWSTR)MemAlloc(0, (iDateBufSize + iTimeBufSize) * sizeof(WCHAR));
-
-        GetDateFormatW(LOCALE_USER_DEFAULT,
-                       /* Only for Windows 7 : DATE_AUTOLAYOUT | */ DATE_SHORTDATE,
-                       pDateTime,
-                       NULL,
-                       lpszDateTime,
-                       iDateBufSize);
-        if (iDateBufSize > 0) lpszDateTime[iDateBufSize-1] = L' ';
-        GetTimeFormatW(LOCALE_USER_DEFAULT,
-                       0,
-                       pDateTime,
-                       NULL,
-                       lpszDateTime + iDateBufSize,
-                       iTimeBufSize);
-    }
-
-    return lpszDateTime;
-}
-
-VOID
-FreeDateTime(IN LPWSTR lpszDateTime)
-{
-    if (lpszDateTime)
-        MemFree(lpszDateTime);
-}
-
-LPWSTR
-LoadResourceStringEx(IN HINSTANCE hInstance,
-                     IN UINT uID,
-                     OUT size_t* pSize OPTIONAL)
-{
-    LPWSTR lpszDestBuf = NULL, lpszResourceString = NULL;
-    size_t iStrSize    = 0;
-
-    // When passing a zero-length buffer size, LoadString(...) returns a
-    // read-only pointer buffer to the program's resource string.
-    iStrSize = LoadStringW(hInstance, uID, (LPWSTR)&lpszResourceString, 0);
-
-    if ( lpszResourceString && ( (lpszDestBuf = (LPWSTR)MemAlloc(0, (iStrSize + 1) * sizeof(WCHAR))) != NULL ) )
-    {
-        wcsncpy(lpszDestBuf, lpszResourceString, iStrSize);
-        lpszDestBuf[iStrSize] = L'\0'; // NULL-terminate the string
-
-        if (pSize)
-            *pSize = iStrSize + 1;
-    }
-    else
-    {
-        if (pSize)
-            *pSize = 0;
-    }
-
-    return lpszDestBuf;
-}
-
-LPWSTR
-LoadConditionalResourceStringEx(IN HINSTANCE hInstance,
-                                IN BOOL bCondition,
-                                IN UINT uIDifTrue,
-                                IN UINT uIDifFalse,
-                                IN size_t* pSize OPTIONAL)
-{
-    return LoadResourceStringEx(hInstance,
-                                (bCondition ? uIDifTrue : uIDifFalse),
-                                pSize);
-}
-
-DWORD
-RunCommand(IN LPCWSTR lpszCommand,
-           IN LPCWSTR lpszParameters,
-           IN INT nShowCmd)
-{
-    DWORD dwRes;
-
-    DWORD dwNumOfChars;
-    LPWSTR lpszExpandedCommand;
-
-    dwNumOfChars = ExpandEnvironmentStringsW(lpszCommand, NULL, 0);
-    lpszExpandedCommand = (LPWSTR)MemAlloc(0, dwNumOfChars * sizeof(WCHAR));
-    ExpandEnvironmentStringsW(lpszCommand, lpszExpandedCommand, dwNumOfChars);
-
-    dwRes = (DWORD)ShellExecuteW(NULL, NULL /* and not L"open" !! */,
-                                 lpszExpandedCommand,
-                                 lpszParameters,
-                                 NULL, nShowCmd);
-    MemFree(lpszExpandedCommand);
-
-    return dwRes;
-}
-
-
-////////////////////  The following comes from MSDN samples  ///////////////////
-// https://msdn.microsoft.com/en-us/library/windows/desktop/dd162826(v=vs.85).aspx
-//
-
-//
-//  ClipOrCenterRectToMonitor
-//
-//  The most common problem apps have when running on a
-//  multimonitor system is that they "clip" or "pin" windows
-//  based on the SM_CXSCREEN and SM_CYSCREEN system metrics.
-//  Because of app compatibility reasons these system metrics
-//  return the size of the primary monitor.
-//
-//  This shows how you use the multi-monitor functions
-//  to do the same thing.
-//
-VOID ClipOrCenterRectToMonitor(LPRECT prc, UINT flags)
-{
-    HMONITOR    hMonitor;
-    MONITORINFO mi;
-    RECT        rc;
-    int         w = prc->right  - prc->left;
-    int         h = prc->bottom - prc->top;
-
-    //
-    // Get the nearest monitor to the passed rect.
-    //
-    hMonitor = MonitorFromRect(prc, MONITOR_DEFAULTTONEAREST);
-
-    //
-    // Get the work area or entire monitor rect.
-    //
-    mi.cbSize = sizeof(mi);
-    GetMonitorInfo(hMonitor, &mi);
-
-    if (flags & MONITOR_WORKAREA)
-        rc = mi.rcWork;
-    else
-        rc = mi.rcMonitor;
-
-    //
-    // Center or clip the passed rect to the monitor rect.
-    //
-    if (flags & MONITOR_CENTER)
-    {
-        prc->left   = rc.left + (rc.right  - rc.left - w) / 2;
-        prc->top    = rc.top  + (rc.bottom - rc.top  - h) / 2;
-        prc->right  = prc->left + w;
-        prc->bottom = prc->top  + h;
-    }
-    else
-    {
-        prc->left   = max(rc.left, min(rc.right-w,  prc->left));
-        prc->top    = max(rc.top,  min(rc.bottom-h, prc->top));
-        prc->right  = prc->left + w;
-        prc->bottom = prc->top  + h;
-    }
-}
-
-VOID ClipOrCenterWindowToMonitor(HWND hWnd, UINT flags)
-{
-    RECT rc;
-    GetWindowRect(hWnd, &rc);
-    ClipOrCenterRectToMonitor(&rc, flags);
-    SetWindowPos(hWnd, NULL, rc.left, rc.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
-}
-////////////////////////////////////////////////////////////////////////////////
-
-
-BOOL IsWindowsOS(VOID)
-{
-    BOOL bIsWindowsOS = FALSE;
-
-    OSVERSIONINFOW osvi = {0};
-    osvi.dwOSVersionInfoSize = sizeof(osvi);
-
-    if (!GetVersionExW(&osvi))
-        return FALSE;
-
-    if (osvi.dwPlatformId != VER_PLATFORM_WIN32_NT)
-        return FALSE;
-
-    /* ReactOS reports as Windows NT 5.2 */
-
-    if ( (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion >= 2) ||
-         (osvi.dwMajorVersion  > 5) )
-    {
-        HKEY hKey = NULL;
-
-        if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
-                          L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
-                          0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
-        {
-            LONG ret;
-            DWORD dwType = 0, dwBufSize = 0;
-
-            ret = RegQueryValueExW(hKey, L"ProductName", NULL, &dwType, NULL, &dwBufSize);
-            if (ret == ERROR_SUCCESS && dwType == REG_SZ)
-            {
-                LPTSTR lpszProductName = (LPTSTR)MemAlloc(0, dwBufSize);
-                RegQueryValueExW(hKey, L"ProductName", NULL, &dwType, (LPBYTE)lpszProductName, &dwBufSize);
-
-                bIsWindowsOS = (FindSubStrI(lpszProductName, _T("Windows")) != NULL);
-
-                MemFree(lpszProductName);
-            }
-
-            RegCloseKey(hKey);
-        }
-    }
-    else
-    {
-        bIsWindowsOS = TRUE;
-    }
-    
-    return bIsWindowsOS;
-}
-
-BOOL IsPreVistaOSVersion(VOID)
-{
-    OSVERSIONINFOW osvi = {0};
-    osvi.dwOSVersionInfoSize = sizeof(osvi);
-
-    if (!GetVersionExW(&osvi))
-        return FALSE;
-
-    /* Vista+-class OSes are NT >= 6 */
-    return ( (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) ? (osvi.dwMajorVersion < 6) : FALSE );
-}
-
-LPWSTR
-GetExecutableVendor(IN LPCWSTR lpszFilename)
-{
-    LPWSTR lpszVendor = NULL;
-    DWORD dwHandle = 0;
-    DWORD dwLen;
-
-    LPVOID lpData;
-
-    LPVOID pvData = NULL;
-    UINT BufLen = 0;
-    WORD wCodePage = 0, wLangID = 0;
-    LPWSTR lpszStrFileInfo = NULL;
-
-    LPWSTR lpszData = NULL;
-
-    if (lpszFilename == NULL) return NULL;
-
-    dwLen = GetFileVersionInfoSizeW(lpszFilename, &dwHandle);
-    if (dwLen == 0) return NULL;
-
-    lpData = MemAlloc(0, dwLen);
-    if (!lpData) return NULL;
-
-    GetFileVersionInfoW(lpszFilename, dwHandle, dwLen, lpData);
-
-    if (VerQueryValueW(lpData, L"\\VarFileInfo\\Translation", &pvData, &BufLen))
-    {
-        wCodePage = LOWORD(*(DWORD*)pvData);
-        wLangID   = HIWORD(*(DWORD*)pvData);
-
-        lpszStrFileInfo = FormatString(L"StringFileInfo\\%04X%04X\\CompanyName",
-                                       wCodePage,
-                                       wLangID);
-    }
-
-    VerQueryValueW(lpData, lpszStrFileInfo, (LPVOID*)&lpszData, &BufLen);
-    if (lpszData)
-    {
-        lpszVendor = (LPWSTR)MemAlloc(0, BufLen * sizeof(WCHAR));
-        if (lpszVendor)
-            wcscpy(lpszVendor, lpszData);
-    }
-    else
-    {
-        lpszVendor = NULL;
-    }
-
-    MemFree(lpszStrFileInfo);
-    MemFree(lpData);
-
-    return lpszVendor;
-}