Пример #1
0
/**
 * hif_package_array_download:
 * @packages: an array of packages.
 * @directory: destination directory, or %NULL for the cachedir.
 * @state: the #HifState.
 * @error: a #GError or %NULL..
 *
 * Downloads an array of packages.
 *
 * Returns: %TRUE for success
 *
 * Since: 0.1.0
 */
gboolean
hif_package_array_download(GPtrArray *packages,
                const gchar *directory,
                HifState *state,
                GError **error)
{
    HifState *state_local;
    HifPackage *pkg;
    guint i;

    /* download any package that is not currently installed */
    hif_state_set_number_steps(state, packages->len);
    for (i = 0; i < packages->len; i++) {
        g_autofree gchar *tmp = NULL;
        pkg = g_ptr_array_index(packages, i);
        state_local = hif_state_get_child(state);
        tmp = hif_package_download(pkg, NULL, state_local, error);
        if (tmp == NULL)
            return FALSE;

        /* done */
        if (!hif_state_done(state, error))
            return FALSE;
    }
    return TRUE;
}
Пример #2
0
/**
 * hif_sack_add_sources:
 */
gboolean
hif_sack_add_sources (HySack sack,
		      GPtrArray *sources,
		      guint permissible_cache_age,
		      HifSackAddFlags flags,
		      HifState *state,
		      GError **error)
{
	gboolean ret;
	guint cnt = 0;
	guint i;
	HifSource *src;
	HifState *state_local;

	/* count the enabled sources */
	for (i = 0; i < sources->len; i++) {
		src = g_ptr_array_index (sources, i);
		if (hif_source_get_enabled (src))
			cnt++;
	}

	/* add each repo */
	hif_state_set_number_steps (state, cnt);
	for (i = 0; i < sources->len; i++) {
		src = g_ptr_array_index (sources, i);
		if (!hif_source_get_enabled (src))
			continue;

		state_local = hif_state_get_child (state);
		ret = hif_sack_add_source (sack,
					   src,
					   permissible_cache_age,
					   flags,
					   state_local,
					   error);
		if (!ret)
			return FALSE;

		/* done */
		if (!hif_state_done (state, error))
			return FALSE;
	}

	/* success */
	return TRUE;
}