home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
NOTEPAD2.ZIP
/
NPSAVE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1989-02-08
|
4KB
|
162 lines
/***************************************************************************\
* npfile.c - notepad file processing
*
* Created by Microsoft Corporation, 1989
\***************************************************************************/
#define INCL_WIN
#define INCL_DOS
#include <os2.h>
#include <stdio.h>
#include <string.h>
#include <opendlg.h>
#include "notepad.h"
#include "npcmd.h"
/* Global Variables */
DLF dlf;
/* Forward Declarations */
VOID NPSaveFile(SHANDLE FAR *);
/* Procedures */
int NPCheckSave(VOID)
{
int ichoice;
if (fIsChanged()) {
ichoice = AlertBox(hwndNP, IDS_SCC,
(fNamed?szFileName:szMsgs[MS_DOC]), szTitle, NULL,
MB_YESNOCANCEL | MB_ICONQUESTION | MB_APPLMODAL);
if (ichoice == MBID_YES) {
CmdSave();
}
return(ichoice);
} else {
return(MBID_NO);
}
}
VOID NPSave(VOID)
{
SHANDLE hFile;
if (!OpenFile((PSZ)szFileName,
(PHANDLE)&hFile,
(PSZ)dlf.szOpenFile,
OF_WRITE)) {
AlertBox(hwndNP,
IDS_EOF,
(PSZ)szFileName,
szTitle,
NULL,
MB_OK | MB_ICONASTERISK | MB_APPLMODAL);
}
else
NPSaveFile(&hFile);
ClearChanged();
}
VOID NPSaveAs(VOID)
{
SHANDLE hFile;
VOID NPSaveFile(SHANDLE FAR *);
dlf.rgbAction = DLG_HELP | DLG_SAVEDLG;
dlf.rgbFlags = ATTRDIRLIST;
dlf.phFile = &hFile;
dlf.pszExt = szMsgs[MS_DFLEXT];
dlf.pszAppName = szTitle;
dlf.pszInstructions = NULL;
dlf.pszTitle = szMsgs[MS_SAVEAS];
if (!fNamed)
lstrcpy(dlf.szOpenFile,""); /* set no current file flag */
switch(DlgFile(hwndNP, (PDLF)&dlf)) {
case TDF_ERRMEM:
case TDF_INVALID:
case TDF_NOSAVE:
return;
default:
fNamed = TRUE;
lstrcpy(szFileName,dlf.szOpenFile);
SetTitle(dlf.szFileName);
NPSaveFile(dlf.phFile);
ClearChanged();
break;
}
}
VOID NPSaveFile(SHANDLE FAR *phfile)
{
#define BUFLEN 300
CHAR ch, buff[BUFLEN];
USHORT len, lenwritten;
BOOL fCROut;
HPOINTER hptrSave;
LFAInit(TRUE);
ch = LFANextCh();
fCROut = FALSE;
hptrSave = WinQueryPointer (HWND_DESKTOP);
WinSetPointer(HWND_DESKTOP, WinQuerySysPointer (HWND_DESKTOP, SPTR_WAIT, FALSE));
DosNewSize(*phfile,(ULONG)0);
do {
len = 0;
while ((ch != '\0') && (len < BUFLEN)) {
if ((ch == '\n') && (!fCROut)) {
buff[len++] = '\r';
fCROut = TRUE;
} else {
buff[len++] = ch;
ch = LFANextCh();
fCROut = FALSE;
}
}
if ((len != 0) &&
((DosWrite(*phfile, buff, len, &lenwritten)) ||
(lenwritten != len))) {
WinAlarm(HWND_DESKTOP, WA_WARNING);
WinMessageBox(HWND_DESKTOP,
hwndNP,
szMsgs[MS_SAVEERR],
NULL,
0,
MB_OK | MB_ICONEXCLAMATION | MB_APPLMODAL);
break;
}
} while (ch != '\0');
DosClose(*phfile);
WinSetPointer (HWND_DESKTOP, hptrSave);
}
BOOL fIsChanged(VOID)
{
if (!fChanged) {
fChanged = (BOOL)LONGFROMMR(WinSendMsg(hwndNPEdit,
EM_QUERYCHANGED,
0L,
0L));
}
return(fChanged);
}
VOID SetChanged(VOID)
{
fChanged = TRUE;
}
VOID ClearChanged(VOID)
{
WinSendMsg(hwndNPEdit,EM_QUERYCHANGED,0L,0L);
fChanged = FALSE;
}