static void complete_filetype(const char *str) { const char *filename = get_current_file_name(curr_view); assoc_records_t ft = get_all_programs_for_file(filename); complete_progs(str, ft); free(ft.list); complete_progs(str, get_magic_handlers(filename)); vle_compl_finish_group(); vle_compl_add_last_match(str); }
int get_default_program_for_file(const char *file, assoc_record_t *result) { int j; assoc_records_t records; assoc_record_t prog; j = 0; records = get_all_programs_for_file(file); while(j < records.count) { char name_buf[NAME_MAX]; (void)extract_cmd_name(records.list[j].command, 0, sizeof(name_buf), name_buf); if(external_command_exists_func == NULL || external_command_exists_func(name_buf)) break; j++; } if(j >= records.count) { free(records.list); return 0; } prog = records.list[j]; result->command = strdup(prog.command); result->description = strdup(prog.description); free(records.list); if(result->command == NULL || result->description == NULL) { free_assoc_record(result); return 0; } return 1; }