1 enum Transport 2 { 3 UNIX, 4 TCP, 5 ETHERNET 6 }; 7 8 struct Command_line { 9 int is_server; 10 char *unix_path; /* path or 0 if not to be used */ 11 int tcp_port; 12 char *eth_device; 13 int eth_port; 14 struct { 15 int serve_tcp; /* yes/no */ 16 int serve_unix; /* yes/no */ 17 int serve_eth; /* yes/no */ 18 int max_served; /* how many */ 19 char run_in_subterminal; /* use opentty */ 20 char echo_in_local_terminal; 21 char use_blocking_sockets; 22 char send_xterm_resize; 23 char client_may_close_app_stdin; 24 char client_can_write; 25 char nohup; /* detach from terminal as nohup */ 26 char **command; /* ordono por exec */ 27 } s_param; 28 struct { 29 enum Transport transport; 30 unsigned int wait_until_char; /* -1, don't wait. */ 31 char raw_mode; /* bool. else cooked */ 32 char * server_address; 33 } c_param; 34 int buffer_size; 35 }; 36 37 38 /* error.c */ 39 void not_implemented(const char *msg, ...); 40 void error(const char *msg, ...); 41 void warning(const char *msg, ...); 42 void debugmsg(const char *msg, ...); 43 void finish(int ret); 44 45 /* signals.c */ 46 void install_signal_forwarders(); 47 void program_timeout(int secs); 48 void unprogram_timeout(); 49 int did_timeout_happen(); 50 void ignore_sighup(); 51 52 /* main.c */ 53 extern int app_stdin; 54 extern int app_stdout; 55 extern int app_stderr; 56 extern struct Command_line command_line; 57 int max(int a, int b); 58 int min(int a, int b); 59 60 /* gen_sockets.c */ 61 extern char *stream_buffer; 62 extern int stream_buffer_size; 63 extern char *ostream_buffer; 64 extern int ostream_buffer_size; 65 extern char *ostream_buffer2; 66 extern int ostream_buffer2_size; 67 void init_stream_buffers(); 68 void welcome_new_client_socket(int s); 69 70 /* server.c */ 71 int server(); 72 73 /* client.c */ 74 int client(); 75 76 /* app_term.c */ 77 int fork_app(char * const command[]); 78 void pass_winsize_to_slave(); 79 80 /* server_term.c */ 81 void prepare_user_terminal(); 82 void restore_user_terminal(); 83 84 /* xterm.c */ 85 char * get_xterm_resize_string(); 86 87 /* dump.c */ 88 extern int should_dump; 89 void hex_dump(const char *head, const unsigned char *data, int len); 90 void dump_line(const char *msg, ...); 91 92 /* eth_proto.c */ 93 enum Eth_type 94 { 95 ETH_SERVER, 96 ETH_CLIENT 97 }; 98 void eth_proto_init(); 99 int eth_proto_open(enum Eth_type type); 100 int eth_proto_recv(char *data, int size); 101 int eth_proto_send(const char *data, int size); 102 int eth_proto_allow_sending(); 103 int eth_proto_max_send(); 104 int eth_proto_process_timeouts(); 105 #include <string.h> 106