/** * hif_package_cmp: * @pkg1: a #HifPackage instance. * @pkg2: another #HifPackage instance. * * Compares two packages. * * Returns: %TRUE for success * * Since: 0.7.0 */ int hif_package_cmp(HifPackage *pkg1, HifPackage *pkg2) { Pool *pool1 = hif_package_get_pool(pkg1); Pool *pool2 = hif_package_get_pool(pkg2); Solvable *s1 = pool_id2solvable(pool1, hif_package_get_id(pkg1)); Solvable *s2 = pool_id2solvable(pool2, hif_package_get_id(pkg2)); const char *str1 = pool_id2str(pool1, s1->name); const char *str2 = pool_id2str(pool2, s2->name); int ret = strcmp(str1, str2); if (ret) return ret; ret = hif_package_evr_cmp(pkg1, pkg2); if (ret) return ret; str1 = pool_id2str(pool1, s1->arch); str2 = pool_id2str(pool2, s2->arch); return strcmp(str1, str2); }
static PyObject * get_running_kernel(_SackObject *self, PyObject *unused) { HifSack *sack = self->sack; HifPackage *cpkg = hif_sack_get_running_kernel(sack); if (cpkg == NULL) Py_RETURN_NONE; PyObject *pkg = new_package((PyObject*)self, hif_package_get_id(cpkg)); g_object_unref(cpkg); return pkg; }
/** * hif_db_get_string: **/ gchar * hif_db_get_string (HifDb *db, HyPackage package, const gchar *key, GError **error) { gboolean ret; gchar *filename = NULL; gchar *index_dir = NULL; gchar *value = NULL; g_return_val_if_fail (HIF_IS_DB (db), NULL); g_return_val_if_fail (package != NULL, NULL); g_return_val_if_fail (key != NULL, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); /* get file contents */ index_dir = hif_db_get_dir_for_package (package); if (index_dir == NULL) { g_set_error (error, HIF_ERROR, HIF_ERROR_FAILED, "cannot create index for %s", hif_package_get_id (package)); goto out; } filename = g_build_filename (index_dir, key, NULL); /* check it exists */ ret = g_file_test (filename, G_FILE_TEST_EXISTS); if (!ret) { g_set_error (error, HIF_ERROR, HIF_ERROR_FAILED, "%s key not found", filename); goto out; } /* get value */ ret = g_file_get_contents (filename, &value, NULL, error); if (!ret) goto out; out: g_free (index_dir); g_free (filename); return value; }
/** * hif_db_set_string: **/ gboolean hif_db_set_string (HifDb *db, HyPackage package, const gchar *key, const gchar *value, GError **error) { gboolean ret = TRUE; gchar *index_dir = NULL; gchar *index_file = NULL; g_return_val_if_fail (HIF_IS_DB (db), FALSE); g_return_val_if_fail (package != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); /* create the index directory */ index_dir = hif_db_get_dir_for_package (package); if (index_dir == NULL) { ret = FALSE; g_set_error (error, HIF_ERROR, HIF_ERROR_FAILED, "cannot create index for %s", hif_package_get_id (package)); goto out; } ret = hif_db_create_dir (index_dir, error); if (!ret) goto out; /* write the value */ index_file = g_build_filename (index_dir, key, NULL); g_debug ("writing %s to %s", value, index_file); ret = g_file_set_contents (index_file, value, -1, error); if (!ret) goto out; out: g_free (index_dir); g_free (index_file); return ret; }
/** * hif_db_remove: **/ gboolean hif_db_remove (HifDb *db, HyPackage package, const gchar *key, GError **error) { gboolean ret = TRUE; gchar *index_dir = NULL; gchar *index_file = NULL; GFile *file = NULL; g_return_val_if_fail (HIF_IS_DB (db), FALSE); g_return_val_if_fail (package != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); /* create the index directory */ index_dir = hif_db_get_dir_for_package (package); if (index_dir == NULL) { ret = FALSE; g_set_error (error, HIF_ERROR, HIF_ERROR_FAILED, "cannot create index for %s", hif_package_get_id (package)); goto out; } /* delete the value */ g_debug ("deleting %s from %s", key, index_dir); index_file = g_build_filename (index_dir, key, NULL); file = g_file_new_for_path (index_file); ret = g_file_delete (file, NULL, error); if (!ret) goto out; out: if (file != NULL) g_object_unref (file); g_free (index_dir); return ret; }
static PyObject * add_cmdline_package(_SackObject *self, PyObject *fn_obj) { HifPackage *cpkg; PyObject *pkg; PyObject *tmp_py_str = NULL; const char *fn = pycomp_get_string(fn_obj, &tmp_py_str); if (fn == NULL) { Py_XDECREF(tmp_py_str); return NULL; } cpkg = hif_sack_add_cmdline_package(self->sack, fn); Py_XDECREF(tmp_py_str); if (cpkg == NULL) { PyErr_Format(PyExc_IOError, "Can not load RPM file: %s.", fn); return NULL; } pkg = new_package((PyObject*)self, hif_package_get_id(cpkg)); g_object_unref(cpkg); return pkg; }
/** * hif_db_remove_all: **/ gboolean hif_db_remove_all (HifDb *db, HyPackage package, GError **error) { gboolean ret = TRUE; gchar *index_dir = NULL; gchar *index_file = NULL; GFile *file_tmp; GFile *file_directory = NULL; GDir *dir = NULL; const gchar *filename; g_return_val_if_fail (HIF_IS_DB (db), FALSE); g_return_val_if_fail (package != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); /* get the folder */ index_dir = hif_db_get_dir_for_package (package); if (index_dir == NULL) { ret = FALSE; g_set_error (error, HIF_ERROR, HIF_ERROR_FAILED, "cannot create index for %s", hif_package_get_id (package)); goto out; } ret = g_file_test (index_dir, G_FILE_TEST_IS_DIR); if (!ret) { g_debug ("Nothing to delete in %s", index_dir); ret = TRUE; goto out; } /* open */ dir = g_dir_open (index_dir, 0, error); if (dir == NULL) goto out; /* delete each one */ filename = g_dir_read_name (dir); while (filename != NULL) { index_file = g_build_filename (index_dir, filename, NULL); file_tmp = g_file_new_for_path (index_file); /* delete, ignoring error */ g_debug ("deleting %s from %s", filename, index_dir); ret = g_file_delete (file_tmp, NULL, NULL); if (!ret) g_debug ("failed to delete %s", filename); g_object_unref (file_tmp); g_free (index_file); filename = g_dir_read_name (dir); } /* now delete the directory */ file_directory = g_file_new_for_path (index_dir); ret = g_file_delete (file_directory, NULL, error); if (!ret) goto out; out: if (file_directory != NULL) g_object_unref (file_directory); g_free (index_dir); return ret; }
/** * hif_package_clone: * @pkg: a #HifPackage instance. * * Clones the package. * * Returns: a #HifPackage * * Since: 0.7.0 */ HifPackage * hif_package_clone(HifPackage *pkg) { return hif_package_new(hif_package_get_sack(pkg), hif_package_get_id(pkg)); }