/*===========================================================================*/ /* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */ /* Houston, Texas */ /*===========================================================================*/ #define NOLSTRING TRUE /* jtf win3 mod */ #include #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); } }