* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <notepad.h>
+#include "notepad.h"
LRESULT CALLBACK EDIT_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
}
#endif
-VOID ShowLastError(void)
+VOID ShowLastError(VOID)
{
DWORD error = GetLastError();
if (error != NO_ERROR)
/**
* Sets the caption of the main window according to Globals.szFileTitle:
- * Notepad - (untitled) if no file is open
- * Notepad - [filename] if a file is given
+ * (untitled) - Notepad if no file is open
+ * [filename] - Notepad if a file is given
*/
static void UpdateWindowCaption(void)
{
TCHAR szCaption[MAX_STRING_LEN];
- TCHAR szUntitled[MAX_STRING_LEN];
+ TCHAR szNotepad[MAX_STRING_LEN];
- LoadString(Globals.hInstance, STRING_NOTEPAD, szCaption, SIZEOF(szCaption));
+ LoadString(Globals.hInstance, STRING_NOTEPAD, szNotepad, SIZEOF(szNotepad));
- if (Globals.szFileTitle[0] != '\0') {
- static const TCHAR bracket_l[] = _T(" - [");
- static const TCHAR bracket_r[] = _T("]");
- _tcscat(szCaption, bracket_l);
- _tcscat(szCaption, Globals.szFileTitle);
- _tcscat(szCaption, bracket_r);
+ if (Globals.szFileTitle[0] != 0)
+ {
+ StringCchCopy(szCaption, SIZEOF(szCaption), Globals.szFileTitle);
}
else
{
- static const TCHAR hyphen[] = _T(" - ");
- LoadString(Globals.hInstance, STRING_UNTITLED, szUntitled, SIZEOF(szUntitled));
- _tcscat(szCaption, hyphen);
- _tcscat(szCaption, szUntitled);
+ LoadString(Globals.hInstance, STRING_UNTITLED, szCaption, SIZEOF(szCaption));
}
-
+
+ StringCchCat(szCaption, SIZEOF(szCaption), _T(" - "));
+ StringCchCat(szCaption, SIZEOF(szCaption), szNotepad);
SetWindowText(Globals.hMainWnd, szCaption);
}
return (hFile != INVALID_HANDLE_VALUE);
}
-
BOOL HasFileExtension(LPCTSTR szFilename)
{
LPCTSTR s;
return _tcsrchr(szFilename, _T('.')) != NULL;
}
-
-static VOID DoSaveFile(VOID)
+static BOOL DoSaveFile(VOID)
{
+ BOOL bRet = TRUE;
HANDLE hFile;
LPTSTR pTemp;
DWORD size;
if(hFile == INVALID_HANDLE_VALUE)
{
ShowLastError();
- return;
+ return FALSE;
}
size = GetWindowTextLength(Globals.hEdit) + 1;
{
CloseHandle(hFile);
ShowLastError();
- return;
+ return FALSE;
}
size = GetWindowText(Globals.hEdit, pTemp, size);
#ifndef UNICODE
pTemp = (LPTSTR)ConvertToUNICODE(pTemp, &size);
- if (!pTemp) {
+ if (!pTemp)
+ {
/* original "pTemp" already freed */
CloseHandle(hFile);
ShowLastError();
- return;
+ return FALSE;
}
#endif
if (size)
{
if (!WriteText(hFile, (LPWSTR)pTemp, size, Globals.iEncoding, Globals.iEoln))
+ {
ShowLastError();
+ bRet = FALSE;
+ }
else
+ {
SendMessage(Globals.hEdit, EM_SETMODIFY, FALSE, 0);
+ bRet = TRUE;
+ }
}
CloseHandle(hFile);
HeapFree(GetProcessHeap(), 0, pTemp);
+ return bRet;
}
/**
* TRUE - User agreed to close (both save/don't save)
* FALSE - User cancelled close by selecting "Cancel"
*/
-BOOL DoCloseFile(void)
+BOOL DoCloseFile(VOID)
{
int nResult;
{
/* prompt user to save changes */
nResult = AlertFileNotSaved(Globals.szFileName);
- switch (nResult) {
- case IDYES: DIALOG_FileSave();
- break;
+ switch (nResult)
+ {
+ case IDYES:
+ if(!DIALOG_FileSave())
+ return FALSE;
+ break;
- case IDNO: break;
+ case IDNO:
+ break;
- case IDCANCEL: return(FALSE);
- break;
+ case IDCANCEL:
+ return FALSE;
- default: return(FALSE);
- break;
- } /* switch */
- } /* if */
+ default:
+ return FALSE;
+ }
+ }
SetFileName(empty_str);
-
UpdateWindowCaption();
- return(TRUE);
+
+ return TRUE;
}
-void DoOpenFile(LPCTSTR szFileName)
+VOID DoOpenFile(LPCTSTR szFileName)
{
static const TCHAR dotlog[] = _T(".LOG");
HANDLE hFile;
- LPTSTR pszText;
+ LPTSTR pszText = NULL;
DWORD dwTextLen;
TCHAR log[5];
}
-VOID DIALOG_FileSave(VOID)
+BOOL DIALOG_FileSave(VOID)
{
- if (Globals.szFileName[0] == '\0')
- DIALOG_FileSaveAs();
+ if (Globals.szFileName[0] == 0)
+ return DIALOG_FileSaveAs();
else
- DoSaveFile();
+ return DoSaveFile();
}
static UINT_PTR CALLBACK DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
}
-VOID DIALOG_FileSaveAs(VOID)
+BOOL DIALOG_FileSaveAs(VOID)
{
OPENFILENAME saveas;
TCHAR szDir[MAX_PATH];
saveas.lpTemplateName = MAKEINTRESOURCE(DIALOG_ENCODING);
saveas.lpfnHook = DIALOG_FileSaveAs_Hook;
- if (GetSaveFileName(&saveas)) {
+ if (GetSaveFileName(&saveas))
+ {
+ // HACK: Because in ROS, Save-As boxes don't check the validity
+ // of file names and thus, here, szPath can be invalid !! We only
+ // see its validity when we call DoSaveFile()...
SetFileName(szPath);
- UpdateWindowCaption();
- DoSaveFile();
+ if (DoSaveFile())
+ {
+ UpdateWindowCaption();
+ return TRUE;
+ }
+ else
+ {
+ SetFileName(_T(""));
+ return FALSE;
+ }
+ }
+ else
+ {
+ return FALSE;
}
}
_tcscat(szText, _T(" "));
GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL, szDate, MAX_STRING_LEN);
_tcscat(szText, szDate);
- SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)szDate);
+ SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)szText);
}
VOID DoCreateStatusBar(VOID)
{
DWORD dwStyle;
int iSize;
- LPTSTR pTemp;
+ LPTSTR pTemp = NULL;
iSize = 0;