/** * pk_group_bitfield_to_string: * @groups: The enumerated type values * * Converts a enumerated type bitfield to its text representation * * Return value: the enumerated constant value, e.g. "gnome;kde" * * Since: 0.5.2 **/ gchar * pk_group_bitfield_to_string (PkBitfield groups) { GString *string; guint i; string = g_string_new (""); for (i = 0; i < PK_GROUP_ENUM_LAST; i++) { if ((groups & pk_bitfield_value (i)) == 0) continue; g_string_append_printf (string, "%s;", pk_group_enum_to_string (i)); } /* do we have a no bitfield? \n */ if (string->len == 0) { g_warning ("not valid!"); g_string_append (string, pk_group_enum_to_string (PK_GROUP_ENUM_UNKNOWN)); } else { /* remove last \n */ g_string_set_size (string, string->len - 1); } return g_string_free (string, FALSE); }
int main(int argc, char **argv) { int ret; ret = 0; if (argc != 2) { ret = 1; fprintf(stderr, USAGE, argv[0]); } else printf("%s\n", pk_group_enum_to_string(group_from_origin(argv[1]))); return ret; }
/** * backend_get_details: */ static gboolean backend_get_details_thread (PkBackend *backend) { gchar **package_ids; gchar **parts; int group_index; PkGroupEnum group = 0; pkg_t *pkg; gchar *newid; package_ids = pk_backend_get_strv(backend, "package_ids"); 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); return FALSE; } 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) { pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, NULL); pk_backend_finished (backend); return FALSE; } 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++) { group = 1 << group_index; if (!(group & backend_get_groups(backend))) continue; if (opkg_check_tag(pkg, (const gchar *)pk_group_enum_to_string(group))) break; } } pk_backend_details (backend, newid, NULL, group, pkg->description, NULL, pkg->size); g_free (newid); pk_backend_finished (backend); return TRUE; }