| 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; |
| } |