Skip to content

Commit

Permalink
RLogin-2.23.2
Browse files Browse the repository at this point in the history
  • Loading branch information
kmiya-culti committed Feb 26, 2018
1 parent 0c2e935 commit 07fb48f
Show file tree
Hide file tree
Showing 66 changed files with 5,492 additions and 848 deletions.
4 changes: 3 additions & 1 deletion RLogin/CertKeyDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "stdafx.h"
#include "RLogin.h"
#include "MainFrm.h"
#include "CertKeyDlg.h"
//#include "afxdialogex.h"

Expand Down Expand Up @@ -50,7 +51,8 @@ BOOL CCertKeyDlg::OnInitDialog()
SetTimer(1028, 1000, NULL);
m_Counter = 0;

if ( (pWnd = GetDlgItem(IDC_DIGEST)) != NULL && m_DigestFont.CreatePointFont(9 * 10, _T("Consolas")) )
if ( (pWnd = GetDlgItem(IDC_DIGEST)) != NULL && m_DigestFont.CreatePointFont(
MulDiv(9 * 10, ((CMainFrame *)::AfxGetMainWnd())->m_ScreenDpiY, 96), _T("Consolas")) )
pWnd->SetFont(&m_DigestFont);

return TRUE;
Expand Down
28 changes: 11 additions & 17 deletions RLogin/ComSock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ CComSock::CComSock(class CRLoginDoc *pDoc):CExtSocket(pDoc)
m_pComMoni = NULL;
m_RecvByteSec = 0;
m_SendByteSec = 0;
m_bXonXffMode = FALSE;
m_fInXOutXMode = 0;

SetRecvBufSize(COMBUFSIZE);
}
Expand Down Expand Up @@ -103,15 +103,13 @@ BOOL CComSock::Open(LPCTSTR lpszHostAddress, UINT nHostPort, UINT nSocketPort, i
return FALSE;
}

