nRead = read(d->descriptor, bufin, MAX_INPUT_LENGTH);
if (nRead > 0)
{
nCurr = d->intop;
d->intop += translate_telopts(d, bufin, nRead, d->inbuf + d->intop);
if (IS_SET(d->comm_flags, COMM_FLAG_REMOTEECHO))
{
for (nSkip = nCurr ; nSkip < d->intop ; nSkip++)
{
switch (d->inbuf[nSkip])
{
case 8:
case 127:
d->inbuf[nSkip] = '\b';
write(d->descriptor, "\b \b", 3);
break;
case '\n':
write(d->descriptor, "\r\n", 2);
break;
default:
if (HAS_BIT(d->comm_flags, COMM_FLAG_PASSWORD))
{
write(d->descriptor, "*", 1);
}
else
{
write(d->descriptor, d->inbuf + nSkip, 1);
}
break;
}
}
}