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");
rpmuint32_t rpmfiFFlags(rpmfi fi)
Return current file flags from file info set.
rpmfiObject * hdr_fiFromHeader(PyObject *s, PyObject *args, PyObject *kwds)
int rpmfiDX(rpmfi fi)
Return current directory index from file info set.
static PyObject * rpmfi_VFlags(rpmfiObject *s)
rpmuint32_t rpmfiVFlags(rpmfi fi)
Return current file verify flags from file info set.
static int rpmfi_setattro(PyObject *o, PyObject *n, PyObject *v)
static PyObject * rpmfi_FUser(rpmfiObject *s)
rpmuint32_t rpmfiFNlink(rpmfi fi)
Return (calculated) current file nlink count from file info set.
static PyObject * rpmfi_iter(rpmfiObject *s)
static int rpmfi_print(rpmfiObject *s, FILE *fp, int flags)
char * xstrdup(const char *str)
static PyObject * rpmfi_FFlags(rpmfiObject *s)
static PyObject * rpmfi_Digest(rpmfiObject *s)
static void rpmfi_dealloc(rpmfiObject *s)
static int rpmfi_init(rpmfiObject *s, PyObject *args, PyObject *kwds)
int rpmfiSetFX(rpmfi fi, int fx)
Set current file index in file info set.
static PyObject * rpmfi_DX(rpmfiObject *s)
static PyObject * rpmfi_FC(rpmfiObject *s)
rpmuint16_t rpmfiFRdev(rpmfi fi)
Return current file rdev from file info set.
static PyObject * rpmfi_Next(rpmfiObject *s)
static PyObject * rpmfi_FState(rpmfiObject *s)
rpmfi rpmfiFree(rpmfi fi)
Destroy a file info set.
const char * rpmfiFN(rpmfi fi)
Return current file name from file info set.
static PyObject * rpmfi_subscript(rpmfiObject *s, PyObject *key)
const char * rpmfiFUser(rpmfi fi)
Return current file owner from file info set.
const char * rpmfiFGroup(rpmfi fi)
Return current file group from file info set.
rpmfi rpmfiNew(const void *_ts, Header h, rpmTag tagN, int flags)
Create and load a file info set.
rpmuint32_t rpmfiFColor(rpmfi fi)
Return current file color bits from file info set.
const char * rpmfiBN(rpmfi fi)
Return current base name from file info set.
static PyObject * rpmfi_DC(rpmfiObject *s)
int rpmfiFC(rpmfi fi)
Return file count from file info set.
rpmuint32_t rpmfiFSize(rpmfi fi)
Return current file size from file info set.
static PyMappingMethods rpmfi_as_mapping
static PyObject * rpmfi_FX(rpmfiObject *s)
static PyObject * rpmfi_BN(rpmfiObject *s)
static PyObject * rpmfi_FSize(rpmfiObject *s)
const char * rpmfiDN(rpmfi fi)
Return current directory name from file info set.
struct rpmfi_s * rpmfi
File info tag sets from a header, so that a header can be discarded early.
rpmuint16_t rpmfiFMode(rpmfi fi)
Return current file mode from file info set.
static PyObject * rpmfi_FRdev(rpmfiObject *s)
rpmfi fiFromFi(rpmfiObject *s)
rpmuint32_t rpmfiFMtime(rpmfi fi)
Return current file modify time from file info set.
static PyObject * rpmfi_iternext(rpmfiObject *s)
struct rpmfiObject_s rpmfiObject
static struct PyMethodDef rpmfi_methods[]
static PyObject * rpmfi_FColor(rpmfiObject *s)
static void rpmfi_free(rpmfiObject *s)
static PyObject * rpmfi_getattro(PyObject *o, PyObject *n)
static int rpmfi_length(rpmfiObject *s)
static PyObject * rpmfi_Debug(rpmfiObject *s, PyObject *args, PyObject *kwds)
int rpmfiNext(rpmfi fi)
Return next file iterator index.
int rpmfiDC(rpmfi fi)
Return directory count from file info set.
rpmfi rpmfiInit(rpmfi fi, int fx)
Initialize file iterator index.
const char * rpmfiFClass(rpmfi fi)
Return current file class from file info set.
static PyObject * rpmfi_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
const char * rpmfiFLink(rpmfi fi)
Return current file linkto (i.e.
static PyObject * rpmfi_FLink(rpmfiObject *s)
struct rpmts_s * rpmts
The RPM Transaction Set.
rpmfileState rpmfiFState(rpmfi fi)
Return current file state from file info set.
static PyObject * rpmfi_FMode(rpmfiObject *s)
rpmfiObject * rpmfi_Wrap(rpmfi fi)
const unsigned char * rpmfiDigest(rpmfi fi, int *algop, size_t *lenp)
Return current file (binary) digest from file info set.
static PyObject * rpmfi_DN(rpmfiObject *s)
static PyObject * rpmfi_FClass(rpmfiObject *s)
rpmuint32_t rpmfiFInode(rpmfi fi)
Return current file inode from file info set.
static PyObject * rpmfi_FMtime(rpmfiObject *s)
int rpmfiFX(rpmfi fi)
Return current file index from file info set.
static PyObject * rpmfi_FN(rpmfiObject *s)
static PyObject * rpmfi_FGroup(rpmfiObject *s)
static PyObject * rpmfi_alloc(PyTypeObject *subtype, int nitems)