PurgeComm(m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
SetCommState(m_hCom, &(m_pComConf->dcb));
SetupComm(m_hCom, COMQUEUESIZE, COMQUEUESIZE);
PurgeComm(m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

SetCommState(m_hCom, &(m_pComConf->dcb));
EscapeCommFunction(m_hCom, m_pComConf->dcb.fDtrControl == DTR_CONTROL_DISABLE ? CLRDTR : SETDTR);
EscapeCommFunction(m_hCom, m_pComConf->dcb.fRtsControl == RTS_CONTROL_DISABLE ? CLRRTS : SETRTS);

PurgeComm(m_hCom, PURGE_TXABORT | PURGE_RXABORT);

GetCommTimeouts(m_hCom, &ComTime);
ComTime.ReadIntervalTimeout = 10;
ComTime.ReadTotalTimeoutMultiplier = 0;
Expand Down Expand Up @@ -212,21 +210,18 @@ void CComSock::SetXonXoff(int sw)
if ( m_hCom == INVALID_HANDLE_VALUE || m_pComConf == NULL )
return;

if ( sw ) { // ->ON
if ( m_pComConf->dcb.fInX != 0 && m_pComConf->dcb.fOutX != 0 )
return;
if ( !m_bXonXffMode )
if ( sw ) { // OFF->ON
if ( m_pComConf->dcb.fInX != 0 || m_pComConf->dcb.fOutX != 0 || m_fInXOutXMode == 0 )
return;
m_pComConf->dcb.fInX = 1;
m_pComConf->dcb.fOutX = 1;
} else { // ->OFF
if ( m_pComConf->dcb.fInX == 0 && m_pComConf->dcb.fOutX == 0 ) {
m_bXonXffMode = FALSE;
m_pComConf->dcb.fInX = m_fInXOutXMode & 1;
m_pComConf->dcb.fOutX = (m_fInXOutXMode >> 4) & 1;
m_fInXOutXMode = 0;
} else { // ON->OFF
if ( m_pComConf->dcb.fInX == 0 && m_pComConf->dcb.fOutX == 0 )
return;
}
m_fInXOutXMode = m_pComConf->dcb.fInX | (m_pComConf->dcb.fOutX << 4);
m_pComConf->dcb.fInX = 0;
m_pComConf->dcb.fOutX = 0;
m_bXonXffMode = TRUE;
}

SetComConf();
Expand Down Expand Up @@ -1115,7 +1110,6 @@ void CComSock::AliveComPort(BYTE pComAliveBits[COMALIVEBYTE])
RETRY:
if ( QueryDosDevice(NULL, pDevBuf, nBufLen) > 0 ) {
for ( p = pDevBuf ; *p != _T('\0') ; ) {
TRACE(_T("QueryDosDevice %s\n"), p);
if ( _tcsnicmp(p, _T("COM"), 3) == 0 && (n = _tstoi(p + 3)) > 0 && n < COMALIVEBITS )
pComAliveBits[n / 8] |= (1 << (n % 8));
while ( *(p++) != _T('\0') );
Expand Down
2 changes: 1 addition & 1 deletion RLogin/ComSock.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class CComSock : public CExtSocket
class CComMoniDlg *m_pComMoni;
int m_RecvByteSec;
int m_SendByteSec;
BOOL m_bXonXffMode;
DWORD m_fInXOutXMode;

volatile enum { THREAD_NONE = 0, THREAD_RUN, THREAD_ENDOF, THREAD_DONE } m_ThreadMode;

Expand Down
32 changes: 32 additions & 0 deletions RLogin/Data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,38 @@ static const char Base64DecTab[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };

LPCSTR CBuffer::Base64Param(LPCSTR str)
{
int n, c, o;

Clear();
for ( n = o = 0 ; *str != '\0' ; n++, str++ ) {
while ( *str <= ' ' && *str != '\0' )
str++;
if ( (c = Base64DecTab[(BYTE)(*str)]) < 0 )
break;
switch(n % 4) {
case 0:
o = c << 2;
break;
case 1:
o |= (c >> 4);
Put8Bit(o);
o = c << 4;
break;
case 2:
o |= (c >> 2);
Put8Bit(o);
o = c << 6;
break;
case 3:
o |= c;
Put8Bit(o);
break;
}
}
return str;
}
LPCTSTR CBuffer::Base64Decode(LPCTSTR str)
{
int n, c, o;
Expand Down
1 change: 1 addition & 0 deletions RLogin/Data.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ class CBuffer : public CObject
LONG PTR32BIT(LPBYTE pos);
LONGLONG PTR64BIT(LPBYTE pos);

LPCSTR Base64Param(LPCSTR str);
LPCTSTR Base64Decode(LPCTSTR str);
void Base64Encode(LPBYTE buf, int len);
LPCTSTR Base16Decode(LPCTSTR str);
Expand Down
12 changes: 6 additions & 6 deletions RLogin/ExtOptPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,24 @@ static const struct _OptListTab {
// RLogin SockOpt 1000-1511(0-511)
// { TO_RLCURIMD, IDT_EXTOPT_LIST01 },
// { TO_RLRSPAST, IDT_EXTOPT_LIST02 },
{ TO_RLGWDIS, IDT_EXTOPT_LIST03 },
// { TO_RLGWDIS, IDT_EXTOPT_LIST03 },
{ TO_RLMWDIS, IDT_EXTOPT_LIST04 },
{ TO_RLGRPIND, IDT_EXTOPT_LIST05 },
// { TO_RLSTAYCLIP, IDT_EXTOPT_LIST06 },
{ TO_SETWINPOS, IDT_EXTOPT_LIST07 },
// { TO_SETWINPOS, IDT_EXTOPT_LIST07 },
{ TO_RLWORDPP, IDT_EXTOPT_LIST08 },
// { TO_RLRBSCROLL, IDT_EXTOPT_LIST09 },
// { TO_RLEDITPAST, IDT_EXTOPT_LIST10 },
// { TO_RLNTBCSEND, IDT_EXTOPT_LIST11 },
// { TO_RLNTBCRECV, IDT_EXTOPT_LIST12 },
// { TO_RLNOTCLOSE, IDT_EXTOPT_LIST13 },
{ TO_RLPAINWTAB, IDT_EXTOPT_LIST14 },
{ TO_RLHIDPIFSZ, IDT_EXTOPT_LIST15 },
{ TO_RLBACKHALF, IDT_EXTOPT_LIST16 },
// { TO_RLHIDPIFSZ, IDT_EXTOPT_LIST15 },
// { TO_RLBACKHALF, IDT_EXTOPT_LIST16 },
{ TO_RLLOGFLUSH, IDT_EXTOPT_LIST17 },
{ TO_RLCARETANI, IDT_EXTOPT_LIST18 },
{ TO_RLTABINFO, IDT_EXTOPT_LIST19 },
{ TO_RLREOPEN, IDT_EXTOPT_LIST20 },
// { TO_RLTABINFO, IDT_EXTOPT_LIST19 },
// { TO_RLREOPEN, IDT_EXTOPT_LIST20 },
// { TO_RLDELCRLF, IDT_EXTOPT_LIST21 },
{ TO_RLPSUPWIN, IDT_EXTOPT_LIST22 },
{ 0, 0 },
Expand Down
2 changes: 1 addition & 1 deletion RLogin/ExtSocket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ int CExtSocket::Send(const void* lpBuf, int nBufLen, int nFlags)

return len;
}
void CExtSocket::SendWindSize(int x, int y)
void CExtSocket::SendWindSize()
{
}
void CExtSocket::SendBreak(int opt)
Expand Down
2 changes: 1 addition & 1 deletion RLogin/ExtSocket.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ class CExtSocket : public CObject

virtual int Receive(void *lpBuf, int nBufLen, int nFlags = 0);
virtual int Send(const void *lpBuf, int nBufLen, int nFlags = 0);
virtual void SendWindSize(int x, int y);
virtual void SendWindSize();
virtual void SendBreak(int opt = 0);
void SendFlash(int sec);

Expand Down
66 changes: 56 additions & 10 deletions RLogin/InfoCapDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ static const LV_COLUMN InitListTab[6] = {

static LPCTSTR TypeStr[] = { _T(" "), _T("#"), _T("="), _T("@") };

/************************** Update 2018/01/31
static LPCTSTR TermCap = _T("rlogin-color:")\
_T("am:ut:xn:km:mi:ms:co#80:it#8:li#24:Co#256:pa#64:bt=\\E[Z:bl=^G:cr=^M:cs=\\E[%i%d;%dr:ct=\\E[3g:")\
_T("cl=\\E[H\\E[2J:cb=\\E[1K:ce=\\E[K:cd=\\E[J:ch=\\E[%i%dG:cm=\\E[%i%d;%dH:do=^J:ho=\\E[H:vi=\\E[?25l:")\
Expand All @@ -575,6 +576,26 @@ static LPCTSTR TermCap = _T("rlogin-color:")\
_T("UP=\\E[%dA:r1=\\Ec:rc=\\E8:cv=\\E[%i%dd:sc=\\E7:sf=^J:sr=\\EM:AB=\\E[48;5;%dm:AF=\\E[38;5;%dm:st=\\EH:ta=^I:")\
_T("bs:kn#12:pt:ml=\\El:mu=\\Em:");
// Diff xterm-256color
static LPCTSTR TermCap = _T("rlogin-color:")\
_T("IC=\\E[%d@:RA=\\E[?7l:SA=\\E[?7h:SF=\\E[%dS:SR=\\E[%dT:ZH=\\E[3m:ZR=\\E[23m:bt=\\E[Z:cb=\\E[1K:")\
_T("ch=\\E[%i%dG:cr=^M:cv=\\E[%i%dd:do=^J:ec=\\E[%dX:it#8:mb=\\E[5m:mh=\\E[2m:mk=\\E[8m:pt:r1=\\Ec:ta=^I:")\
_T("ve=\\E[?25h:vi=\\E[?25l:vs=\\E[?25h:tc=xterm-256color:");
***************************/
static LPCTSTR TermCap = _T("rlogin-color:")\
_T("*6=\\EOF:@7=\\EOF:AB=\\E[48;5;%dm:AF=\\E[38;5;%dm:AL=\\E[%dL:AX:Co#256:DC=\\E[%dP:DL=\\E[%dM:")\
_T("DO=\\E[%dB:F1=\\E[23~:F2=\\E[24~:IC=\\E[%d@:Km=\\E[M:LE=\\E[%dD:RA=\\E[?7l:RI=\\E[%dC:SA=\\E[?7h:")\
_T("SF=\\E[%dS:SR=\\E[%dT:UP=\\E[%dA:XT:ZH=\\E[3m:ZR=\\E[23m:ae=\\E(B:al=\\E[L:am:as=\\E(0:bl=^G:")\
_T("bs:bt=\\E[Z:cb=\\E[1K:cd=\\E[J:ce=\\E[K:ch=\\E[%i%dG:cl=\\E[H\\E[2J:cm=\\E[%i%d;%dH:co#80:cr=^M:")\
_T("cs=\\E[%i%d;%dr:ct=\\E[3g:cv=\\E[%i%dd:dc=\\E[P:dl=\\E[M:do=^J:ec=\\E[%dX:ei=\\E[4l:ho=\\E[H:")\
_T("im=\\E[4h:is=\\E[!p\\E[?3;4l\\E[4l\\E>\\E]104^G:it#8:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:")\
_T("k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:kD=\\E[3~:kH=\\EOF:kI=\\E[2~:")\
_T("kN=\\E[6~:kP=\\E[5~:kb=^H:kd=\\EOB:ke=\\E[?1l\\E>:kh=\\EOH:kl=\\EOD:km:kn#12:kr=\\EOC:ks=\\E[?1h\\E=:")\
_T("ku=\\EOA:le=^H:li#24:mb=\\E[5m:md=\\E[1m:me=\\E[m:mh=\\E[2m:mi:mk=\\E[8m:ml=\\El:mr=\\E[7m:ms:")\
_T("mu=\\Em:nd=\\E[C:op=\\E[39;49m:pa#65536:pt:r1=\\Ec:rc=\\E8:rs=\\E[!p\\E[?3;4l\\E[4l\\E>\\E]104^G:")\
_T("sc=\\E7:se=\\E[27m:sf=^J:so=\\E[7m:sr=\\EM:st=\\EH:ta=^I:te=\\E[?1049l:ti=\\E[?1049h:ue=\\E[24m:")\
_T("up=\\E[A:us=\\E[4m:ut:ve=\\E[?25h:vi=\\E[?25l:vs=\\E[?25h:xn:");

void CInfoCapDlg::SetNode(CStringIndex &cap, LPCTSTR p)
{
int n;
Expand Down Expand Up @@ -1424,6 +1445,20 @@ void CInfoCapDlg::OnCbnSelchangeEntry()

SetCapName(cap, tmp);
SetList(cap, *m_pIndex);

#ifdef USE_DEBUGCAP
m_SaveEntry.Add(tmp);
m_SaveCapInfo.SetNoCase(FALSE);
for ( n = 0 ; n < cap.GetSize() ; n++ ) {
while ( m_SaveCapInfo[cap[n].m_nIndex].GetSize() < m_SaveEntry.GetSize() )
m_SaveCapInfo[cap[n].m_nIndex].Add(_T(""));
m_SaveCapInfo[cap[n].m_nIndex].Add(cap[n].m_String);
}
for ( n = 0 ; n < m_SaveCapInfo.GetSize() ; n++ ) {
if ( cap.Find(m_SaveCapInfo[n].m_nIndex) < 0 )
m_SaveCapInfo[n].Add(_T(""));
}
#endif
}

void CInfoCapDlg::OnCapInport()
Expand Down Expand Up @@ -1464,20 +1499,35 @@ void CInfoCapDlg::OnCapExport()
if ( (fp = _tfopen(dlg.GetPathName(), _T("wb"))) == NULL )
return;

#ifdef _UNICODE
fputs(CStringA(m_TermCap), fp);
#else
fputs(m_TermCap, fp);
#endif
fputs(TstrToMbs(m_TermCap), fp);

fclose(fp);
}

void CInfoCapDlg::OnCapClipbord()
{
#ifndef USE_DEBUGCAP
SetCapStr(TRUE);

((CMainFrame *)::AfxGetMainWnd())->SetClipboardText(m_TermCap);
#else
int n, i;
m_TermCap.Empty();
for ( n = 0 ; n < m_SaveCapInfo.GetSize() ; n++ ) {
m_TermCap += m_SaveCapInfo[n].m_nIndex;
m_TermCap += _T('\t');
for ( i = 0 ; i < m_SaveCapInfo[n].GetSize() ; i++ ) {
m_TermCap += _T("\"");
if ( m_SaveCapInfo[n][i].m_String[0] == _T(' ') )
m_TermCap += _T('*');
else if ( m_SaveCapInfo[n][i].m_String[0] != _T('@') )
m_TermCap += m_SaveCapInfo[n][i].m_String;
m_TermCap += _T("\"\t");
}
m_TermCap += _T("\r\n");
}
((CMainFrame *)::AfxGetMainWnd())->SetClipboardText(m_TermCap);
#endif
}

void CInfoCapDlg::OnInfoInport()
Expand Down Expand Up @@ -1518,11 +1568,7 @@ void CInfoCapDlg::OnInfoExport()
if ( (fp = _tfopen(dlg.GetPathName(), _T("wb"))) == NULL )
return;

#ifdef _UNICODE
fputs(CStringA(m_TermInfo), fp);
#else
fputs(m_TermInfo, fp);
#endif
fputs(TstrToMbs(m_TermInfo), fp);

fclose(fp);
}
Expand Down
5 changes: 5 additions & 0 deletions RLogin/InfoCapDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ class CInfoCapDlg : public CDialogExt
CStringBinary m_CapName;
CStringArray m_CapNode;
CString m_WorkStr;

#ifdef USE_DEBUGCAP
CStringIndex m_SaveEntry;
CStringIndex m_SaveCapInfo;
#endif

void SetNode(CStringIndex &cap, LPCTSTR p);
void SetEntry(CStringIndex &cap, LPCTSTR entry);
Expand Down
13 changes: 6 additions & 7 deletions RLogin/Login.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,17 @@ void CLogin::SendStr(LPCSTR str)
CExtSocket::Send(str, (int)strlen(str) + 1); // With '\0'
}

void CLogin::SendWindSize(int x, int y)
void CLogin::SendWindSize()
{
struct winsize {
unsigned short ws_row, ws_col;
unsigned short ws_xpixel, ws_ypixel;
} *wp;
char obuf[4 + sizeof (struct winsize)];
int sx = 0;
int sy = 0;
int cx = 0, cy = 0, sx = 0, sy = 0;

if ( m_pDocument != NULL )
m_pDocument->m_TextRam.GetScreenSize(&sx, &sy);
m_pDocument->m_TextRam.GetScreenSize(&cx, &cy, &sx, &sy);

if ( m_ConnectFlag < 2 )
return;
Expand All @@ -87,8 +86,8 @@ void CLogin::SendWindSize(int x, int y)
obuf[1] = '\377';
obuf[2] = 's';
obuf[3] = 's';
wp->ws_row = htons(y);
wp->ws_col = htons(x);
wp->ws_row = htons(cy);
wp->ws_col = htons(cx);
wp->ws_xpixel = htons(sx);
wp->ws_ypixel = htons(sy);

Expand Down Expand Up @@ -116,7 +115,7 @@ void CLogin::OnReceiveCallBack(void *lpBuf, int nBufLen, int nFlags)

for ( int n = 0 ; n < nBufLen ; n++ ) {
if ( pDoc != NULL && (buf[n] & 0x80) != 0 )
SendWindSize(pDoc->m_TextRam.m_Cols, pDoc->m_TextRam.m_Lines);
SendWindSize();
TRACE("Resv OOB %02x\n", buf[n]);
}
m_ConnectFlag = 3;
Expand Down
2 changes: 1 addition & 1 deletion RLogin/Login.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class CLogin : public CExtSocket
BOOL Open(LPCTSTR lpszHostAddress, UINT nHostPort, UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, void *pAddrInfo = NULL);
void OnConnect();
void OnReceiveCallBack(void *lpBuf, int nBufLen, int nFlags);
void SendWindSize(int x, int y);
void SendWindSize();

CLogin(class CRLoginDoc *pDoc);
virtual ~CLogin();
Expand Down
Loading

0 comments on commit 07fb48f

Please sign in to comment.