static int remove_target(const char *target) { alpm_pkg_t *pkg; alpm_db_t *db_local = alpm_get_localdb(config->handle); alpm_list_t *p; if((pkg = alpm_db_get_pkg(db_local, target)) != NULL) { if(alpm_remove_pkg(config->handle, pkg) == -1) { pm_printf(ALPM_LOG_ERROR, "'%s': %s\n", target, alpm_strerror(alpm_errno(config->handle))); return -1; } config->explicit_removes = alpm_list_add(config->explicit_removes, pkg); return 0; } /* fallback to group */ alpm_group_t *grp = alpm_db_get_group(db_local, target); if(grp == NULL) { pm_printf(ALPM_LOG_ERROR, _("target not found: %s\n"), target); return -1; } for(p = grp->packages; p; p = alpm_list_next(p)) { pkg = p->data; if(alpm_remove_pkg(config->handle, pkg) == -1) { pm_printf(ALPM_LOG_ERROR, "'%s': %s\n", target, alpm_strerror(alpm_errno(config->handle))); return -1; } config->explicit_removes = alpm_list_add(config->explicit_removes, pkg); } return 0; }
static PyObject* pyalpm_trans_remove_pkg(PyObject *self, PyObject *args) { alpm_handle_t *handle = ALPM_HANDLE(self); PyObject *pkg; alpm_pkg_t *pmpkg; int ret; if (!PyArg_ParseTuple(args, "O!", &AlpmPackageType, &pkg)) { return NULL; } pmpkg = pmpkg_from_pyalpm_pkg(pkg); ret = alpm_remove_pkg(handle, pmpkg); if (ret == -1) RET_ERR("unable to update transaction", alpm_errno(handle), NULL); Py_RETURN_NONE; }
static gboolean pk_alpm_transaction_remove_targets (PkBackendJob *job, gchar** packages, GError **error) { PkBackend *backend = pk_backend_job_get_backend (job); PkBackendAlpmPrivate *priv = pk_backend_get_user_data (backend); g_return_val_if_fail (packages != NULL, FALSE); for (; *packages != NULL; ++packages) { g_auto(GStrv) package = pk_package_id_split (*packages); gchar *name = package[PK_PACKAGE_ID_NAME]; alpm_pkg_t *pkg = alpm_db_get_pkg (priv->localdb, name); if (pkg == NULL || alpm_remove_pkg (priv->alpm, pkg) < 0) { alpm_errno_t errno = alpm_errno (priv->alpm); g_set_error (error, PK_ALPM_ERROR, errno, "%s: %s", name, alpm_strerror (errno)); return FALSE; } } return TRUE; }