void ecasv_parse_command_line(ECA_CONTROL_INTERFACE *eci, int argc, char *argv[])
{
    COMMAND_LINE cline = COMMAND_LINE (argc, argv);
    if (cline.size() == 0 ||
            cline.has("--version") ||
            cline.has("--help") ||
            cline.has("-h")) {
        ecasv_print_usage();
        exit(1);
    }

    ecasv_enable_debug = false;
    ecasv_enable_cumulative_mode = false;
    ecasv_rate_msec = 0;
    ecasv_buffersize = 0;

    cline.begin();
    cline.next(); // 1st argument
    while (cline.end() != true) {
        string arg = cline.current();
        if (arg.size() > 0) {
            if (arg[0] != '-') {
                if (ecasv_input == "")
                    ecasv_input = arg;
                else if (ecasv_output == "")
                    ecasv_output = arg;
            }
            else {
                string prefix = kvu_get_argument_prefix(arg);
                if (prefix == "b")
                    ecasv_buffersize = atol(kvu_get_argument_number(1, arg).c_str());
                if (prefix == "c") ecasv_enable_cumulative_mode = true;
                if (prefix == "d") ecasv_enable_debug = true;
                if (prefix == "f")
                    ecasv_format_string = string(arg.begin() + 3, arg.end());
                if (prefix == "I") ecasv_log_display_mode = false; // jkc: addition
                if (prefix == "L") ecasv_log_display_mode = true; // jkc: addition
                if (prefix == "r")
                    ecasv_rate_msec = atol(kvu_get_argument_number(1, arg).c_str());
                if (prefix == "G" ||
                        prefix == "B" ||
                        (prefix.size() > 0 && prefix[0] == 'M') ||
                        prefix == "r" ||
                        prefix == "z") {
                    eci->command("cs-option " + arg);
                }
            }
        }
        cline.next();
    }

    ecasv_fill_defaults();
}