projects
/
svn42.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
grml, ist es aktuell gesetzt, sucht select danach und setzt es wieder usw...
[svn42.git]
/
serial_console
/
usocket.c
diff --git
a/serial_console/usocket.c
b/serial_console/usocket.c
index
d00a8b5
..
01d5090
100644
(file)
--- a/
serial_console/usocket.c
+++ b/
serial_console/usocket.c
@@
-42,6
+42,7
@@
void connect_terminal(int fd)
fd_set fds_r;
char buffer[1024];
int num_byte=0;
fd_set fds_r;
char buffer[1024];
int num_byte=0;
+ char stdin_valid_fd=1;
FD_ZERO(&fds_r);
FD_SET(STDIN_FILENO,&fds_r);
FD_ZERO(&fds_r);
FD_SET(STDIN_FILENO,&fds_r);
@@
-58,18
+59,29
@@
void connect_terminal(int fd)
if (num_byte == 0 || (num_byte <0 && errno != EAGAIN))
return;
}
if (num_byte == 0 || (num_byte <0 && errno != EAGAIN))
return;
}
- if (FD_ISSET(STDIN_FILENO,&fds_r))
+ if (stdin_valid_fd && FD_ISSET(STDIN_FILENO,&fds_r))
{
while((num_byte = read(STDIN_FILENO,buffer, 1024)) > 0)
{
send(fd,buffer,num_byte,0);
}
{
while((num_byte = read(STDIN_FILENO,buffer, 1024)) > 0)
{
send(fd,buffer,num_byte,0);
}
- if (num_byte == 0 || (num_byte <0 && errno != EAGAIN))
+ if (num_byte <0 && errno != EAGAIN)
return;
return;
+ if (num_byte == 0)
+ {
+ if (quit_on_eof_)
+ return;
+ else
+ {
+ stdin_valid_fd=0;
+ FD_CLR(STDIN_FILENO,&fds_r);
+ }
+ }
}
}
- FD_SET(STDIN_FILENO,&fds_r);
FD_SET(fd,&fds_r);
FD_SET(fd,&fds_r);
+ if (stdin_valid_fd)
+ FD_SET(STDIN_FILENO,&fds_r);
}
}
}
}
@@
-104,12
+116,19
@@
int main(int argc, char* argv[])
{
int ret = 0;
int socket_fd = 0;
{
int ret = 0;
int socket_fd = 0;
+ char *socket_file;
//~ struct termios tmio_prev;
//~ struct termios tmio_prev;
+ if (argc > 1)
+ socket_file = argv[1];
+ else
+ socket_file = default_socket_file_;
- if (argc > 0)
- socket_file_ = argv[1];
+ //give a second argument, to not quit on EOF on stdin.
+ //useful if you just want to pipe some commands to usocket with echo and then listen to stdout
+ if (argc > 2)
+ quit_on_eof_=0;
- socket_fd = establish_socket_connection(socket_file_);
+ socket_fd = establish_socket_connection(socket_file);
if(socket_fd)
{
//~ ret = set_tty_raw(STDIN_FILENO,&tmio_prev);
if(socket_fd)
{
//~ ret = set_tty_raw(STDIN_FILENO,&tmio_prev);
@@
-124,7
+143,7
@@
int main(int argc, char* argv[])
}
else
{
}
else
{
- fprintf(stderr, "%s error, aborting..\n", socket_file_);
+ fprintf(stderr, "%s error, aborting..\n", socket_file);
ret=2;
}
ret=2;
}