Start source tree (final, I hope!) restructuration. Part 1/X
[reactos.git] / reactos / win32ss / user / winsrv / consrv / frontends / gui / guisettings.c
diff --git a/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c b/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c
deleted file mode 100644 (file)
index 2237155..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS Console Server DLL
- * FILE:            consrv/frontends/gui/guisettings.c
- * PURPOSE:         GUI Terminal Front-End Settings Management
- * PROGRAMMERS:     Johannes Anderwald
- *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
- */
-
-/* INCLUDES *******************************************************************/
-
-#include <consrv.h>
-
-#define NDEBUG
-#include <debug.h>
-
-#include "guiterm.h"
-#include "guisettings.h"
-
-/* FUNCTIONS ******************************************************************/
-
-BOOL
-GuiConsoleReadUserSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
-                           IN LPCWSTR ConsoleTitle,
-                           IN DWORD ProcessId)
-{
-    /*****************************************************
-     * Adapted from ConSrvReadUserSettings in settings.c *
-     *****************************************************/
-
-    BOOL  RetVal = FALSE;
-    HKEY  hKey;
-    DWORD dwNumSubKeys = 0;
-    DWORD dwIndex;
-    DWORD dwType;
-    WCHAR szValueName[MAX_PATH];
-    DWORD dwValueName;
-    WCHAR szValue[LF_FACESIZE] = L"\0";
-    DWORD Value;
-    DWORD dwValue;
-
-    if (!ConSrvOpenUserSettings(ProcessId,
-                                ConsoleTitle,
-                                &hKey, KEY_READ,
-                                FALSE))
-    {
-        DPRINT("ConSrvOpenUserSettings failed\n");
-        return FALSE;
-    }
-
-    if (RegQueryInfoKey(hKey, NULL, NULL, NULL, NULL, NULL, NULL,
-                        &dwNumSubKeys, NULL, NULL, NULL, NULL) != ERROR_SUCCESS)
-    {
-        DPRINT("GuiConsoleReadUserSettings: RegQueryInfoKey failed\n");
-        RegCloseKey(hKey);
-        return FALSE;
-    }
-
-    DPRINT("GuiConsoleReadUserSettings entered dwNumSubKeys %d\n", dwNumSubKeys);
-
-    for (dwIndex = 0; dwIndex < dwNumSubKeys; dwIndex++)
-    {
-        dwValue = sizeof(Value);
-        dwValueName = MAX_PATH; // sizeof(szValueName)/sizeof(szValueName[0])
-
-        if (RegEnumValueW(hKey, dwIndex, szValueName, &dwValueName, NULL, &dwType, (BYTE*)&Value, &dwValue) != ERROR_SUCCESS)
-        {
-            if (dwType == REG_SZ)
-            {
-                /*
-                 * Retry in case of string value
-                 */
-                dwValue = sizeof(szValue);
-                dwValueName = MAX_PATH; // sizeof(szValueName)/sizeof(szValueName[0])
-                if (RegEnumValueW(hKey, dwIndex, szValueName, &dwValueName, NULL, NULL, (BYTE*)szValue, &dwValue) != ERROR_SUCCESS)
-                    break;
-            }
-            else
-            {
-                break;
-            }
-        }
-
-        if (!wcscmp(szValueName, L"FaceName"))
-        {
-            wcsncpy(TermInfo->FaceName, szValue, LF_FACESIZE);
-            TermInfo->FaceName[LF_FACESIZE - 1] = UNICODE_NULL;
-            RetVal = TRUE;
-        }
-        else if (!wcscmp(szValueName, L"FontFamily"))
-        {
-            TermInfo->FontFamily = Value;
-            RetVal = TRUE;
-        }
-        else if (!wcscmp(szValueName, L"FontSize"))
-        {
-            TermInfo->FontSize.X = LOWORD(Value); // Width
-            TermInfo->FontSize.Y = HIWORD(Value); // Height
-            RetVal = TRUE;
-        }
-        else if (!wcscmp(szValueName, L"FontWeight"))
-        {
-            TermInfo->FontWeight = Value;
-            RetVal = TRUE;
-        }
-        else if (!wcscmp(szValueName, L"FullScreen"))
-        {
-            TermInfo->FullScreen = Value;
-            RetVal = TRUE;
-        }
-        else if (!wcscmp(szValueName, L"WindowPosition"))
-        {
-            TermInfo->AutoPosition   = FALSE;
-            TermInfo->WindowOrigin.x = LOWORD(Value);
-            TermInfo->WindowOrigin.y = HIWORD(Value);
-            RetVal = TRUE;
-        }
-    }
-
-    RegCloseKey(hKey);
-    return RetVal;
-}
-
-BOOL
-GuiConsoleWriteUserSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
-                            IN LPCWSTR ConsoleTitle,
-                            IN DWORD ProcessId)
-{
-    /******************************************************
-     * Adapted from ConSrvWriteUserSettings in settings.c *
-     ******************************************************/
-
-    BOOL GlobalSettings = (ConsoleTitle[0] == L'\0');
-    HKEY hKey;
-    DWORD Storage = 0;
-
-#define SetConsoleSetting(SettingName, SettingType, SettingSize, Setting, DefaultValue)         \
-do {                                                                                            \
-    if (GlobalSettings || (!GlobalSettings && (*(Setting) != (DefaultValue))))                  \
-    {                                                                                           \
-        RegSetValueExW(hKey, (SettingName), 0, (SettingType), (PBYTE)(Setting), (SettingSize)); \
-    }                                                                                           \
-    else                                                                                        \
-    {                                                                                           \
-        RegDeleteValue(hKey, (SettingName));                                                    \
-    }                                                                                           \
-} while (0)
-
-    if (!ConSrvOpenUserSettings(ProcessId,
-                                ConsoleTitle,
-                                &hKey, KEY_WRITE,
-                                TRUE))
-    {
-        return FALSE;
-    }
-
-    SetConsoleSetting(L"FaceName", REG_SZ, (wcslen(TermInfo->FaceName) + 1) * sizeof(WCHAR), TermInfo->FaceName, L'\0'); // wcsnlen
-    SetConsoleSetting(L"FontFamily", REG_DWORD, sizeof(DWORD), &TermInfo->FontFamily, FF_DONTCARE);
-
-    Storage = MAKELONG(TermInfo->FontSize.X, TermInfo->FontSize.Y); // Width, Height
-    SetConsoleSetting(L"FontSize", REG_DWORD, sizeof(DWORD), &Storage, 0);
-
-    SetConsoleSetting(L"FontWeight", REG_DWORD, sizeof(DWORD), &TermInfo->FontWeight, FW_DONTCARE);
-
-    Storage = TermInfo->FullScreen;
-    SetConsoleSetting(L"FullScreen", REG_DWORD, sizeof(DWORD), &Storage, FALSE);
-
-    if (TermInfo->AutoPosition == FALSE)
-    {
-        Storage = MAKELONG(TermInfo->WindowOrigin.x, TermInfo->WindowOrigin.y);
-        RegSetValueExW(hKey, L"WindowPosition", 0, REG_DWORD, (PBYTE)&Storage, sizeof(DWORD));
-    }
-    else
-    {
-        RegDeleteValue(hKey, L"WindowPosition");
-    }
-
-    RegCloseKey(hKey);
-    return TRUE;
-}
-
-VOID
-GuiConsoleGetDefaultSettings(IN OUT PGUI_CONSOLE_INFO TermInfo,
-                             IN DWORD ProcessId)
-{
-    /*******************************************************
-     * Adapted from ConSrvGetDefaultSettings in settings.c *
-     *******************************************************/
-
-    if (TermInfo == NULL) return;
-
-    /*
-     * 1. Load the default values
-     */
-    // wcsncpy(TermInfo->FaceName, L"DejaVu Sans Mono", LF_FACESIZE);
-    // TermInfo->FontSize = MAKELONG(8, 12); // 0x000C0008; // font is 8x12
-    // TermInfo->FontSize = MAKELONG(16, 16); // font is 16x16
-
-    wcsncpy(TermInfo->FaceName, L"VGA", LF_FACESIZE); // HACK: !!
-    // TermInfo->FaceName[0] = L'\0';
-    TermInfo->FontFamily = FF_DONTCARE;
-    TermInfo->FontSize.X = 0;
-    TermInfo->FontSize.Y = 0;
-    TermInfo->FontWeight = FW_NORMAL; // HACK: !!
-    // TermInfo->FontWeight = FW_DONTCARE;
-
-    TermInfo->FullScreen   = FALSE;
-    TermInfo->ShowWindow   = SW_SHOWNORMAL;
-    TermInfo->AutoPosition = TRUE;
-    TermInfo->WindowOrigin.x = 0;
-    TermInfo->WindowOrigin.y = 0;
-
-    /*
-     * 2. Overwrite them with the ones stored in HKCU\Console.
-     *    If the HKCU\Console key doesn't exist, create it
-     *    and store the default values inside.
-     */
-    if (!GuiConsoleReadUserSettings(TermInfo, L"", ProcessId))
-    {
-        GuiConsoleWriteUserSettings(TermInfo, L"", ProcessId);
-    }
-}
-
-VOID
-GuiConsoleShowConsoleProperties(PGUI_CONSOLE_DATA GuiData,
-                                BOOL Defaults)
-{
-    NTSTATUS Status;
-    PCONSRV_CONSOLE Console = GuiData->Console;
-    PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer;
-    PCONSOLE_PROCESS_DATA ProcessData;
-    HANDLE hSection = NULL, hClientSection = NULL;
-    LARGE_INTEGER SectionSize;
-    ULONG ViewSize = 0;
-    SIZE_T Length = 0;
-    PCONSOLE_PROPS pSharedInfo = NULL;
-    PGUI_CONSOLE_INFO GuiInfo = NULL;
-
-    DPRINT("GuiConsoleShowConsoleProperties entered\n");
-
-    if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) return;
-
-    /*
-     * Create a memory section to share with the applet, and map it.
-     */
-    /* Holds data for console.dll + console info + terminal-specific info */
-    SectionSize.QuadPart = sizeof(CONSOLE_PROPS) + sizeof(GUI_CONSOLE_INFO);
-    Status = NtCreateSection(&hSection,
-                             SECTION_ALL_ACCESS,
-                             NULL,
-                             &SectionSize,
-                             PAGE_READWRITE,
-                             SEC_COMMIT,
-                             NULL);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error: Impossible to create a shared section, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    Status = NtMapViewOfSection(hSection,
-                                NtCurrentProcess(),
-                                (PVOID*)&pSharedInfo,
-                                0,
-                                0,
-                                NULL,
-                                &ViewSize,
-                                ViewUnmap,
-                                0,
-                                PAGE_READWRITE);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error: Impossible to map the shared section, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-
-    /*
-     * Setup the shared console properties structure.
-     */
-
-    /* Header */
-    pSharedInfo->hConsoleWindow = GuiData->hWindow;
-    pSharedInfo->ShowDefaultParams = Defaults;
-
-    /*
-     * We fill-in the fields only if we display
-     * our properties, not the default ones.
-     */
-    if (!Defaults)
-    {
-        /* Console information */
-        pSharedInfo->ci.HistoryBufferSize = Console->HistoryBufferSize;
-        pSharedInfo->ci.NumberOfHistoryBuffers = Console->NumberOfHistoryBuffers;
-        pSharedInfo->ci.HistoryNoDup = Console->HistoryNoDup;
-        pSharedInfo->ci.QuickEdit = Console->QuickEdit;
-        pSharedInfo->ci.InsertMode = Console->InsertMode;
-        /////////////pSharedInfo->ci.InputBufferSize = 0;
-        pSharedInfo->ci.ScreenBufferSize = ActiveBuffer->ScreenBufferSize;
-        pSharedInfo->ci.ConsoleSize = ActiveBuffer->ViewSize;
-        pSharedInfo->ci.CursorBlinkOn;
-        pSharedInfo->ci.ForceCursorOff;
-        pSharedInfo->ci.CursorSize = ActiveBuffer->CursorInfo.dwSize;
-        if (GetType(ActiveBuffer) == TEXTMODE_BUFFER)
-        {
-            PTEXTMODE_SCREEN_BUFFER Buffer = (PTEXTMODE_SCREEN_BUFFER)ActiveBuffer;
-
-            pSharedInfo->ci.ScreenAttrib = Buffer->ScreenDefaultAttrib;
-            pSharedInfo->ci.PopupAttrib  = Buffer->PopupDefaultAttrib;
-        }
-        else // if (GetType(ActiveBuffer) == GRAPHICS_BUFFER)
-        {
-            // PGRAPHICS_SCREEN_BUFFER Buffer = (PGRAPHICS_SCREEN_BUFFER)ActiveBuffer;
-            DPRINT1("GuiConsoleShowConsoleProperties - Graphics buffer\n");
-
-            // FIXME: Gather defaults from the registry ?
-            pSharedInfo->ci.ScreenAttrib = DEFAULT_SCREEN_ATTRIB;
-            pSharedInfo->ci.PopupAttrib  = DEFAULT_POPUP_ATTRIB ;
-        }
-        pSharedInfo->ci.CodePage;
-
-        /* GUI Information */
-        pSharedInfo->TerminalInfo.Size = sizeof(GUI_CONSOLE_INFO);
-        GuiInfo = pSharedInfo->TerminalInfo.TermInfo = (PGUI_CONSOLE_INFO)(pSharedInfo + 1);
-        wcsncpy(GuiInfo->FaceName, GuiData->GuiInfo.FaceName, LF_FACESIZE);
-        GuiInfo->FaceName[LF_FACESIZE - 1] = UNICODE_NULL;
-        GuiInfo->FontFamily = GuiData->GuiInfo.FontFamily;
-        GuiInfo->FontSize   = GuiData->GuiInfo.FontSize;
-        GuiInfo->FontWeight = GuiData->GuiInfo.FontWeight;
-        GuiInfo->FullScreen = GuiData->GuiInfo.FullScreen;
-        GuiInfo->AutoPosition = GuiData->GuiInfo.AutoPosition;
-        GuiInfo->WindowOrigin = GuiData->GuiInfo.WindowOrigin;
-        /* Offsetize */
-        pSharedInfo->TerminalInfo.TermInfo = (PVOID)((ULONG_PTR)GuiInfo - (ULONG_PTR)pSharedInfo);
-
-        /* Palette */
-        memcpy(pSharedInfo->ci.Colors, Console->Colors, sizeof(Console->Colors));
-
-        /* Title of the console, original one corresponding to the one set by the console leader */
-        Length = min(sizeof(pSharedInfo->ci.ConsoleTitle) / sizeof(pSharedInfo->ci.ConsoleTitle[0]) - 1,
-                     Console->OriginalTitle.Length / sizeof(WCHAR));
-        wcsncpy(pSharedInfo->ci.ConsoleTitle, Console->OriginalTitle.Buffer, Length);
-    }
-    else
-    {
-        Length = 0;
-        // FIXME: Load the default parameters from the registry.
-    }
-
-    /* Null-terminate the title */
-    pSharedInfo->ci.ConsoleTitle[Length] = L'\0';
-
-
-    /* Unmap the view */
-    NtUnmapViewOfSection(NtCurrentProcess(), pSharedInfo);
-
-    /* Get the console leader process, our client */
-    ProcessData = ConSrvGetConsoleLeaderProcess(Console);
-
-    /* Duplicate the section handle for the client */
-    Status = NtDuplicateObject(NtCurrentProcess(),
-                               hSection,
-                               ProcessData->Process->ProcessHandle,
-                               &hClientSection,
-                               0, 0, DUPLICATE_SAME_ACCESS);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error: Impossible to duplicate section handle for client, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    /* Start the properties dialog */
-    if (ProcessData->PropRoutine)
-    {
-        _SEH2_TRY
-        {
-            HANDLE Thread = NULL;
-
-            _SEH2_TRY
-            {
-                Thread = CreateRemoteThread(ProcessData->Process->ProcessHandle, NULL, 0,
-                                            ProcessData->PropRoutine,
-                                            (PVOID)hClientSection, 0, NULL);
-                if (NULL == Thread)
-                {
-                    DPRINT1("Failed thread creation (Error: 0x%x)\n", GetLastError());
-                }
-                else
-                {
-                    DPRINT("ProcessData->PropRoutine remote thread creation succeeded, ProcessId = %x, Process = 0x%p\n",
-                           ProcessData->Process->ClientId.UniqueProcess, ProcessData->Process);
-                    /// WaitForSingleObject(Thread, INFINITE);
-                }
-            }
-            _SEH2_FINALLY
-            {
-                CloseHandle(Thread);
-            }
-            _SEH2_END;
-        }
-        _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-        {
-            Status = _SEH2_GetExceptionCode();
-            DPRINT1("GuiConsoleShowConsoleProperties - Caught an exception, Status = 0x%08lx\n", Status);
-        }
-        _SEH2_END;
-    }
-
-Quit:
-    /* We have finished, close the section handle */
-    if (hSection) NtClose(hSection);
-
-    LeaveCriticalSection(&Console->Lock);
-    return;
-}
-
-VOID
-GuiApplyUserSettings(PGUI_CONSOLE_DATA GuiData,
-                     HANDLE hClientSection,
-                     BOOL SaveSettings)
-{
-    NTSTATUS Status = STATUS_SUCCESS;
-    PCONSRV_CONSOLE Console = GuiData->Console;
-    PCONSOLE_PROCESS_DATA ProcessData;
-    HANDLE hSection = NULL;
-    ULONG ViewSize = 0;
-    PCONSOLE_PROPS pConInfo = NULL;
-    PCONSOLE_INFO  ConInfo  = NULL;
-    PTERMINAL_INFO TermInfo = NULL;
-    PGUI_CONSOLE_INFO GuiInfo = NULL;
-
-    if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) return;
-
-    /* Get the console leader process, our client */
-    ProcessData = ConSrvGetConsoleLeaderProcess(Console);
-
-    /* Duplicate the section handle for ourselves */
-    Status = NtDuplicateObject(ProcessData->Process->ProcessHandle,
-                               hClientSection,
-                               NtCurrentProcess(),
-                               &hSection,
-                               0, 0, DUPLICATE_SAME_ACCESS);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error when mapping client handle, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    /* Get a view of the shared section */
-    Status = NtMapViewOfSection(hSection,
-                                NtCurrentProcess(),
-                                (PVOID*)&pConInfo,
-                                0,
-                                0,
-                                NULL,
-                                &ViewSize,
-                                ViewUnmap,
-                                0,
-                                PAGE_READWRITE);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error when mapping view of file, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    _SEH2_TRY
-    {
-        /* Check that the section is well-sized */
-        if ( (ViewSize < sizeof(CONSOLE_PROPS)) ||
-             (pConInfo->TerminalInfo.Size != sizeof(GUI_CONSOLE_INFO)) ||
-             (ViewSize < sizeof(CONSOLE_PROPS) + pConInfo->TerminalInfo.Size) )
-        {
-            DPRINT1("Error: section bad-sized: sizeof(Section) < sizeof(CONSOLE_PROPS) + sizeof(Terminal_specific_info)\n");
-            Status = STATUS_INVALID_VIEW_SIZE;
-            _SEH2_YIELD(goto Quit);
-        }
-
-        // TODO: Check that GuiData->hWindow == pConInfo->hConsoleWindow
-
-        /* Retrieve terminal informations */
-        ConInfo  = &pConInfo->ci;
-        TermInfo = &pConInfo->TerminalInfo;
-        GuiInfo  = TermInfo->TermInfo = (PVOID)((ULONG_PTR)pConInfo + (ULONG_PTR)TermInfo->TermInfo);
-
-        /*
-         * If we don't set the default parameters,
-         * apply them, otherwise just save them.
-         */
-        if (pConInfo->ShowDefaultParams == FALSE)
-        {
-            /* Set the console informations */
-            ConSrvApplyUserSettings(Console, ConInfo);
-
-            /* Set the terminal informations */
-
-            // memcpy(&GuiData->GuiInfo, GuiInfo, sizeof(GUI_CONSOLE_INFO));
-
-            /* Change the font */
-            InitFonts(GuiData,
-                      GuiInfo->FaceName,
-                      GuiInfo->FontFamily,
-                      GuiInfo->FontSize,
-                      GuiInfo->FontWeight);
-           // HACK, needed because changing font may change the size of the window
-           /**/TermResizeTerminal(Console);/**/
-
-            /* Move the window to the user's values */
-            GuiData->GuiInfo.AutoPosition = GuiInfo->AutoPosition;
-            GuiData->GuiInfo.WindowOrigin = GuiInfo->WindowOrigin;
-            GuiConsoleMoveWindow(GuiData);
-
-            InvalidateRect(GuiData->hWindow, NULL, TRUE);
-
-            /*
-             * Apply full-screen mode.
-             */
-            if (GuiInfo->FullScreen != GuiData->GuiInfo.FullScreen)
-            {
-                SwitchFullScreen(GuiData, GuiInfo->FullScreen);
-            }
-        }
-
-        /*
-         * Save settings if needed
-         */
-        // FIXME: Do it in the console properties applet ??
-        if (SaveSettings)
-        {
-            DWORD ProcessId = HandleToUlong(ProcessData->Process->ClientId.UniqueProcess);
-            ConSrvWriteUserSettings(ConInfo, ProcessId);
-            GuiConsoleWriteUserSettings(GuiInfo, ConInfo->ConsoleTitle, ProcessId);
-        }
-
-        Status = STATUS_SUCCESS;
-    }
-    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = _SEH2_GetExceptionCode();
-        DPRINT1("GuiApplyUserSettings - Caught an exception, Status = 0x%08lx\n", Status);
-    }
-    _SEH2_END;
-
-Quit:
-    /* Finally, close the section and return */
-    if (hSection)
-    {
-        NtUnmapViewOfSection(NtCurrentProcess(), pConInfo);
-        NtClose(hSection);
-    }
-
-    LeaveCriticalSection(&Console->Lock);
-    return;
-}
-
-/*
- * Function for dealing with the undocumented message and structure used by
- * Windows' console.dll for setting console info.
- * See http://www.catch22.net/sites/default/source/files/setconsoleinfo.c
- * and http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf
- * for more information.
- */
-VOID
-GuiApplyWindowsConsoleSettings(PGUI_CONSOLE_DATA GuiData,
-                               HANDLE hClientSection)
-{
-    NTSTATUS Status = STATUS_SUCCESS;
-    PCONSRV_CONSOLE Console = GuiData->Console;
-    PCONSOLE_PROCESS_DATA ProcessData;
-    HANDLE hSection = NULL;
-    ULONG ViewSize = 0;
-    PCONSOLE_STATE_INFO pConInfo = NULL;
-    CONSOLE_INFO     ConInfo;
-    GUI_CONSOLE_INFO GuiInfo;
-#if 0
-    SIZE_T Length;
-#endif
-
-    if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) return;
-
-    /* Get the console leader process, our client */
-    ProcessData = ConSrvGetConsoleLeaderProcess(Console);
-
-    /* Duplicate the section handle for ourselves */
-    Status = NtDuplicateObject(ProcessData->Process->ProcessHandle,
-                               hClientSection,
-                               NtCurrentProcess(),
-                               &hSection,
-                               0, 0, DUPLICATE_SAME_ACCESS);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error when mapping client handle, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    /* Get a view of the shared section */
-    Status = NtMapViewOfSection(hSection,
-                                NtCurrentProcess(),
-                                (PVOID*)&pConInfo,
-                                0,
-                                0,
-                                NULL,
-                                &ViewSize,
-                                ViewUnmap,
-                                0,
-                                PAGE_READWRITE);
-    if (!NT_SUCCESS(Status))
-    {
-        DPRINT1("Error when mapping view of file, Status = 0x%08lx\n", Status);
-        goto Quit;
-    }
-
-    _SEH2_TRY
-    {
-        /* Check that the section is well-sized */
-        if ( (ViewSize < sizeof(CONSOLE_STATE_INFO)) ||
-             (pConInfo->cbSize != sizeof(CONSOLE_STATE_INFO)) )
-        {
-            DPRINT1("Error: section bad-sized: sizeof(Section) < sizeof(CONSOLE_STATE_INFO)\n");
-            Status = STATUS_INVALID_VIEW_SIZE;
-            _SEH2_YIELD(goto Quit);
-        }
-
-        // TODO: Check that GuiData->hWindow == pConInfo->hConsoleWindow
-
-        /* Retrieve terminal informations */
-
-        // Console information
-        ConInfo.HistoryBufferSize = pConInfo->HistoryBufferSize;
-        ConInfo.NumberOfHistoryBuffers = pConInfo->NumberOfHistoryBuffers;
-        ConInfo.HistoryNoDup = !!pConInfo->HistoryNoDup;
-        ConInfo.QuickEdit = !!pConInfo->QuickEdit;
-        ConInfo.InsertMode = !!pConInfo->InsertMode;
-        ConInfo.ScreenBufferSize = pConInfo->ScreenBufferSize;
-        ConInfo.ConsoleSize = pConInfo->WindowSize;
-        ConInfo.CursorSize = pConInfo->CursorSize;
-        ConInfo.ScreenAttrib = pConInfo->ScreenColors;
-        ConInfo.PopupAttrib = pConInfo->PopupColors;
-        memcpy(&ConInfo.Colors, pConInfo->ColorTable, sizeof(ConInfo.Colors));
-        ConInfo.CodePage = pConInfo->CodePage;
-        /**ConInfo.ConsoleTitle[MAX_PATH + 1] = pConInfo->ConsoleTitle; // FIXME: memcpy**/
-#if 0
-        /* Title of the console, original one corresponding to the one set by the console leader */
-        Length = min(sizeof(pConInfo->ConsoleTitle) / sizeof(pConInfo->ConsoleTitle[0]) - 1,
-               Console->OriginalTitle.Length / sizeof(WCHAR));
-        wcsncpy(pSharedInfo->ci.ConsoleTitle, Console->OriginalTitle.Buffer, Length);
-#endif
-        // BOOLEAN ConInfo.CursorBlinkOn = pConInfo->
-        // BOOLEAN ConInfo.ForceCursorOff = pConInfo->
-
-
-        // Terminal information
-        wcsncpy(GuiInfo.FaceName, pConInfo->FaceName, LF_FACESIZE);
-        GuiInfo.FaceName[LF_FACESIZE - 1] = UNICODE_NULL;
-
-        GuiInfo.FontFamily = pConInfo->FontFamily;
-        GuiInfo.FontSize = pConInfo->FontSize;
-        GuiInfo.FontWeight = pConInfo->FontWeight;
-        GuiInfo.FullScreen = !!pConInfo->FullScreen;
-        GuiInfo.AutoPosition = !!pConInfo->AutoPosition;
-        GuiInfo.WindowOrigin = pConInfo->WindowPosition;
-        // WORD  GuiInfo.ShowWindow = pConInfo->
-
-
-
-        /*
-         * If we don't set the default parameters,
-         * apply them, otherwise just save them.
-         */
-#if 0
-        if (pConInfo->ShowDefaultParams == FALSE)
-#endif
-        {
-            /* Set the console informations */
-            ConSrvApplyUserSettings(Console, &ConInfo);
-
-            /* Set the terminal informations */
-
-            // memcpy(&GuiData->GuiInfo, &GuiInfo, sizeof(GUI_CONSOLE_INFO));
-
-            /* Change the font */
-            InitFonts(GuiData,
-                      GuiInfo.FaceName,
-                      GuiInfo.FontFamily,
-                      GuiInfo.FontSize,
-                      GuiInfo.FontWeight);
-           // HACK, needed because changing font may change the size of the window
-           /**/TermResizeTerminal(Console);/**/
-
-            /* Move the window to the user's values */
-            GuiData->GuiInfo.AutoPosition = GuiInfo.AutoPosition;
-            GuiData->GuiInfo.WindowOrigin = GuiInfo.WindowOrigin;
-            GuiConsoleMoveWindow(GuiData);
-
-            InvalidateRect(GuiData->hWindow, NULL, TRUE);
-
-            /*
-             * Apply full-screen mode.
-             */
-            if (GuiInfo.FullScreen != GuiData->GuiInfo.FullScreen)
-            {
-                SwitchFullScreen(GuiData, GuiInfo.FullScreen);
-            }
-        }
-
-#if 0
-        /*
-         * Save settings if needed
-         */
-        // FIXME: Do it in the console properties applet ??
-        if (SaveSettings)
-        {
-            DWORD ProcessId = HandleToUlong(ProcessData->Process->ClientId.UniqueProcess);
-            ConSrvWriteUserSettings(&ConInfo, ProcessId);
-            GuiConsoleWriteUserSettings(&GuiInfo, ConInfo.ConsoleTitle, ProcessId);
-        }
-#endif
-
-        Status = STATUS_SUCCESS;
-    }
-    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = _SEH2_GetExceptionCode();
-        DPRINT1("GuiApplyUserSettings - Caught an exception, Status = 0x%08lx\n", Status);
-    }
-    _SEH2_END;
-
-Quit:
-    /* Finally, close the section and return */
-    if (hSection)
-    {
-        NtUnmapViewOfSection(NtCurrentProcess(), pConInfo);
-        NtClose(hSection);
-    }
-
-    LeaveCriticalSection(&Console->Lock);
-    return;
-}
-
-/* EOF */