Unix Programming - Terminal Controll...

This is Interesting: Free IT Magazines  
Home > Archive > Unix Programming > January 2004 > Terminal Controll...





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Terminal Controll...
Brendan zerofor0je

2004-01-23, 5:17 pm

Hello,

I've written a small reverse-telnet client that connects to a server that
handles all the clients.

the reverse telnet node ( whitch i will refer to as rtn from now on) works
by opening up a pty, and with a simple select() it passes data between the
sockets and the pty that /bin/sh runs on.

Meanwihle, the server program( that i will refer to as trc from now on)
sits and listens for nodes running rtn, once a node connects trc takes
controll over it; my problem?

once a rtn node connects to trc2, it works fine, but im having problems on
the input line ( i've tryed 'nc' in listen mode and it works fine, even
the mangled prompt )

Anyway, my problem is the terminal doesnt work properly for example tpying
on the trc prompt i get this undesired result;

hardk0re$ ls -lah /u lo bi mo ls -lah /usr/local/bin/mozilla
-rwxr-xr-x 1 root root 2.9k Jun 19 17:51
/usr/local/bin/mozilla hardk0re$

As you can see, when i type text it does not 'expand' but after i press
'enter' the desired output that i want on the terminal line is printed
out.

Zhivago from #C freenode aksed me to compile this small program;
---
#include <stdio.h>
#include <stdlib.h>

int main(){
int c;
c = getchar();
printf("%c\n",c);
}
---
As you would expect on a normal terminal ( not my cruddy trc :-P ) it
prints out;
hardk0re$ ./a.out
m <- the letter you typed
m <- the letter printf'd back
hardk0re$

But on trc it behaves oddly,

hardk0re$ ./a.out
../a.out
m
m
m
hardk0re$

If anyone knows how to rememdy this i would be very pleased to hear it,
thank you in advance.
Fletcher Glenn

2004-01-23, 5:17 pm

It sounds like you're using cbreak mode instead of raw mode.
Cbreak mode forces input to be delimited with newlines. Raw
mode allows you to handle things one character at a time, but
it also requires you to handle such things as backspaces and
other forms of input line editing.

--

Fletcher Glenn

Brendan zerofor0je wrote:
quote:

> Hello,
>
> I've written a small reverse-telnet client that connects to a server that
> handles all the clients.
>
> the reverse telnet node ( whitch i will refer to as rtn from now on) works
> by opening up a pty, and with a simple select() it passes data between the
> sockets and the pty that /bin/sh runs on.
>
> Meanwihle, the server program( that i will refer to as trc from now on)
> sits and listens for nodes running rtn, once a node connects trc takes
> controll over it; my problem?
>
> once a rtn node connects to trc2, it works fine, but im having problems on
> the input line ( i've tryed 'nc' in listen mode and it works fine, even
> the mangled prompt )
>
> Anyway, my problem is the terminal doesnt work properly for example tpying
> on the trc prompt i get this undesired result;
>
> hardk0re$ ls -lah /u lo bi mo ls -lah /usr/local/bin/mozilla
> -rwxr-xr-x 1 root root 2.9k Jun 19 17:51
> /usr/local/bin/mozilla hardk0re$
>
> As you can see, when i type text it does not 'expand' but after i press
> 'enter' the desired output that i want on the terminal line is printed
> out.
>
> Zhivago from #C freenode aksed me to compile this small program;
> ---
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(){
> int c;
> c = getchar();
> printf("%c\n",c);
> }
> ---
> As you would expect on a normal terminal ( not my cruddy trc :-P ) it
> prints out;
> hardk0re$ ./a.out
> m <- the letter you typed
> m <- the letter printf'd back
> hardk0re$
>
> But on trc it behaves oddly,
>
> hardk0re$ ./a.out
> ./a.out
> m
> m
> m
> hardk0re$
>
> If anyone knows how to rememdy this i would be very pleased to hear it,
> thank you in advance.



Brendan zerofor0je

2004-01-23, 5:17 pm

On Sat, 08 Nov 2003 00:50:46 +0000, Fletcher Glenn wrote:
[QUOTE][color=darkred]
> It sounds like you're using cbreak mode instead of raw mode.
> Cbreak mode forces input to be delimited with newlines. Raw
> mode allows you to handle things one character at a time, but
> it also requires you to handle such things as backspaces and
> other forms of input line editing.
>
> --
>
> Fletcher Glenn
>
> Brendan zerofor0je wrote:

Thanks, It worked!
Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com