19 #if Py_TPFLAGS_HAVE_ITER
39 PyObject * result = NULL;
62 result = PyTuple_New(13);
65 PyTuple_SET_ITEM(result, 0, Py_None);
67 PyTuple_SET_ITEM(result, 0, Py_BuildValue(
"s", FN));
68 PyTuple_SET_ITEM(result, 1, PyInt_FromLong(FSize));
69 PyTuple_SET_ITEM(result, 2, PyInt_FromLong(FMode));
70 PyTuple_SET_ITEM(result, 3, PyInt_FromLong(FMtime));
71 PyTuple_SET_ITEM(result, 4, PyInt_FromLong(FFlags));
72 PyTuple_SET_ITEM(result, 5, PyInt_FromLong(FRdev));
73 PyTuple_SET_ITEM(result, 6, PyInt_FromLong(FInode));
74 PyTuple_SET_ITEM(result, 7, PyInt_FromLong(FNlink));
75 PyTuple_SET_ITEM(result, 8, PyInt_FromLong(FState));
76 PyTuple_SET_ITEM(result, 9, PyInt_FromLong(VFlags));
79 PyTuple_SET_ITEM(result, 10, Py_None);
81 PyTuple_SET_ITEM(result, 10, Py_BuildValue(
"s", FUser));
84 PyTuple_SET_ITEM(result, 11, Py_None);
86 PyTuple_SET_ITEM(result, 11, Py_BuildValue(
"s", FGroup));
104 PyObject * result = NULL;
108 if (result == NULL) {
143 char * kwlist[] = {
"debugLevel", NULL};
145 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmfi_debug))
157 return Py_BuildValue(
"i",
rpmfiFC(s->
fi));
165 return Py_BuildValue(
"i",
rpmfiFX(s->
fi));
173 return Py_BuildValue(
"i",
rpmfiDC(s->
fi));
181 return Py_BuildValue(
"i",
rpmfiDX(s->
fi));
247 const unsigned char * digest;
248 const char * fdigest;
253 if (digest == NULL || dlen == 0) {
257 fdigest = t = memset(
alloca(dlen), 0, dlen);
258 for (i = 0; i < dlen; i++, t += 2)
259 sprintf(t,
"%02x", digest[i]);
261 return Py_BuildValue(
"s",
xstrdup(fdigest));
329 return Py_BuildValue(
"s",
xstrdup(FClass));
337 {
"Debug", (PyCFunction)
rpmfi_Debug, METH_VARARGS|METH_KEYWORDS,
339 {
"FC", (PyCFunction)
rpmfi_FC, METH_NOARGS,
341 {
"FX", (PyCFunction)
rpmfi_FX, METH_NOARGS,
343 {
"DC", (PyCFunction)
rpmfi_DC, METH_NOARGS,
345 {
"DX", (PyCFunction)
rpmfi_DX, METH_NOARGS,
347 {
"BN", (PyCFunction)
rpmfi_BN, METH_NOARGS,
349 {
"DN", (PyCFunction)
rpmfi_DN, METH_NOARGS,
351 {
"FN", (PyCFunction)
rpmfi_FN, METH_NOARGS,
381 {
"next", (PyCFunction)
rpmfi_Next, METH_NOARGS,
382 "fi.next() -> (FN, FSize, FMode, FMtime, FFlags, FRdev, FInode, FNlink, FState, VFlags, FUser, FGroup, Digest))\n\
383 - Retrieve next file info tuple.\n" },
385 {
"NextD", (PyCFunction)rpmfi_NextD, METH_NOARGS,
387 {
"InitD", (PyCFunction)rpmfi_InitD, METH_NOARGS,
423 return PyObject_GenericGetAttr(o, n);
429 return PyObject_GenericSetAttr(o, n, v);
446 if (!PyInt_Check(key)) {
447 PyErr_SetString(PyExc_TypeError,
"integer expected");
451 ix = (int) PyInt_AsLong(key);
470 PyObject * to = NULL;
474 char * kwlist[] = {
"header",
"tag",
"flags", NULL};
477 fprintf(stderr,
"*** rpmfi_init(%p,%p,%p)\n", s, args, kwds);
479 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O!|Oi:rpmfi_init", kwlist,
486 PyErr_SetString(PyExc_KeyError,
"unknown header tag");
502 fprintf(stderr,
"%p -- fi %p\n", s, s->
fi);
505 PyObject_Del((PyObject *)s);
513 PyObject * s = PyType_GenericAlloc(subtype, nitems);
516 fprintf(stderr,
"*** rpmfi_alloc(%p,%d) ret %p\n", subtype, nitems, s);
523 static PyObject *
rpmfi_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
536 fprintf(stderr,
"%p ++ fi %p\n", s, s->
fi);
538 return (PyObject *)s;
549 PyObject_HEAD_INIT(&PyType_Type)
572 #if Py_TPFLAGS_HAVE_ITER
619 PyObject * to = NULL;
623 char * kwlist[] = {
"tag",
"flags", NULL};
625 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|Oi:fiFromHeader", kwlist,
632 PyErr_SetString(PyExc_KeyError,
"unknown header tag");