main.c
author viric@llimona
Mon, 24 Sep 2007 13:59:40 +0200
changeset 38 f1e581c862d5
parent 37 b0588bddef91
child 40 da3ea7f666e3
permissions -rw-r--r--
Improved help. Moving to 0.2.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     1
/*
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     2
    stdin mix - a mixer/multiplexer for stdin to processes
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     3
    Copyright (C) 2007  LluĂ­s Batlle i Rossell
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     4
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     5
    Please find the license in the provided COPYING file.
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
     6
*/
0
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
     7
#include <stdio.h>
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
     8
#include <stdlib.h>
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
     9
#include <sys/types.h>
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
    10
#include <unistd.h>
5
5ed1654fe407 Better client.
viric@llimona
parents: 3
diff changeset
    11
#include <errno.h>
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    12
#include <string.h>
23
b3e6c6ffc69c Moving the client out.
viric@llimona
parents: 21
diff changeset
    13
#include <sys/select.h>
0
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
    14
3
909bca647298 Renaming now correct.
viric@llimona
parents: 2
diff changeset
    15
#include "main.h"
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    16
#include "handlers.h"
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    17
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    18
extern char *optarg;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    19
extern int optind, opterr, optopt;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    20
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    21
/* From main.h given external */
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    22
int app_stdin;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    23
int app_stdout;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    24
int app_stderr;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    25
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    26
struct Command_line command_line;
0
3bbacfe6797a Something bare.
viric@llimona
parents:
diff changeset
    27
38
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    28
static const char version[] = "0.2";
12
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
    29
