avoid crash
[reactos.git] / reactos / dll / cpl / sysdm / startrec.c
index 219633e..55ffacd 100644 (file)
-\r
-/*\r
- * PROJECT:     ReactOS System Control Panel Applet\r
- * LICENSE:     GPL - See COPYING in the top level directory\r
- * FILE:        dll/cpl/sysdm/startrec.c\r
- * PURPOSE:     Computer settings for startup and recovery\r
- * COPYRIGHT:   Copyright 2006 Ged Murphy <gedmurphy@gmail.com>\r
- *              Copyright 2006 Christoph von Wittich <Christoph@ApiViewer.de>\r
- *\r
- */\r
-\r
-#include "precomp.h"\r
-\r
-static TCHAR m_szFreeldrIni[MAX_PATH + 15];\r
-\r
-void SetTimeout(HWND hwndDlg, int Timeout)\r
-{\r
-       if (Timeout == 0)\r
-       {\r
-               EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECLISTUPDWN), FALSE);\r
-       }\r
-       else\r
-       {\r
-               EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECLISTUPDWN), TRUE);\r
-       }\r
-       SendDlgItemMessage(hwndDlg, IDC_STRRECLISTUPDWN, UDM_SETPOS, (WPARAM) 0, (LPARAM) MAKELONG((short) Timeout, 0));\r
-}\r
-\r
-/* Property page dialog callback */\r
-INT_PTR CALLBACK\r
-StartRecDlgProc(HWND hwndDlg,\r
-                UINT uMsg,\r
-                WPARAM wParam,\r
-                LPARAM lParam)\r
-{\r
-    UNREFERENCED_PARAMETER(lParam);\r
-       TCHAR *szSystemDrive;\r
-       TCHAR szDefaultOS[MAX_PATH];\r
-       TCHAR szDefaultOSName[MAX_PATH];\r
-       TCHAR szTimeout[10];\r
-       int iTimeout;\r
-\r
-    switch(uMsg)\r
-    {\r
-        case WM_INITDIALOG:\r
-        {\r
-                       /* get Path to freeldr.ini or boot.ini */\r
-                       szSystemDrive = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PATH);\r
-                       if (szSystemDrive != NULL)\r
-                       {\r
-                               szSystemDrive = _tgetenv(_T("SystemDrive"));\r
-                               if (m_szFreeldrIni != NULL)\r
-                               {                                               \r
-                                       _tcscpy(m_szFreeldrIni, szSystemDrive);\r
-                                       _tcscat(m_szFreeldrIni, _T("\\freeldr.ini"));\r
-                                       if (!PathFileExists(m_szFreeldrIni))\r
-                                       {\r
-                                               _tcscpy(m_szFreeldrIni, szSystemDrive);\r
-                                               _tcscat(m_szFreeldrIni, _T("\\boot.ini"));\r
-                                       }\r
-                               }\r
-                               HeapFree(GetProcessHeap(), 0, szSystemDrive);\r
-                       }\r
-   \r
-                       SetDlgItemText(hwndDlg, IDC_STRRECDUMPFILE, _T("%SystemRoot%\\MiniDump"));\r
-\r
-                       /* load settings from freeldr.ini */\r
-                       GetPrivateProfileString(_T("boot loader"), _T("default"), NULL, szDefaultOS, MAX_PATH, m_szFreeldrIni);\r
-                       GetPrivateProfileString(_T("operating systems"), szDefaultOS, NULL, szDefaultOSName, MAX_PATH, m_szFreeldrIni);\r
-                       SendDlgItemMessage(hwndDlg, IDC_STRECOSCOMBO, CB_ADDSTRING, (WPARAM)0, (LPARAM)szDefaultOSName);\r
-                       SendDlgItemMessage(hwndDlg, IDC_STRECOSCOMBO, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);\r
-\r
-                       /* timeout */\r
-                       iTimeout = GetPrivateProfileInt(_T("boot loader"), _T("timeout"), 0, m_szFreeldrIni);\r
-                       SetTimeout(hwndDlg, iTimeout);\r
-                       if (iTimeout != 0)\r
-                               SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);\r
-\r
-        }\r
-        break;\r
-\r
-        case WM_COMMAND:\r
-        {\r
-                       switch(LOWORD(wParam))\r
-                       {\r
-                               case IDC_STRRECEDIT:\r
-                               {\r
-                                       ShellExecute(0, _T("open"), _T("notepad"), m_szFreeldrIni, NULL, SW_SHOWNORMAL);\r
-                                       break;\r
-                               }       \r
-                               case IDOK:\r
-                               {\r
-                                       /* save timeout */\r
-                                       if (SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)\r
-                                               iTimeout = SendDlgItemMessage(hwndDlg, IDC_STRRECLISTUPDWN, UDM_GETPOS, (WPARAM)0, (LPARAM)0);\r
-                                       else\r
-                                               iTimeout = 0;\r
-                                       _stprintf(szTimeout, _T("%i"), iTimeout);\r
-                                       WritePrivateProfileString(_T("boot loader"), _T("timeout"), szTimeout, m_szFreeldrIni);\r
-                               }\r
-                               case IDCANCEL:\r
-                               {\r
-                                       EndDialog(hwndDlg,\r
-                                                         LOWORD(wParam));\r
-                                       return TRUE;\r
-                                       break;\r
-                               }\r
-                               case IDC_STRECLIST:\r
-                               {\r
-                                       if (SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)\r
-                                               SetTimeout(hwndDlg, 30);\r
-                                       else\r
-                                               SetTimeout(hwndDlg, 0);\r
-                               }\r
-                       }\r
-        }\r
-        break;\r
-  }\r
-  return FALSE;\r
-}\r
+
+/*
+ * PROJECT:     ReactOS System Control Panel Applet
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        dll/cpl/sysdm/startrec.c
+ * PURPOSE:     Computer settings for startup and recovery
+ * COPYRIGHT:   Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
+ *              Copyright 2006 Christoph von Wittich <Christoph@ApiViewer.de>
+ *
+ */
+
+#include "precomp.h"
+
+static TCHAR m_szFreeldrIni[MAX_PATH + 15];
+
+void SetTimeout(HWND hwndDlg, int Timeout)
+{
+       if (Timeout == 0)
+       {
+               EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECLISTUPDWN), FALSE);
+       }
+       else
+       {
+               EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECLISTUPDWN), TRUE);
+       }
+       SendDlgItemMessage(hwndDlg, IDC_STRRECLISTUPDWN, UDM_SETPOS, (WPARAM) 0, (LPARAM) MAKELONG((short) Timeout, 0));
+}
+
+/* Property page dialog callback */
+INT_PTR CALLBACK
+StartRecDlgProc(HWND hwndDlg,
+                UINT uMsg,
+                WPARAM wParam,
+                LPARAM lParam)
+{
+       TCHAR *szSystemDrive;
+       TCHAR szDefaultOS[MAX_PATH];
+       TCHAR szDefaultOSName[MAX_PATH];
+       TCHAR szTimeout[10];
+       int iTimeout;
+
+       UNREFERENCED_PARAMETER(lParam);
+       
+       switch(uMsg)
+       {
+               case WM_INITDIALOG:
+               {
+                       /* get Path to freeldr.ini or boot.ini */
+                       szSystemDrive = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PATH);
+                       if (szSystemDrive != NULL && szSystemDrive != NULL)
+                       {
+                               szSystemDrive = _tgetenv(_T("SystemDrive"));
+                               if (m_szFreeldrIni != NULL)
+                               {                                               
+                                       _tcscpy(m_szFreeldrIni, szSystemDrive);
+                                       _tcscat(m_szFreeldrIni, _T("\\freeldr.ini"));
+                                       if (!PathFileExists(m_szFreeldrIni))
+                                       {
+                                               _tcscpy(m_szFreeldrIni, szSystemDrive);
+                                               _tcscat(m_szFreeldrIni, _T("\\boot.ini"));
+                                       }
+                               }
+                               HeapFree(GetProcessHeap(), 0, szSystemDrive);
+                       }
+   
+                       SetDlgItemText(hwndDlg, IDC_STRRECDUMPFILE, _T("%SystemRoot%\\MiniDump"));
+
+                       /* load settings from freeldr.ini */
+                       GetPrivateProfileString(_T("boot loader"), _T("default"), NULL, szDefaultOS, MAX_PATH, m_szFreeldrIni);
+                       GetPrivateProfileString(_T("operating systems"), szDefaultOS, NULL, szDefaultOSName, MAX_PATH, m_szFreeldrIni);
+                       SendDlgItemMessage(hwndDlg, IDC_STRECOSCOMBO, CB_ADDSTRING, (WPARAM)0, (LPARAM)szDefaultOSName);
+                       SendDlgItemMessage(hwndDlg, IDC_STRECOSCOMBO, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
+
+                       /* timeout */
+                       iTimeout = GetPrivateProfileInt(_T("boot loader"), _T("timeout"), 0, m_szFreeldrIni);
+                       SetTimeout(hwndDlg, iTimeout);
+                       if (iTimeout != 0)
+                               SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0);
+
+               }
+               break;
+
+               case WM_COMMAND:
+               {
+                       switch(LOWORD(wParam))
+                       {
+                               case IDC_STRRECEDIT:
+                               {
+                                       ShellExecute(0, _T("open"), _T("notepad"), m_szFreeldrIni, NULL, SW_SHOWNORMAL);
+                                       break;
+                               }       
+                               case IDOK:
+                               {
+                                       /* save timeout */
+                                       if (SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
+                                               iTimeout = SendDlgItemMessage(hwndDlg, IDC_STRRECLISTUPDWN, UDM_GETPOS, (WPARAM)0, (LPARAM)0);
+                                       else
+                                               iTimeout = 0;
+                                       _stprintf(szTimeout, _T("%i"), iTimeout);
+                                       WritePrivateProfileString(_T("boot loader"), _T("timeout"), szTimeout, m_szFreeldrIni);
+                               }
+                               case IDCANCEL:
+                               {
+                                       EndDialog(hwndDlg,
+                                                         LOWORD(wParam));
+                                       return TRUE;
+                                       break;
+                               }
+                               case IDC_STRECLIST:
+                               {
+                                       if (SendDlgItemMessage(hwndDlg, IDC_STRECLIST, BM_GETCHECK, (WPARAM)0, (LPARAM)0) == BST_CHECKED)
+                                               SetTimeout(hwndDlg, 30);
+                                       else
+                                               SetTimeout(hwndDlg, 0);
+                               }
+                       }
+               }
+               break;
+  }
+  return FALSE;
+}