コード例 #1
0
ファイル: list.c プロジェクト: abrt/abrt
static problem_data_t *load_problem_data(const char *problem_id)
{
    char *name2 = NULL;

    /* First, check if there is a problem with the passed id */
    GList *problems = get_problems_over_dbus(g_cli_authenticate);
    if (problems == ERR_PTR)
        return NULL;

    GList *item = g_list_find_custom(problems, problem_id, (GCompareFunc)strcmp);

    /* (git requires at least 5 char hash prefix, we do the same) */
    if (item == NULL)
    {
        /* Try loading by dirname hash */
        name2 = find_problem_by_hash(problem_id, problems);
        if (name2 == NULL)
            return NULL;

        problem_id = name2;
    }

    problem_data_t *problem_data = get_full_problem_data_over_dbus(problem_id);

    return (problem_data == ERR_PTR ? NULL : problem_data);
}
コード例 #2
0
ファイル: abrt-cli-core.c プロジェクト: babycaseny/abrt
char *hash2dirname(const char *hash)
{
    /* Try loading by dirname hash */
    GList *problems = get_problems_over_dbus(/*don't authorize*/false);
    if (problems == ERR_PTR)
        return NULL;

    char *found_name = find_problem_by_hash(hash, problems);

    g_list_free_full(problems, free);

    return found_name;
}
コード例 #3
0
ファイル: abrt-cli-core.c プロジェクト: babycaseny/abrt
vector_of_problem_data_t *fetch_crash_infos(void)
{
    GList *problems = get_problems_over_dbus(/*don't authorize*/false);
    if (problems == ERR_PTR)
        return NULL;

    vector_of_problem_data_t *vpd = new_vector_of_problem_data();

    for (GList *iter = problems; iter; iter = g_list_next(iter))
    {
        problem_data_t *problem_data = get_full_problem_data_over_dbus((const char *)(iter->data));
        if (problem_data == ERR_PTR)
            continue;

        g_ptr_array_add(vpd, problem_data);
    }

    return vpd;
}
コード例 #4
0
ファイル: status.c プロジェクト: abrt/abrt
static unsigned int count_problem_dirs(unsigned long since)
{
    unsigned count = 0;

    GList *problems = get_problems_over_dbus(g_cli_authenticate);
    if (problems == ERR_PTR)
        return count;

    for (GList *iter = problems; iter != NULL; iter = g_list_next(iter))
    {
        const char *problem_id = (const char *)iter->data;
        if (test_exist_over_dbus(problem_id, FILENAME_REPORTED_TO))
        {
            log_debug("Not counting problem %s: already reported", problem_id);
            continue;
        }

        char *time_str = load_text_over_dbus(problem_id, FILENAME_LAST_OCCURRENCE);
        if (time_str == ERR_PTR || time_str == NULL)
        {
            log_debug("Not counting problem %s: failed to get time element", problem_id);
            continue;
        }

        long val = atol(time_str);
        free(time_str);
        if (val < since)
        {
            log_debug("Not counting problem %s: older tham limit (%ld < %ld)", problem_id, val, since);
            continue;
        }

        count++;
    }

    return count;
}