BOOL InstallPort(void) { //APIRET APIENTRY SplPdInstallPort(HAB hab,PSZ pszPortName) PFN pfnProcess; APIRET rc; sprintf(szMessage,"Installing %s",szPortName); PrintString(szMessage,3); if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDINSTALLPORT",&pfnProcess) == NO_ERROR) rc = pfnProcess(habAnchorBlock,szPortName); else { ErrorNotify("Error Getting INSTALLPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Installing Port - rc = %X",rc); ErrorNotify(szMessage); return(FALSE); } sprintf(szMessage,"Port %s Installed",szPortName); PrintString(szMessage,4); return(TRUE); }
ULONG QueryPort(char achBuffer[],ULONG cbBuffSize) { //APIRET APIENTRY SplPdQueryPort(HAB hab,PSZ pszPortName,PVOID pBufIn,ULONG cbBuf,PULONG cItems) PFN pfnProcess; ULONG ulItemCount = 0; APIRET rc; sprintf(szMessage,"Querying %s",szPortName); PrintString(szMessage,3); if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDQUERYPORT",&pfnProcess) == NO_ERROR) rc = pfnProcess(habAnchorBlock,szPortName,achBuffer,cbBuffSize,&ulItemCount); else { ErrorNotify("Error Getting QUERYPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Querying Port - rc = %X",rc); ErrorNotify(szMessage); return(0); } sprintf(szMessage,"%s -> %s",szPortName,achBuffer); PrintString(szMessage,4); return(ulItemCount); }
BOOL RemovePort(void) { PFN pfnProcess; APIRET rc; sprintf(szMessage,"Removing %s",szPortName); PrintString(szMessage,3); if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDREMOVEPORT",&pfnProcess) == NO_ERROR) rc = pfnProcess(habAnchorBlock,szPortName); else { ErrorNotify("Error Getting REMOVEPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Removing Port - rc = %X",rc); ErrorNotify(szMessage); return(FALSE); } sprintf(szMessage,"Port %s Removed",szPortName); PrintString(szMessage,4); return(TRUE); }
void APIENTRY ReadLoopThread() { THREAD *pstThd = pstThread; CONFIG *pCfg = &pstThd->stCfg; THREADCTRL *pThread = &pstThd->stThread; BOOL bReadComplete; CHAR *pString; APIRET rc; BOOL bSkipRead = FALSE; char szMessage[80]; ULONG ulStringLength; ULONG ulPostCount; // DosSetPriority(PRTYS_THREAD,PRTYC_FOREGROUNDSERVER,-28L,0); DosSetPriority(PRTYS_THREAD,PRTYC_REGULAR,-10L,0); ulStringLength = pCfg->wReadStringLength; DosAllocMem((PPVOID)&pString,10010,(PAG_COMMIT | PAG_WRITE | PAG_READ)); while (!pThread->bStopThread) { if (ulStringLength != pCfg->wReadStringLength) { DosFreeMem(pString); ulStringLength = pCfg->wReadStringLength; DosAllocMem((PPVOID)&pString,(ulStringLength + 10),(PAG_COMMIT | PAG_WRITE | PAG_READ)); } if (pCfg->bHalfDuplex) { while ((rc = DosWaitEventSem(hevStartReadSem,10000)) != 0) if (rc == ERROR_SEM_TIMEOUT) { ErrorNotify(pstThd,"Read start semaphore timed out"); bSkipRead = TRUE; } else { sprintf(szMessage,"Read start semaphore error - rc = %u",rc); ErrorNotify(pstThd,szMessage); } DosResetEventSem(hevStartReadSem,&ulPostCount); } if (bSkipRead) bSkipRead = FALSE; else { if (!pCfg->bReadCharacters) bReadComplete = ReadString(pstThd,pString); else bReadComplete = ReadCharacters(pstThd,pString); if (bReadComplete) DosPostEventSem(hevStartWriteSem); } } DosFreeMem(pString); DosPostEventSem(hevKillReadThreadSem); DosExit(EXIT_THREAD,0); }
BOOL TerminatePort(void) { //APIRET APIENTRY SplPdInitPort(HFILE hCom,PSZ pszPortName) PFN pfnProcess; APIRET rc; HFILE hCom; ULONG ulAction; sprintf(szMessage,"Terminating %s",szPortName); PrintString(szMessage,3); if ((rc = DosOpen(szPortName,&hCom,&ulAction,0L,0L,0x0001,0x21c2,0L)) == NO_ERROR) { if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDTERMPORT",&pfnProcess) == NO_ERROR) rc = pfnProcess(hCom,szPortName); else { ErrorNotify("Error Getting TERMPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } DosClose(hCom); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Terminating Port - rc = %X",rc); ErrorNotify(szMessage); return(FALSE); } sprintf(szMessage,"Port %s terminated",szPortName); PrintString(szMessage,4); return(TRUE); }
ULONG EnumeratePorts(char achBuffer[],ULONG cbBuffSize) { //APIRET APIENTRY SplPdEnumPort(HAB hab,PVOID pBuf,ULONG cbBuf,PULONG pulReturned,PULONG pulTotal,PULONG pcbRequired); ULONG ulReturned; ULONG ulTotal = 0; ULONG cbRequired; PFN pfnProcess; APIRET rc; if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDENUMPORT",&pfnProcess) == NO_ERROR) { if (pfnProcess(habAnchorBlock,0,0,&ulReturned,&ulTotal,&cbRequired) == ERROR_MORE_DATA) if (cbRequired <= cbBuffSize) rc = pfnProcess(habAnchorBlock,achBuffer,cbBuffSize,&ulReturned,&ulTotal,&cbRequired); else ulTotal = 0; } else { ErrorNotify("Error Getting ENUMPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Enumerating Port - rc = %X",rc); ErrorNotify(szMessage); return(0); } return(ulTotal); }
BOOL SetupPort(void) { //APIRET EXPENTRY SplPdSetPort(HAB hab,PSZ pszPortName,PULONG flModified) PFN pfnProcess; BOOL bModified = FALSE; APIRET rc; sprintf(szMessage,"Configuring %s",szPortName); PrintString(szMessage,3); if (hMod != 0) { if (DosQueryProcAddr(hMod,0,"SPLPDSETPORT",&pfnProcess) == NO_ERROR) rc = pfnProcess(habAnchorBlock,szPortName,&bModified); else { ErrorNotify("Error Getting SETPORT Address"); return(FALSE); } } else { sprintf(szMessage,"Error Loading Module %s",szModuleName); ErrorNotify(szMessage); return(FALSE); } if (rc != NO_ERROR) { sprintf(szMessage,"Error Setting-up Port - rc = %X",rc); ErrorNotify(szMessage); return(FALSE); } if (bModified) sprintf(szMessage,"Port %s was configured",szPortName); else sprintf(szMessage,"Port %s was not configured",szPortName); PrintString(szMessage,4); return(bModified); }
void LuaDebug::readline_handler( const system::error_code& e,std::size_t size ) { if( e ) { mSocket.reset(); return; } string str; istream is(&mInbuf); if( getline(is,str) ) { xpressive::sregex setbp = xpressive::sregex::compile("break<([^\?<>|\"*]+)>@(\\d+)"); xpressive::sregex infop = xpressive::sregex::compile("info:([^\\n]+)"); xpressive::sregex errorp = xpressive::sregex::compile("error<([^<^>]*)>"); xpressive::sregex errorpt = xpressive::sregex::compile("error<([^\?<>|\"*]+)>@(\\d+)"); xpressive::smatch what; if( xpressive::regex_match(str,what,setbp) ) { if( Break ) Break( what[1],boost::lexical_cast<int>(what[2]) ); } else if( xpressive::regex_match(str,what,infop) ) { if( GetInfoNotify ) GetInfoNotify(what[1]); } else if( xpressive::regex_match(str,what,errorpt) ) { if( Error ) Error( what[1],boost::lexical_cast<int>(what[2]) ); } else if( xpressive::regex_match(str,what,errorp) ) { if( ErrorNotify ) ErrorNotify(what[1]); } } boost::asio::async_read_until( *mSocket, mInbuf, '\n', bind(&LuaDebug::readline_handler,this,placeholders::error,placeholders::signal_number) ); }
void ColumnSize(SCREEN *pstScreen,LONG lReadEdge,LONG lWriteEdge,BOOL bTrackSibling) { APIRET rc; char szMessage[80]; RECTL rclClient; BOOL bOddScreen; BOOL bResetScrollBar = FALSE; if (pstScreen->hwndScroll != (HWND)NULL) { ClearColScrollBar(pstScreen); bResetScrollBar = TRUE; } if ((rc = DosRequestMutexSem(hmtxColGioBlockedSem,10000)) != NO_ERROR) { sprintf(szMessage,"DosRequestMutexSem error in ColumnSize: return code = %ld", rc); ErrorNotify(szMessage); } if (bTrackSibling) { if (lReadEdge != 0L) pstScreen->rcl.xLeft = lReadEdge; else if (lWriteEdge != 0L) pstScreen->rcl.xRight = lWriteEdge; } else { WinQueryWindowRect(hwndClient,&rclClient); if (stCFG.fLockWidth == LOCK_NONE) { if ((rclClient.xRight / 2) % stCell.cx) bOddScreen = TRUE; else bOddScreen = FALSE; if (pstScreen->wDirection == CS_WRITE) { if (bOddScreen) rclClient.xRight -= stCell.cx; pstScreen->rcl.xRight = (rclClient.xRight / 2); pstScreen->rcl.xLeft = rclClient.xLeft; } else { pstScreen->rcl.xRight = rclClient.xRight; pstScreen->rcl.xLeft = (rclClient.xRight / 2); if (bOddScreen) pstScreen->rcl.xLeft -= (stCell.cx / 2); } } else { if (pstScreen->wDirection == CS_WRITE) if (stCFG.fLockWidth == LOCK_WRITE) pstScreen->rcl.xRight = (stCFG.lLockWidth * stCell.cx); else pstScreen->rcl.xRight = (rclClient.xRight - (stCFG.lLockWidth * stCell.cx)); else { if (stCFG.fLockWidth == LOCK_WRITE) pstScreen->rcl.xLeft = (stCFG.lLockWidth * stCell.cx); else pstScreen->rcl.xLeft = (rclClient.xRight - (stCFG.lLockWidth * stCell.cx)); pstScreen->rcl.xRight = rclClient.xRight; } } pstScreen->rcl.yBottom = (rclClient.yBottom + lStatusHeight); pstScreen->rcl.yTop = rclClient.yTop; pstScreen->lHeight = (pstScreen->rcl.yTop - pstScreen->rcl.yBottom - stCell.cy); pstScreen->lCharHeight = ((pstScreen->lHeight / stCell.cy) + 1); stColTrack.ptlMaxTrackSize.y = (stCell.cy * pstScreen->lCharHeight); // SetColScrollRowCount(pstScreen); } pstScreen->lWidth = (pstScreen->rcl.xRight - pstScreen->rcl.xLeft - stCell.cx); pstScreen->lCharWidth = ((pstScreen->lWidth / stCell.cx) + 1); pstScreen->lCharSize = (pstScreen->lCharWidth * pstScreen->lCharHeight); pstScreen->rclDisp.xRight = (pstScreen->lWidth + stCell.cx); stColTrack.ptlMaxTrackSize.x = (stCell.cx * (stRead.lCharWidth + stWrite.lCharWidth - 6)); WinSetWindowPos(pstScreen->hwnd, 0L, pstScreen->rcl.xLeft, pstScreen->rcl.yBottom, (pstScreen->rcl.xRight - pstScreen->rcl.xLeft), (pstScreen->rcl.yTop - pstScreen->rcl.yBottom), (SWP_MOVE | SWP_SIZE)); if ((rc = DosReleaseMutexSem(hmtxColGioBlockedSem)) != NO_ERROR) { sprintf(szMessage,"DosReleaseMutexSem error in ColumnSize: return code = %ld", rc); ErrorNotify(szMessage); } if (bResetScrollBar) SetupColScrolling(pstScreen); WinInvalidateRect(hwndStatus,(PRECTL)NULL,FALSE); }
void ProcessResponse(HWND hwnd,MSG *pMessage) { NOTIFYLST *pNotifyList; USHORT usSubCount; USHORT usGroupCount; USHORT usMsgLen; LOGON *pLogon; ULONG *pulSubNum; SUBREQLST *pSubList; SERVERLST *pServerList; SUBRSPLST *pSubResponseList; ULONG *pulGroupNum; GROUPREQLST *pGroupList; GROUPRSPLST *pGroupResponseList; USHORT usCount; char *pData; ULONG ulPostCount; int iIndex; SUBSCRIBER *pSub; GROUP *pGroup; ULONG *pulNums; sprintf(szMessage,"Response received <%u>",pMessage->ulMessageNumber); PrintString(szMessage,9); switch (pMessage->fMessageType) { case RSP_TIMEOUT: break; case RSP_ACK_LOGON: PrintString("Logon acknowledged",10); MenuItemEnable(hwndFrame,IDM_CLIENT,TRUE); break; case RSP_NAK_LOGON: sprintf(szMessage,"Logon failed, reason = %u",pMessage->byData); PrintString(szMessage,10); break; case RSP_ACK_NOTIFY: PrintString("Notify successfull",10); DosPostEventSem(hevNotifyLoopSem); break; case RSP_NAK_NOTIFY: sprintf(szMessage,"Notify failed, reason = %u",pMessage->byData); PrintString(szMessage,10); break; case RSP_NAK_SUBSCRIBER: sprintf(szMessage,"Subscriber query failed, reason = %u",pMessage->byData); PrintString(szMessage,10); break; case RSP_ACK_SUBSCRIBER: if (pMessage->cbDataSize == 0) PrintString("No active subscribers defined at server",10); sprintf(szMessage,"Subscriber query succeeded"); PrintString(szMessage,10); break; case RSP_NAK_GROUP: sprintf(szMessage,"Group query failed, reason = %u",pMessage->byData); PrintString(szMessage,10); break; case RSP_ACK_GROUP: sprintf(szMessage,"Group query succeeded"); PrintString(szMessage,10); break; case RSP_SERVER: if (pMessage->cbDataSize == 0) PrintString("No active subscribers or groups defined at server",10); else { pServerList = (SERVERLST *)&pMessage->byData; sprintf(szMessage,"Server sends %u Subscribers and %u Groups",pServerList->usSubCount,pServerList->usGroupCount); /* ** query subscribers */ if ((pulNums = (ULONG *)malloc(pMessage->cbDataSize)) == 0) { ErrorNotify("Failed to allocate memory for RSP_SERVER message"); break; } pServerList = (SERVERLST *)&pMessage->byData; pulSubNum = (ULONG *)&pServerList->byData; usSubCount = pServerList->usSubCount; usGroupCount = pServerList->usGroupCount; memcpy(pulNums,pulSubNum,(sizeof(ULONG) * (usSubCount + usGroupCount))); if (usSubCount > 0) { pSubList = (SUBREQLST *)&pMessage->byData; pSubList->usSubCount = usSubCount; memcpy(&pSubList->ulSubNumber,pulNums,(sizeof(ULONG) * usSubCount)); pMessage->fMessageType = REQ_QUERY_SUBSCRIBER; pMessage->cbDataSize = ((sizeof(ULONG) * (usSubCount - 1)) + sizeof(SUBREQLST)); pMessage->cbSize = (pMessage->cbDataSize + sizeof(MSG) - 1); SendMessage(pMessage); } if (usGroupCount > 0) { pGroupList = (GROUPREQLST *)&pMessage->byData; pGroupList->usGroupCount = usGroupCount; memcpy(&pGroupList->ulGroupNumber,&pulNums[usSubCount],(sizeof(ULONG) * usGroupCount)); pMessage->fMessageType = REQ_QUERY_GROUP; pMessage->cbDataSize = ((sizeof(ULONG) * (usGroupCount - 1)) + sizeof(GROUPREQLST)); pMessage->cbSize = (pMessage->cbDataSize + sizeof(MSG) - 1); SendMessage(pMessage); } free(pulNums); } break; default: sprintf(szMessage,"Unknown response, type = %u",pMessage->fMessageType); PrintString(szMessage,10); break; } DosFreeMem(pMessage); }