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