projects
/
spider.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
068bd15
)
added code to cope with 'telnet' connections
author
djk
<djk>
Sun, 26 Mar 2000 17:29:36 +0000
(17:29 +0000)
committer
djk
<djk>
Sun, 26 Mar 2000 17:29:36 +0000
(17:29 +0000)
src/client.c
patch
|
blob
|
history
diff --git
a/src/client.c
b/src/client.c
index 3dadfc59785c3dcab353538d14e7aa4e04c85384..9bc3d1fc567ee848088b8ed3c46754d8fa086843 100644
(file)
--- a/
src/client.c
+++ b/
src/client.c
@@
-51,8
+51,9
@@
typedef struct
reft *inq; /* input queue */
reft *outq; /* output queue */
sel_t *sp; /* my select fcb address */
reft *inq; /* input queue */
reft *outq; /* output queue */
sel_t *sp; /* my select fcb address */
- int echo; /* echo characters back to this cnum */
struct termios t; /* any termios associated with this cnum */
struct termios t; /* any termios associated with this cnum */
+ char echo; /* echo characters back to this cnum */
+ char t_set; /* the termios structure is valid */
} fcb_t;
char *node_addr = "localhost"; /* the node tcp address */
} fcb_t;
char *node_addr = "localhost"; /* the node tcp address */
@@
-345,8
+346,11
@@
void initargs(int argc, char *argv[])
{
int i, c, err = 0;
{
int i, c, err = 0;
- while ((c = getopt(argc, argv, "x:")) > 0) {
+ while ((c = getopt(argc, argv, "
h:
x:")) > 0) {
switch (c) {
switch (c) {
+ case 'h':
+ node_addr = optarg;
+ break;
case 'x':
dbginit("client");
dbgset(atoi(optarg));
case 'x':
dbginit("client");
dbgset(atoi(optarg));
@@
-423,7
+427,7
@@
void connect_to_node()
void term_timeout(int i)
{
/* none of this is going to be reused so don't bother cleaning up properly */
void term_timeout(int i)
{
/* none of this is going to be reused so don't bother cleaning up properly */
- if (in)
+ if (in
&& in->t_set
)
tcsetattr(0, TCSANOW, &in->t);
if (node) {
close(node->cnum);
tcsetattr(0, TCSANOW, &in->t);
if (node) {
close(node->cnum);
@@
-444,7
+448,7
@@
void terminate(int i)
(node && !is_chain_empty(node->outq))) {
sel_run();
}
(node && !is_chain_empty(node->outq))) {
sel_run();
}
- if (in)
+ if (in
&& in->t_set
)
tcsetattr(0, TCSANOW, &in->t);
if (node)
close(node->cnum);
tcsetattr(0, TCSANOW, &in->t);
if (node)
close(node->cnum);
@@
-520,14
+524,16
@@
main(int argc, char *argv[])
/* connect up stdin, stdout and message system */
in = fcb_new(0, TEXT);
in->sp = sel_open(0, in, "STDIN", fcb_handler, TEXT, SEL_INPUT);
/* connect up stdin, stdout and message system */
in = fcb_new(0, TEXT);
in->sp = sel_open(0, in, "STDIN", fcb_handler, TEXT, SEL_INPUT);
- if (tcgetattr(0, &in->t) < 0)
- die("tcgetattr (%d)", errno);
- {
+ if (tcgetattr(0, &in->t) < 0) {
+ echo = 0;
+ in->t_set = 0;
+ } else {
struct termios t = in->t;
t.c_lflag &= ~(ECHO|ECHONL|ICANON);
if (tcsetattr(0, TCSANOW, &t) < 0)
die("tcsetattr (%d)", errno);
in->echo = echo;
struct termios t = in->t;
t.c_lflag &= ~(ECHO|ECHONL|ICANON);
if (tcsetattr(0, TCSANOW, &t) < 0)
die("tcsetattr (%d)", errno);
in->echo = echo;
+ in->t_set = 1;
}
connect_to_node();
}
connect_to_node();