PyObject * PyObject_FromRepoMdRecord(LrYumRepoMdRecord *rec) { PyObject *dict; if (!rec) Py_RETURN_NONE; if ((dict = PyDict_New()) == NULL) return NULL; PyDict_SetItemString(dict, "location_href", PyStringOrNone_FromString(rec->location_href)); PyDict_SetItemString(dict, "checksum", PyStringOrNone_FromString(rec->checksum)); PyDict_SetItemString(dict, "checksum_type", PyStringOrNone_FromString(rec->checksum_type)); PyDict_SetItemString(dict, "checksum_open", PyStringOrNone_FromString(rec->checksum_open)); PyDict_SetItemString(dict, "checksum_open_type", PyStringOrNone_FromString(rec->checksum_open_type)); PyDict_SetItemString(dict, "timestamp", PyLong_FromLongLong((PY_LONG_LONG) rec->timestamp)); PyDict_SetItemString(dict, "size", PyLong_FromLongLong((PY_LONG_LONG) rec->size)); PyDict_SetItemString(dict, "size_open", PyLong_FromLongLong((PY_LONG_LONG) rec->size_open)); PyDict_SetItemString(dict, "db_version", PyLong_FromLong((long) rec->db_version)); return dict; }
void py_debug_cb(G_GNUC_UNUSED const gchar *log_domain, G_GNUC_UNUSED GLogLevelFlags log_level, const gchar *message, G_GNUC_UNUSED gpointer user_data) { PyObject *arglist, *data, *result, *py_message; if (!debug_cb) return; // XXX: GIL Hack if (global_state) EndAllowThreads((PyThreadState **) global_state); // XXX: End of GIL Hack py_message = PyStringOrNone_FromString(message); data = (debug_cb_data) ? debug_cb_data : Py_None; arglist = Py_BuildValue("(OO)", py_message, data); result = PyObject_CallObject(debug_cb, arglist); Py_DECREF(arglist); Py_XDECREF(result); Py_DECREF(py_message); // XXX: GIL Hack if (global_state) BeginAllowThreads((PyThreadState **) global_state); // XXX: End of GIL Hack }
PyObject * PyObject_FromYumRepo(LrYumRepo *repo) { PyObject *dict; if (!repo) Py_RETURN_NONE; if ((dict = PyDict_New()) == NULL) return NULL; PyDict_SetItemString(dict, "repomd", PyStringOrNone_FromString(repo->repomd)); PyDict_SetItemString(dict, "url", PyStringOrNone_FromString(repo->url)); PyDict_SetItemString(dict, "destdir", PyStringOrNone_FromString(repo->destdir)); PyDict_SetItemString(dict, "signature", PyStringOrNone_FromString(repo->signature)); PyDict_SetItemString(dict, "mirrorlist", PyStringOrNone_FromString(repo->mirrorlist)); PyDict_SetItemString(dict, "metalink", PyStringOrNone_FromString(repo->metalink)); for (GSList *elem = repo->paths; elem; elem = g_slist_next(elem)) { LrYumRepoPath *yumrepopath = elem->data; if (!yumrepopath || !yumrepopath->type) continue; PyDict_SetItemString(dict, yumrepopath->type, PyStringOrNone_FromString(yumrepopath->path)); } return dict; }
PyObject * py_xml_from_rpm(PyObject *self, PyObject *args) { CR_UNUSED(self); PyObject *tuple; int checksum_type, changelog_limit; char *filename, *location_href, *location_base; struct cr_XmlStruct xml_res; GError *tmp_err = NULL; if (!PyArg_ParseTuple(args, "sizzi:py_xml_from_rpm", &filename, &checksum_type, &location_href, &location_base, &changelog_limit)) { return NULL; } xml_res = cr_xml_from_rpm(filename, checksum_type, location_href, location_base, changelog_limit, NULL, &tmp_err); if (tmp_err) { nice_exception(&tmp_err, "Cannot load %s: ", filename); return NULL; } if ((tuple = PyTuple_New(3)) == NULL) goto py_xml_from_rpm_end; // Free xml_res and return NULL PyTuple_SetItem(tuple, 0, PyStringOrNone_FromString(xml_res.primary)); PyTuple_SetItem(tuple, 1, PyStringOrNone_FromString(xml_res.filelists)); PyTuple_SetItem(tuple, 2, PyStringOrNone_FromString(xml_res.other)); py_xml_from_rpm_end: free(xml_res.primary); free(xml_res.filelists); free(xml_res.other); return tuple; }
static PyObject * nevra(_PackageObject *self, void *nothing) { CR_UNUSED(nothing); PyObject *pystr; if (check_PackageStatus(self)) return NULL; char *nevra = cr_package_nevra(self->package); pystr = PyStringOrNone_FromString(nevra); free(nevra); return pystr; }
PyObject * py_checksum_name_str(PyObject *self, PyObject *args) { int type; CR_UNUSED(self); if (!PyArg_ParseTuple(args, "i:py_checksum_name_Str", &type)) return NULL; return PyStringOrNone_FromString(cr_checksum_name_str(type)); }
PyObject * PyObject_FromYumRepoMd(LrYumRepoMd *repomd) { PyObject *dict, *list; if (!repomd) Py_RETURN_NONE; if ((dict = PyDict_New()) == NULL) return NULL; PyDict_SetItemString(dict, "revision", PyStringOrNone_FromString(repomd->revision)); list = PyList_New(0); for (GSList *elem = repomd->repo_tags; elem; elem = g_slist_next(elem)) { char *tag = elem->data; if (tag) PyList_Append(list, PyStringOrNone_FromString(tag)); } PyDict_SetItemString(dict, "repo_tags", list); list = PyList_New(0); for (GSList *elem = repomd->distro_tags; elem; elem = g_slist_next(elem)) { LrYumDistroTag *distrotag = elem->data; if (!elem->data) continue; char *cpeid = distrotag->cpeid; char *value = distrotag->tag; if (value) { PyList_Append(list, Py_BuildValue("(NN)", PyStringOrNone_FromString(cpeid), PyStringOrNone_FromString(value))); } } PyDict_SetItemString(dict, "distro_tags", list); list = PyList_New(0); for (GSList *elem = repomd->content_tags; elem; elem = g_slist_next(elem)) { char *tag = elem->data; if (tag) PyList_Append(list, PyStringOrNone_FromString(tag)); } PyDict_SetItemString(dict, "content_tags", list); for (GSList *elem = repomd->records; elem; elem = g_slist_next(elem)) { LrYumRepoMdRecord *record = elem->data; if (!record) continue; PyDict_SetItemString(dict, record->type, PyObject_FromRepoMdRecord(record)); } return dict; }
PyObject * PyObject_FromMetalink(LrMetalink *metalink) { PyObject *dict, *sub_list; if (!metalink) Py_RETURN_NONE; if ((dict = PyDict_New()) == NULL) return NULL; PyDict_SetItemString(dict, "filename", PyStringOrNone_FromString(metalink->filename)); PyDict_SetItemString(dict, "timestamp", PyLong_FromLongLong((PY_LONG_LONG)metalink->timestamp)); PyDict_SetItemString(dict, "size", PyLong_FromLongLong((PY_LONG_LONG)metalink->size)); // Hashes if ((sub_list = PyList_New(0)) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(dict, "hashes", sub_list); for (GSList *elem = metalink->hashes; elem; elem = g_slist_next(elem)) { LrMetalinkHash *metalinkhash = elem->data; PyObject *tuple; if ((tuple = PyTuple_New(2)) == NULL) { PyDict_Clear(dict); return NULL; } PyTuple_SetItem(tuple, 0, PyStringOrNone_FromString(metalinkhash->type)); PyTuple_SetItem(tuple, 1, PyStringOrNone_FromString(metalinkhash->value)); PyList_Append(sub_list, tuple); } // Urls if ((sub_list = PyList_New(0)) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(dict, "urls", sub_list); for (GSList *elem = metalink->urls; elem; elem = g_slist_next(elem)) { LrMetalinkUrl *metalinkurl = elem->data; PyObject *udict; if ((udict = PyDict_New()) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(udict, "protocol", PyStringOrNone_FromString(metalinkurl->protocol)); PyDict_SetItemString(udict, "type", PyStringOrNone_FromString(metalinkurl->type)); PyDict_SetItemString(udict, "location", PyStringOrNone_FromString(metalinkurl->location)); PyDict_SetItemString(udict, "preference", PyLong_FromLong((long) metalinkurl->preference)); PyDict_SetItemString(udict, "url", PyStringOrNone_FromString(metalinkurl->url)); PyList_Append(sub_list, udict); } // Alternates if (metalink->alternates) { if ((sub_list = PyList_New(0)) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(dict, "alternates", sub_list); for (GSList *elem = metalink->alternates; elem; elem = g_slist_next(elem)) { LrMetalinkAlternate *ma = elem->data; PyObject *udict; if ((udict = PyDict_New()) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(udict, "timestamp", PyLong_FromLongLong((PY_LONG_LONG)ma->timestamp)); PyDict_SetItemString(udict, "size", PyLong_FromLongLong((PY_LONG_LONG)ma->size)); PyObject *usub_list; if ((usub_list = PyList_New(0)) == NULL) { PyDict_Clear(dict); return NULL; } PyDict_SetItemString(udict, "hashes", usub_list); for (GSList *subelem = ma->hashes; subelem; subelem = g_slist_next(subelem)) { LrMetalinkHash *metalinkhash = subelem->data; PyObject *tuple; if ((tuple = PyTuple_New(2)) == NULL) { PyDict_Clear(dict); return NULL; } PyTuple_SetItem(tuple, 0, PyStringOrNone_FromString(metalinkhash->type)); PyTuple_SetItem(tuple, 1, PyStringOrNone_FromString(metalinkhash->value)); PyList_Append(usub_list, tuple); } PyList_Append(sub_list, udict); } } return dict; }