update
[svn42.git] / serial_console / usocket.c
index 7008090..4a6df80 100644 (file)
@@ -65,6 +65,8 @@ void  connect_terminal(int fd)
         send(fd,buffer,num_byte,0);
       }
       if (num_byte <0 && errno != EAGAIN)
+        return;      
+      if (quit_on_eof_ && num_byte == 0)
         return;
     }
     
@@ -104,35 +106,34 @@ int main(int argc, char* argv[])
 {
   int ret = 0;
   int socket_fd = 0;
+  char *socket_file;
   //~ struct termios tmio_prev;
   
   if (argc > 0)
-    socket_file_ = argv[1];
+    socket_file = argv[1];
+  else
+    socket_file = default_socket_file_;
   
-  for(;;) 
+  if (argc > 1)
+    quit_on_eof_=0;
+  
+  socket_fd = establish_socket_connection(socket_file);
+  if(socket_fd)
   {
-    socket_fd = establish_socket_connection(socket_file_);
-    if(socket_fd < 0)
-      ret = 2;
-    else {
-      //~ ret = set_tty_raw(STDIN_FILENO,&tmio_prev);
-      //~ if (ret)
-        //~ break;
-      fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
-      connect_terminal(socket_fd);
-        
-      //~ ret = restore_tty(STDIN_FILENO,&tmio_prev);
-      //~ if (ret)
-        //~ break;        
-    }
-    if (ret == 2) {
-      fprintf(stderr, "%s error, trying to reopen in 5 seconds..\n", socket_file_);
-      if(socket_fd > 0)
-        shutdown(socket_fd,SHUT_RDWR);
-      sleep(5);
-    }
-    else
-      break;
+    //~ ret = set_tty_raw(STDIN_FILENO,&tmio_prev);
+    //~ if (ret)
+      //~ break;
+    fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
+    connect_terminal(socket_fd);
+      
+    //~ ret = restore_tty(STDIN_FILENO,&tmio_prev);
+    //~ if (ret)
+      //~ break;        
+  }
+  else
+  {
+    fprintf(stderr, "%s error, aborting..\n", socket_file);
+    ret=2;
   }
 
   if(socket_fd > 0)