368 lines
12 KiB
C
368 lines
12 KiB
C
|
/*===========================================================================*/
|
||
|
/* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */
|
||
|
/* Houston, Texas */
|
||
|
/*===========================================================================*/
|
||
|
|
||
|
#define NOLSTRING TRUE /* jtf win3 mod */
|
||
|
#include <windows.h>
|
||
|
#include "port1632.h"
|
||
|
#include "dcrc.h"
|
||
|
#include "dynacomm.h"
|
||
|
#include "fileopen.h"
|
||
|
#include "task.h"
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* sndPre() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID sndPre(BYTE *fileName, INT actionString)
|
||
|
{
|
||
|
showXferCtrls(IDSTOP | IDPAUSE | IDSCALE | IDSENDING); /* mbbx 2.00: xfer ctrls... */
|
||
|
showRXFname(fileName, actionString);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* sndFileErr() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID sndFileErr(BYTE *fileName, INT wID)
|
||
|
{
|
||
|
BYTE tmp1[TMPNSTR+1];
|
||
|
|
||
|
LoadString(hInst, wID, tmp1, TMPNSTR);
|
||
|
testMsg("%s %s", tmp1, fileName);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* getSndTFile() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
INT_PTR APIENTRY FO_SendTextFile(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) /* mbbx 2.00: new FO hook scheme... */
|
||
|
{
|
||
|
switch(message)
|
||
|
{
|
||
|
case WM_INITDIALOG:
|
||
|
if(xferSndLF != 0)
|
||
|
CheckDlgButton(hDlg, (xferSndLF > 0) ? FO_IDSNDLF : FO_IDSNDNOLF, TRUE);
|
||
|
break;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
switch(GET_WM_COMMAND_ID(wParam, lParam))
|
||
|
{
|
||
|
case FO_IDSNDLF:
|
||
|
if(xferSndLF == -1)
|
||
|
CheckDlgButton(hDlg, FO_IDSNDNOLF, FALSE);
|
||
|
xferSndLF = ((xferSndLF == 1) ? 0 : 1);
|
||
|
CheckDlgButton(hDlg, FO_IDSNDLF, xferSndLF);
|
||
|
break;
|
||
|
case FO_IDSNDNOLF:
|
||
|
if(xferSndLF == 1)
|
||
|
CheckDlgButton(hDlg, FO_IDSNDLF, FALSE);
|
||
|
xferSndLF = ((xferSndLF == -1) ? 0 : -1);
|
||
|
CheckDlgButton(hDlg, FO_IDSNDNOLF, xferSndLF);
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL getSndTFile(INT actionString)
|
||
|
{
|
||
|
BYTE fileExt[FILENAMELEN+1];
|
||
|
FSReply reply;
|
||
|
BYTE szTitle[MINRESSTR];
|
||
|
OFSTRUCT file;
|
||
|
|
||
|
DEBOUT("getSndTFile: %s\n","Got IN");
|
||
|
getFileDocData(FILE_NDX_MEMO, reply.vRefNum, reply.fName, fileExt, NULL); /* mbbx 1.03 */
|
||
|
|
||
|
|
||
|
if(actionString == STR_VIEWING)
|
||
|
{
|
||
|
xferSndLF = 0; /* mbbx: WAS xferSndLF = TRUE; */
|
||
|
LoadString(hInst, STR_VIEWTEXTFILE, szTitle, MINRESSTR);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
xferSndLF = -1; /* jtf 3.22 */
|
||
|
LoadString(hInst, STR_SENDTEXTFILE, szTitle, MINRESSTR);
|
||
|
}
|
||
|
|
||
|
/* mbbx 2.00: new FO hook scheme... */
|
||
|
DEBOUT("getSndTFile: %s\n","Calling FileOpen");
|
||
|
if(reply.vRefNum[strlen(reply.vRefNum) - 1] != '\\')
|
||
|
strcat(reply.vRefNum, "\\");
|
||
|
|
||
|
reply.good = FileOpen(reply.vRefNum, reply.fName, NULL, fileExt, szTitle,
|
||
|
FO_DBSNDTEXT, FO_SendTextFile, FO_FILEEXIST);
|
||
|
|
||
|
if(reply.good)
|
||
|
{
|
||
|
DEBOUT("getSndTFile: %s\n","FileOpen reply was good");
|
||
|
setFileDocData(FILE_NDX_MEMO, reply.vRefNum, reply.fName, fileExt, NULL); /* mbbx 2.00: no forced extents */
|
||
|
|
||
|
strcpy(xferVRefNum+1, reply.vRefNum); /* mbbx 0.62: save the path !!! */
|
||
|
*xferVRefNum = strlen(xferVRefNum+1);
|
||
|
|
||
|
strcpy(xferFname+1, reply.fName);
|
||
|
*xferFname = strlen(xferFname+1);
|
||
|
#ifdef ORGCODE
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), reply.fName);
|
||
|
#else
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), "\\");
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), reply.fName);
|
||
|
DEBOUT("getSndTFile: opening the file[%s]\n",reply.vRefNum);
|
||
|
DEBOUT("getSndTFile: with flags [%lx]\n",O_RDONLY);
|
||
|
|
||
|
#endif
|
||
|
/* jtf 3.20 */
|
||
|
|
||
|
if((xferRefNo = OpenFile(reply.vRefNum, &file,
|
||
|
OF_READ)) == -1)
|
||
|
{
|
||
|
//sndFileErr (STRFERROPEN, reply.fName); BUG:12588 args are swaped!
|
||
|
sndFileErr (reply.fName,STRFERROPEN);
|
||
|
DEBOUT("getSndTFile: %s\n","Got OUT with FAIL(open)");
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
if ((xferBytes = fileLength (xferRefNo)) == -1l)
|
||
|
{
|
||
|
//sndFileErr (STRFERRFILELENGTH, reply.fName); BUG:12588 args are swapped!
|
||
|
sndFileErr (reply.fName,STRFERRFILELENGTH);
|
||
|
DEBOUT("getSndTFile: %s\n","Got OUT with FAIL(filelength)");
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
DEBOUT("getSndTFile: size of file put in xferBytes=%lx\n",xferBytes);
|
||
|
xferOrig = xferBytes;
|
||
|
xferPct = 0;
|
||
|
sndPre(reply.fName, actionString);
|
||
|
DEBOUT("getSndTFile: %s\n","Got OUT with success");
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
DEBOUT("getSndTFile: %s\n","Got OUT with FAIL(!reply.good)");
|
||
|
return(FALSE);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* sndTfile() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID sndTFile ()
|
||
|
{
|
||
|
xferFlag = XFRNONE;
|
||
|
xferPaused = FALSE;
|
||
|
xferTxtType = (TTXTTYPE) (trmParams.xTxtType - ITMSTD);
|
||
|
xferChrType = (TCHRTYPE) (trmParams.xChrType - ITMCHRDELAY);
|
||
|
xferLinType = (TLINTYPE) (trmParams.xLinType - ITMLINDELAY);
|
||
|
xferChrDelay = trmParams.xChrDelay;
|
||
|
xferLinDelay = trmParams.xLinDelay;
|
||
|
strcpy(xferLinStr+1, trmParams.xLinStr);
|
||
|
xferLinStr[0] = strlen(trmParams.xLinStr);
|
||
|
stripControl(xferLinStr);
|
||
|
|
||
|
if(getSndTFile(STR_SENDING))
|
||
|
{
|
||
|
xferFlag = XFRSND;
|
||
|
*outBuf = 0; /* (mbbx) clear out residuals */
|
||
|
if(trmParams.xWordWrap)
|
||
|
{
|
||
|
outBufCol = 0;
|
||
|
outBufSeq = FALSE;
|
||
|
xferBlkSize = 1; /* (xmbb) */
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* typTFile() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID typTFile()
|
||
|
{
|
||
|
xferFlag = XFRNONE;
|
||
|
xferPaused = FALSE;
|
||
|
xferStopped = FALSE;
|
||
|
|
||
|
if(getSndTFile(STR_VIEWING))
|
||
|
{
|
||
|
xferFlag = XFRTYP;
|
||
|
*outBuf = 0; /* (mbbx) */
|
||
|
if(trmParams.xWordWrap && (xferSndLF >= 0)) /* mbb?: wth??? */
|
||
|
{
|
||
|
outBufCol = 0;
|
||
|
outBufSeq = FALSE;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* rcvErr() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID rcvErr(BYTE *fileName)
|
||
|
{
|
||
|
strcpy(taskState.string+1, fileName);
|
||
|
*taskState.string = strlen(fileName);
|
||
|
TF_ErrProc(STREWRERR, MB_OK | MB_ICONHAND, 999);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* rcvPutFile() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
INT_PTR APIENTRY FO_RcvTextFile(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) /* mbbx 2.00: new FO hook scheme... */
|
||
|
//HWND hDlg;
|
||
|
//WORD message;
|
||
|
//WPARAM wParam;
|
||
|
//LONG lParam;
|
||
|
{
|
||
|
switch(message)
|
||
|
{
|
||
|
case WM_INITDIALOG:
|
||
|
xferAppend = FALSE;
|
||
|
CheckDlgButton(hDlg, FO_IDCTRL, xferSaveCtlChr);
|
||
|
CheckDlgButton(hDlg, FO_IDTABLE, xferTableSave);
|
||
|
break;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
switch(GET_WM_COMMAND_ID(wParam, lParam))
|
||
|
{
|
||
|
case FO_IDAPPEND:
|
||
|
if(xferAppend = !xferAppend)
|
||
|
pFOData->wMode |= FO_FILEEXIST;
|
||
|
else
|
||
|
pFOData->wMode &= ~FO_FILEEXIST;
|
||
|
CheckDlgButton(hDlg, FO_IDAPPEND, xferAppend);
|
||
|
break;
|
||
|
case FO_IDCTRL:
|
||
|
CheckDlgButton(hDlg, FO_IDCTRL, xferSaveCtlChr = !xferSaveCtlChr);
|
||
|
break;
|
||
|
case FO_IDTABLE:
|
||
|
CheckDlgButton(hDlg, FO_IDTABLE, xferTableSave = !xferTableSave);
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID rcvPutFile(FSReply *reply, BYTE *fileExt)
|
||
|
{
|
||
|
*reply->fName = 0; /* mbbx 2.00: CUA */
|
||
|
|
||
|
/* mbbx 2.00: new FO hook scheme... */
|
||
|
if(reply->vRefNum[strlen(reply->vRefNum) - 1] != '\\')
|
||
|
strcat(reply->vRefNum, "\\");
|
||
|
|
||
|
reply->good = FileOpen(reply->vRefNum, reply->fName, NULL, fileExt, NULL,
|
||
|
FO_DBRCVTEXT, FO_RcvTextFile, FO_PUTFILE);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* rcvPre() - Show transfer control & set up for receiving text.[scf] */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID rcvPre(BYTE *fileName, INT actionString)
|
||
|
{
|
||
|
xferFlag = XFRRCV;
|
||
|
xferBytes = -1; /* Special flag to enable stop */
|
||
|
xferPaused = FALSE; /* button */
|
||
|
xferLength = 0L; /* mbbx 2.00: mac */
|
||
|
tblPos = TBLBEGINLINE;
|
||
|
|
||
|
showXferCtrls(IDSTOP | IDPAUSE | IDSENDING); /* mbbx 2.00: xfer ctrls... */
|
||
|
showRXFname(fileName, actionString);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
/* rcvTFile() - */
|
||
|
/*---------------------------------------------------------------------------*/
|
||
|
|
||
|
VOID rcvTFile()
|
||
|
{
|
||
|
FSReply reply;
|
||
|
BYTE fileExt[FILENAMELEN+1];
|
||
|
OFSTRUCT file;
|
||
|
BYTE OEMname[STR255]; /* jtf 3.20 */
|
||
|
|
||
|
getFileDocData(FILE_NDX_MEMO, reply.vRefNum, NULL, fileExt, NULL); /* mbbx 1.03 */
|
||
|
|
||
|
xferSaveCtlChr = FALSE;
|
||
|
xferTableSave = FALSE;
|
||
|
rcvPutFile(&reply, fileExt);
|
||
|
|
||
|
if(reply.good)
|
||
|
{
|
||
|
setFileDocData(FILE_NDX_MEMO, reply.vRefNum, reply.fName, fileExt, NULL); /* mbbx 2.00: no forced extents */
|
||
|
|
||
|
strcpy(xferVRefNum+1, reply.vRefNum); /* mbbx 0.62: save the path !!! */
|
||
|
*xferVRefNum = strlen(xferVRefNum+1);
|
||
|
|
||
|
strcpy(xferFname+1, reply.fName);
|
||
|
*xferFname = strlen(xferFname+1);
|
||
|
#ifdef ORGCODE
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), reply.fName);
|
||
|
#else
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), "\\");
|
||
|
strcpy(reply.vRefNum+strlen(reply.vRefNum), reply.fName);
|
||
|
#endif
|
||
|
|
||
|
// JYF -- replace below two lines with the following if ()
|
||
|
// to remove the use of AnsiToOem()
|
||
|
//
|
||
|
//AnsiToOem(reply.vRefNum, OEMname); /* jtf 3.20 */
|
||
|
//if(xferAppend && fileExist(OEMname))
|
||
|
|
||
|
if (xferAppend && fileExist((LPSTR)reply.vRefNum))
|
||
|
{
|
||
|
/* jtf 3.20 */
|
||
|
DEBOUT("rcvTFile: doing open(%s)\n",reply.vRefNum);
|
||
|
DEBOUT("rcvTFile: with flag [%lx]\n",O_WRONLY);
|
||
|
|
||
|
if((xferRefNo = OpenFile(reply.vRefNum,
|
||
|
&file,
|
||
|
OF_WRITE | OF_CANCEL)) == -1)
|
||
|
{
|
||
|
rcvErr(reply.fName);
|
||
|
return;
|
||
|
}
|
||
|
_lseek(xferRefNo, 0L, 2);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
/* jtf 3.20 */
|
||
|
DEBOUT("rcvTFile: doing open(%s)\n",reply.vRefNum);
|
||
|
DEBOUT("rcvTFile: with flag [%lx]\n",O_WRONLY|O_CREAT|O_TRUNC|S_IWRITE);
|
||
|
|
||
|
if((xferRefNo = OpenFile(reply.vRefNum,
|
||
|
&file,
|
||
|
OF_WRITE | OF_CREATE)) == -1)
|
||
|
{
|
||
|
rcvErr(reply.fName);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xferBufferCount = 0; /* rjs bugs 016 */
|
||
|
xferBufferHandle = GlobalAlloc(GMEM_MOVEABLE, (DWORD) 1024); /* rjs bugs 016 */
|
||
|
rcvPre(reply.fName, STR_RECEIVING);
|
||
|
}
|
||
|
}
|