예제 #1
0
파일: tecla.c 프로젝트: 2ephyr/bladeRF
int input_init()
{
    int status = CLI_RET_UNKNOWN;

    if (gl) {
        input_deinit();
    }

    gl = new_GetLine(CLI_MAX_LINE_LEN, CLI_MAX_HIST_LEN);

    if (gl) {

        /* Try to set up a clean exit on these signals. If it fails, we'll
        * trudge along with a warning */
        if (gl_trap_signal(gl, SIGINT, GLS_DONT_FORWARD, GLS_ABORT, EINTR)  ||
            gl_trap_signal(gl, SIGQUIT, GLS_DONT_FORWARD, GLS_ABORT, EINTR)) {

            fprintf(stderr, SIGHANLDER_FAILED);
        }

        tab_complete = new_WordCompletion();
        if (tab_complete != NULL) {
            gl_customize_completion(gl, NULL, tab_completion);
        } else {
            /* Non-fatal - complain and carry on */
            fprintf(stderr, "Failed to initialize tab-completion.\n");
        }

        status = 0;
    }

    return status;
}
예제 #2
0
int main(int argc, char *argv[])
{
    GSList *errors = NULL, *files = NULL;
    Filetree tree;
    int mode = 0, mode_parsed = FALSE, ret = 0;

    if (parse_global_args(&argc, &argv, entries, TRUE) || argc < 2 || help) {
        print_help();
        exit(EXIT_FAILURE);
    }
    if (!strcmp(argv[1], "scan")) {
        mode = LOUDNESS_MODE_SCAN;
        mode_parsed = loudness_scan_parse(&argc, &argv);
#ifdef USE_TAGLIB
    } else if (!strcmp(argv[1], "tag")) {
        mode = LOUDNESS_MODE_TAG;
        mode_parsed = loudness_tag_parse(&argc, &argv);
#endif
    } else if (!strcmp(argv[1], "dump")) {
        mode = LOUDNESS_MODE_DUMP;
        mode_parsed = loudness_dump_parse(&argc, &argv);
    } else {
        fprintf(stderr, "Unknown mode '%s'\n", argv[1]);
    }
    if (!mode_parsed) {
        exit(EXIT_FAILURE);
    }
    if (decode_to_file && argc - 1 != 1) {
        fprintf(stderr, "Cannot decode more than one file\n");
        exit(EXIT_FAILURE);
    }

    g_thread_init(NULL);
    input_init(argv[0], forced_plugin);
    scanner_init_common();

    setlocale(LC_COLLATE, "");
    setlocale(LC_CTYPE, "");
    tree = filetree_init(&argv[1], (size_t) (argc - 1),
                         recursive, follow_symlinks, no_sort, &errors);

    g_slist_foreach(errors, filetree_print_error, &verbose);
    g_slist_foreach(errors, filetree_free_error, NULL);
    g_slist_free(errors);

    filetree_file_list(tree, &files);
    filetree_remove_common_prefix(files);

    switch (mode) {
        case LOUDNESS_MODE_SCAN:
        loudness_scan(files);
        break;
#ifdef USE_TAGLIB
        case LOUDNESS_MODE_TAG:
        ret = loudness_tag(files);
        break;
#endif
        case LOUDNESS_MODE_DUMP:
        ret = loudness_dump(files);
        break;
    }

    g_slist_foreach(files, filetree_free_list_entry, NULL);
    g_slist_free(files);

    filetree_destroy(tree);
    input_deinit();
    g_free(forced_plugin);

    return ret;
}