6
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    30
static int showhelp(const char *pname)
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    31
{
31
c8d6b46dae2e Changing 'st' Swiss Terminal, to 'tm', terminal mixer
lbatlle@npdl268.bpo.hp.com
parents: 29
diff changeset
    32
    printf("tm v%s - terminal mixer,  Copyright (C) 2007  "
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    33
            "Lluis Batlle i Rossell\n",
12
6a372f8b4b8a Ignore, license and version.
viric@llimona
parents: 9
diff changeset
    34
            version);
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    35
    printf("usage: %s [opts] [appcommand] [param1] [param2] ...\n", pname);
6
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    36
    printf(" If you give _appcommand_, it starts the application and\n");
38
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    37
    printf(" serves it through a Unix socket on $SM_SOCKET or "
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    38
            "/tmp/socket-sm.UID,\n");
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    39
    printf(" unless '-p' is used.\n");
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    40
    printf(" Without _appcomand_, starts a the Unix socket client.\n");
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    41
    printf("options: \n");
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    42
    printf(" -h     Show help.\n");
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    43
    printf(" -P     Run the child as connected to a pipe (default).\n");
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    44
    printf(" -t     Run the child as connected to a terminal (raw mode in "
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    45
        "client).\n");
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    46
    printf(" -n MAX Serve at most MAX sockets for each transport (1 default)."
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    47
            "\n");
32
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
    48
    printf(" -w     The remote clients can write to the application.\n");
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
    49
    printf(" -x     The remote clients end will close app's stdin.\n");
38
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    50
    printf(" -p NUM Listen to tcp port NUM for 'telnet', and not listen to "
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    51
            "any\n"
f1e581c862d5 Improved help. Moving to 0.2.
viric@llimona
parents: 37
diff changeset
    52
           "        Unix socket.\n");
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    53
    printf(" -e     Echo remote input to the server terminal.\n");
37
b0588bddef91 Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents: 36
diff changeset
    54
    printf(" -r     Send xterm's resize control string to clients.\n");
6
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    55
    return 0;
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    56
}
4fe857c0b12a Help message.
viric@llimona
parents: 5
diff changeset
    57
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    58
static int my_getopt(int argc, char * argv[], const char *optstring)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    59
{
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    60
    char *old_getopt_env;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    61
    static char getopt_env[100] = "POSIXLY_CORRECT=YES";
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    62
    int res;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    63
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    64
    old_getopt_env = getenv("POSIXLY_CORRECT");
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    65
    putenv(getopt_env);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    66
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    67
    res = getopt(argc, argv, optstring);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    68
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    69
    if (old_getopt_env == 0)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    70
    {
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    71
        putenv("POSIXLY_CORRECT");
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    72
    }
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    73
    else
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    74
        snprintf(getopt_env, sizeof getopt_env, "POSIXLY_CORRECT=%s",
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    75
                old_getopt_env);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    76
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    77
    return res;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    78
}
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    79
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    80
static void default_command_line()
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
    81
{
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    82
    command_line.is_server = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    83
    command_line.s_param.use_blocking_sockets = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    84
    command_line.s_param.run_in_subterminal = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    85
    command_line.s_param.max_served = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    86
    command_line.s_param.serve_unix = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    87
    command_line.s_param.serve_tcp = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    88
    command_line.s_param.send_xterm_resize = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    89
    command_line.s_param.client_may_close_app_stdin = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    90
    command_line.s_param.detach = 0;
32
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
    91
    command_line.s_param.client_can_write = 0;
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
    92
    command_line.s_param.echo_in_local_terminal = 0;
37
b0588bddef91 Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents: 36
diff changeset
    93
    command_line.s_param.send_xterm_resize = 0;
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    94
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    95
    command_line.tcp_port = 40000; /* Arbitrary */
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    96
    command_line.buffer_size = 4096; /* Arbitrary */
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    97
    get_unix_path(); /* for command_line.unix_path */
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    98
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
    99
    command_line.c_param.transport = UNIX;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   100
    command_line.c_param.wait_until_char = -1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   101
    command_line.c_param.raw_mode = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   102
    command_line.c_param.server_address = 0; /* TODO: free it */
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   103
}
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   104
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   105
static int parse_opts(int argc, char * argv[])
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   106
{
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   107
    int c;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   108
    extern char *optarg;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   109
    extern int optind, opterr, optopt;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   110
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   111
    while(1) {
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
   112
        c = my_getopt(argc, argv, "tp:NrdPn:c:hwxe");
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   113
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   114
        if (c == -1)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   115
            break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   116
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   117
        switch(c)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   118
        {
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   119
            case 't':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   120
                command_line.s_param.run_in_subterminal = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   121
                command_line.c_param.raw_mode = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   122
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   123
            case 'P':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   124
                command_line.s_param.run_in_subterminal = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   125
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   126
            case 'N':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   127
                command_line.s_param.use_blocking_sockets = 0;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   128
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   129
            case 'd':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   130
                command_line.s_param.detach = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   131
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   132
            case 'p':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   133
                command_line.tcp_port = atoi(optarg);
33
010af11f521e Raw implementation for tcp.
lbatlle@npdl268.bpo.hp.com
parents: 32
diff changeset
   134
                command_line.s_param.serve_tcp = 1;
010af11f521e Raw implementation for tcp.
lbatlle@npdl268.bpo.hp.com
parents: 32
diff changeset
   135
                command_line.s_param.serve_unix = 0;
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   136
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   137
            case 'n':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   138
                command_line.s_param.max_served = atoi(optarg);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   139
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   140
            case 'c':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   141
                command_line.c_param.server_address = strdup(optarg);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   142
                break;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   143
            case 'h':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   144
                showhelp(argv[0]);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   145
                exit(0);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   146
                break;
32
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   147
            case 'w':
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   148
                command_line.s_param.client_can_write = 1;
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   149
                break;
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   150
            case 'x':
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   151
                command_line.s_param.client_may_close_app_stdin = 1;
df110f784648 Added read-only clients, added stdin-close option to clients.
lbatlle@npdl268.bpo.hp.com
parents: 31
diff changeset
   152
                break;
37
b0588bddef91 Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents: 36
diff changeset
   153
            case 'r':
b0588bddef91 Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents: 36
diff changeset
   154
                command_line.s_param.send_xterm_resize = 1;
b0588bddef91 Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents: 36
diff changeset
   155
                break;
36
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
   156
            case 'e':
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
   157
                command_line.s_param.echo_in_local_terminal = 1;
da427c23d755 Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents: 34
diff changeset
   158
                break;
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   159
            case '?':
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   160
                error("Wrong option %c.\n", optopt);
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   161
        }
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   162
    }
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   163
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   164
    if (command_line.s_param.use_blocking_sockets == 0)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   165
        not_implemented("Not using blocking sockets.");
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   166
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   167
    if (optind < argc)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   168
    {
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   169
        command_line.is_server = 1;
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   170
        command_line.s_param.command = &argv[optind];
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   171
    }
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   172
    return 0;
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   173
}
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   174
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   175
int main(int argc, char * argv[])
1
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   176
{
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   177
    int res;
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   178
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   179
    default_command_line();
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   180
    parse_opts(argc, argv);
34
7486e269b794 Added filter engine, xterm resize.
viric@mandarina
parents: 33
diff changeset
   181
    init_stream_buffers();
21
a82c88322eb5 Big change, from stdinmix to multiterminal.
viric@llimona
parents: 15
diff changeset
   182
29
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   183
    if (command_line.is_server)
91286c3ecebc Added getopt, and some things got based on parameters.
viric@llimona
parents: 23
diff changeset
   184
        res = server();
1
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   185
    else
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   186
        res = client();
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   187
    return res;
473a340551e3 Basic functionality.
viric@llimona
parents: 0
diff changeset
   188
}