blob: 5a73a19d5fcbf26bc56e426e7750ad6182a639a0 [file] [log] [blame]
Index: PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c
===================================================================
--- PackageKit-0.6.0.orig/backends/opkg/pk-backend-opkg.c 2010-01-29 09:39:33.000000000 +0000
+++ PackageKit-0.6.0/backends/opkg/pk-backend-opkg.c 2010-01-29 11:30:51.000000000 +0000
@@ -29,8 +29,7 @@
+#include <stdio.h>
#include <libopkg/opkg.h>
-static opkg_t *opkg;
-
enum {
SEARCH_NAME,
SEARCH_DESCRIPTION,
@@ -62,7 +60,7 @@
* check an opkg package for known GUI dependancies
*/
static gboolean
-opkg_is_gui_pkg (opkg_package_t *pkg)
+opkg_is_gui_pkg (pkg_t *pkg)
{
/* TODO: check appropriate tag */
@@ -84,7 +82,7 @@
* check an opkg package to determine if it is a development package
*/
static gboolean
-opkg_is_devel_pkg (opkg_package_t *pkg)
+opkg_is_devel_pkg (pkg_t *pkg)
{
if (g_strrstr (pkg->name, "-dev"))
return TRUE;
@@ -105,7 +103,7 @@
* returns true if the tag is present
*/
static gboolean
-opkg_check_tag (opkg_package_t *pkg, const gchar *tag)
+opkg_check_tag (pkg_t *pkg, const gchar *tag)
{
if (pkg->tags && tag)
return (g_strrstr (pkg->tags, tag) != NULL);
@@ -118,7 +116,7 @@
{
switch (err)
{
- case OPKG_NO_ERROR:
+/* case OPKG_NO_ERROR:
break;
case OPKG_PACKAGE_NOT_INSTALLED:
pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
@@ -140,7 +138,7 @@
break;
case OPKG_PACKAGE_NOT_AVAILABLE:
pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL);
- break;
+ break;*/
default:
opkg_unknown_error (backend, err, "Update package");
}
@@ -152,7 +150,7 @@
static void
backend_initialize (PkBackend *backend)
{
- opkg = opkg_new ();
+ int opkg = opkg_new ();
if (!opkg) {
pk_backend_error_code (backend,
@@ -162,8 +160,8 @@
}
#ifdef OPKG_OFFLINE_ROOT
- opkg_set_option (opkg, (char *) "offline_root", OPKG_OFFLINE_ROOT);
- opkg_re_read_config_files (opkg);
+ opkg_set_option ((char *) "offline_root", OPKG_OFFLINE_ROOT);
+ opkg_re_read_config_files ();
#endif
}
@@ -174,22 +172,22 @@
static void
backend_destroy (PkBackend *backend)
{
- opkg_free (opkg);
+ opkg_free ();
}
static void
-pk_opkg_progress_cb (opkg_t *_opkg, const opkg_progress_data_t *pdata, void *data)
+pk_opkg_progress_cb (const opkg_progress_data_t *pdata, void *data)
{
- PkBackend *backend = PK_BACKEND (data);
+ PkBackend *backend = (PkBackend*) data;
if (!backend)
return;
pk_backend_set_percentage (backend, pdata->percentage);
- if (pdata->package)
+ if (pdata->pkg)
{
gchar *uid;
- opkg_package_t *pkg = pdata->package;
+ pkg_t *pkg = pdata->pkg;
gint status = PK_INFO_ENUM_UNKNOWN;
uid = g_strdup_printf ("%s;%s;%s;",
@@ -225,12 +223,12 @@
{
int ret;
- ret = opkg_update_package_lists (opkg, pk_opkg_progress_cb, backend);
+ ret = opkg_update_package_lists (pk_opkg_progress_cb, backend);
if (ret) {
- if (ret == OPKG_DOWNLOAD_FAILED)
- pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL);
- else
+// if (ret == OPKG_DOWNLOAD_FAILED)
+// pk_backend_error_code (backend, PK_ERROR_ENUM_REPO_NOT_AVAILABLE, NULL);
+// else
opkg_unknown_error (backend, ret, "Refreshing cache");
}
pk_backend_finished (backend);
@@ -256,7 +254,7 @@
*/
static void
-pk_opkg_package_list_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data)
+pk_opkg_package_list_cb (pkg_t *pkg, void *data)
{
SearchParams *params = (SearchParams*) data;
gchar *uid;
@@ -298,7 +296,7 @@
uid = g_strdup_printf ("%s;%s;%s;",
pkg->name, pkg->version, pkg->architecture);
- if (pkg->installed)
+ if (pkg->state_status == SS_INSTALLED)
status = PK_INFO_ENUM_INSTALLED;
else
status = PK_INFO_ENUM_AVAILABLE;
@@ -318,10 +316,10 @@
opkg_is_gui_pkg (pkg))
goto end_handle;
if (pk_bitfield_contain(filters, PK_FILTER_ENUM_INSTALLED) &&
- (!pkg->installed))
+ (pkg->state_status != SS_INSTALLED))
goto end_handle;
if (pk_bitfield_contain(filters, PK_FILTER_ENUM_NOT_INSTALLED) &&
- (pkg->installed))
+ (pkg->state_status == SS_INSTALLED))
goto end_handle;
pk_backend_package (params->backend, status, uid, pkg->description);
@@ -338,7 +336,7 @@
params = pk_backend_get_pointer (backend, "search-params");
- opkg_list_packages (opkg, pk_opkg_package_list_cb, params);
+ opkg_list_packages (pk_opkg_package_list_cb, params);
pk_backend_finished (params->backend);
@@ -349,7 +347,7 @@
}
static void
-backend_search_name (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_name (PkBackend *backend, PkBitfield filters, gchar **search)
{
SearchParams *params;
@@ -360,7 +358,7 @@
params = g_new0 (SearchParams, 1);
params->filters = filters;
params->search_type = SEARCH_NAME;
- params->needle = g_utf8_strdown (search, -1);
+ params->needle = g_utf8_strdown (search[0], -1);
params->backend = backend;
pk_backend_set_pointer (backend, "search-params", params);
@@ -371,7 +369,7 @@
* backend_search_description:
*/
static void
-backend_search_description (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_description (PkBackend *backend, PkBitfield filters, gchar **search)
{
SearchParams *params;
@@ -382,7 +380,7 @@
params = g_new0 (SearchParams, 1);
params->filters = filters;
params->search_type = SEARCH_DESCRIPTION;
- params->needle = g_utf8_strdown (search, -1);
+ params->needle = g_utf8_strdown (search[0], -1);
params->backend = backend;
pk_backend_set_pointer (backend, "search-params", params);
@@ -390,7 +388,7 @@
}
static void
-backend_search_group (PkBackend *backend, PkBitfield filters, const gchar *search)
+backend_search_group (PkBackend *backend, PkBitfield filters, gchar **search)
{
SearchParams *params;
@@ -401,7 +399,7 @@
params = g_new0 (SearchParams, 1);
params->filters = filters;
params->search_type = SEARCH_TAG;
- params->needle = g_strdup_printf ("group::%s", search);
+ params->needle = g_strdup_printf ("group::%s", search[0]);
params->backend = backend;
pk_backend_set_pointer (backend, "search-params", params);
@@ -412,9 +410,9 @@
static gboolean
backend_install_packages_thread (PkBackend *backend)
{
- PkPackageId *pi;
gint err, i;
gchar **package_ids;
+ gchar **parts;
package_ids = pk_backend_get_strv (backend, "pkids");
@@ -424,13 +422,13 @@
{
pk_backend_package (backend, PK_INFO_ENUM_INSTALLING, package_ids[i], NULL);
- pi = pk_package_id_new_from_string (package_ids[i]);
+ parts = pk_package_id_split (package_ids[i]);
- err = opkg_install_package (opkg, pi->name, pk_opkg_progress_cb, backend);
+ err = opkg_install_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
if (err)
handle_install_error (backend, err);
- pk_package_id_free (pi);
+ g_strfreev (parts);
if (err != 0)
break;
}
@@ -453,9 +451,9 @@
static gboolean
backend_remove_packages_thread (PkBackend *backend)
{
- PkPackageId *pi;
gint err, i;
gchar **package_ids;
+ gchar **parts;
gboolean allow_deps;
gboolean autoremove;
gpointer *data;
@@ -467,29 +465,30 @@
autoremove = GPOINTER_TO_INT (data[2]);
g_free (data);
- opkg_set_option (opkg, (char *)"autoremove", &autoremove);
- opkg_set_option (opkg, (char *)"force_removal_of_dependent_packages", &allow_deps);
+ opkg_set_option ((char *)"autoremove", &autoremove);
+ opkg_set_option ((char *)"force_removal_of_dependent_packages", &allow_deps);
err = 0;
for (i = 0; package_ids[i]; i++)
{
- pi = pk_package_id_new_from_string (package_ids[i]);
pk_backend_package (backend, PK_INFO_ENUM_REMOVING, package_ids[i], NULL);
- err = opkg_remove_package (opkg, pi->name, pk_opkg_progress_cb, backend);
+ parts = pk_package_id_split (package_ids[i]);
+
+ err = opkg_remove_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
switch (err)
{
- case OPKG_NO_ERROR:
- break;
- case OPKG_PACKAGE_NOT_INSTALLED:
- pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
- break;
+ //case OPKG_NO_ERROR:
+ // break;
+ //case OPKG_PACKAGE_NOT_INSTALLED:
+ // pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_INSTALLED, NULL);
+ // break;
default:
opkg_unknown_error (backend, err, "Remove");
}
- pk_package_id_free (pi);
+ g_strfreev (parts);
if (err != 0)
break;
@@ -540,7 +539,7 @@
gint err;
/* FIXME: support only_trusted */
- err = opkg_upgrade_all (opkg, pk_opkg_progress_cb, backend);
+ err = opkg_upgrade_all (pk_opkg_progress_cb, backend);
if (err)
opkg_unknown_error (backend, err, "Upgrading system");
@@ -564,29 +563,28 @@
static gboolean
backend_update_package_thread (PkBackend *backend)
{
- PkPackageId *pi;
+ gchar **parts;
gint err = 0;
const gchar *package_id;
/* FIXME: support only_trusted */
package_id = pk_backend_get_string (backend, "pkgid");
- pi = pk_package_id_new_from_string (package_id);
+ parts = pk_package_id_split (package_id);
- if (!pi->name || !pi->version)
+ if (!parts)
{
pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
"Package not found");
- pk_package_id_free (pi);
pk_backend_finished (backend);
return FALSE;
}
- err = opkg_upgrade_package (opkg, pi->name, pk_opkg_progress_cb, backend);
+ err = opkg_upgrade_package (parts[PK_PACKAGE_ID_NAME], pk_opkg_progress_cb, backend);
if (err)
handle_install_error (backend, err);
- pk_package_id_free (pi);
+ g_strfreev (parts);
pk_backend_finished (backend);
return (err != 0);
}
@@ -610,13 +608,13 @@
*/
static void
-pk_opkg_list_upgradable_cb (opkg_t *_opkg, opkg_package_t *pkg, void *data)
+pk_opkg_list_upgradable_cb (pkg_t *pkg, void *data)
{
- PkBackend *backend = PK_BACKEND (data);
+ PkBackend *backend = (PkBackend*) data;
gchar *uid;
gint status;
- if (pkg->installed)
+ if (pkg->state_status == SS_INSTALLED)
status = PK_INFO_ENUM_INSTALLED;
else
status = PK_INFO_ENUM_AVAILABLE;
@@ -631,7 +629,7 @@
static gboolean
backend_get_updates_thread (PkBackend *backend)
{
- opkg_list_upgradable_packages (opkg, pk_opkg_list_upgradable_cb, backend);
+ opkg_list_upgradable_packages (pk_opkg_list_upgradable_cb, backend);
pk_backend_finished (backend);
return TRUE;
}
@@ -668,16 +666,18 @@
static gboolean
backend_get_details_thread (PkBackend *backend)
{
- PkPackageId *pi;
gchar **package_ids;
+ gchar **parts;
int group_index;
PkGroupEnum group = 0;
- opkg_package_t *pkg;
+ pkg_t *pkg;
gchar *newid;
package_ids = pk_backend_get_strv(backend, "package_ids");
- pi = pk_package_id_new_from_string (package_ids[0]);
- if (pi == NULL)
+ parts = pk_package_id_split (package_ids[0]);
+
+
+ if (!parts)
{
pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
pk_backend_finished (backend);
@@ -685,8 +685,8 @@
}
- pkg = opkg_find_package (opkg, pi->name, pi->version, pi->arch, pi->data);
- pk_package_id_free (pi);
+ pkg = opkg_find_package (parts[PK_PACKAGE_ID_NAME], parts[PK_PACKAGE_ID_VERSION], parts[PK_PACKAGE_ID_ARCH], parts[PK_PACKAGE_ID_DATA]);
+ g_strfreev (parts);
if (!pkg)
{
@@ -695,7 +695,7 @@
return FALSE;
}
- newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->repository);
+ newid = g_strdup_printf ("%s;%s;%s;%s", pkg->name, pkg->version, pkg->architecture, pkg->src->name);
if (pkg->tags) {
for (group_index = 0; group < PK_GROUP_ENUM_LAST; group_index++) {
@@ -706,9 +706,8 @@
}
}
- pk_backend_details (backend, newid, NULL, group, pkg->description, pkg->url, pkg->size);
+ pk_backend_details (backend, newid, NULL, group, pkg->description, NULL, pkg->size);
g_free (newid);
- opkg_package_free(pkg);
pk_backend_finished (backend);
return TRUE;
}