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) {
140 char * kwlist[] = {
"debugLevel", NULL};
142 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmfi_debug))
153 return Py_BuildValue(
"i",
rpmfiFC(s->
fi));
161 return Py_BuildValue(
"i",
rpmfiFX(s->
fi));
169 return Py_BuildValue(
"i",
rpmfiDC(s->
fi));
177 return Py_BuildValue(
"i",
rpmfiDX(s->
fi));
243 const unsigned char * digest;
244 const char * fdigest;
249 if (digest == NULL || dlen == 0) {
252 fdigest = t = memset(
alloca(dlen), 0, dlen);
253 for (i = 0; i < dlen; i++, t += 2)
254 sprintf(t,
"%02x", digest[i]);
256 return Py_BuildValue(
"s",
xstrdup(fdigest));
324 return Py_BuildValue(
"s",
xstrdup(FClass));
332 {
"Debug", (PyCFunction)
rpmfi_Debug, METH_VARARGS|METH_KEYWORDS,
334 {
"FC", (PyCFunction)
rpmfi_FC, METH_NOARGS,
336 {
"FX", (PyCFunction)
rpmfi_FX, METH_NOARGS,
338 {
"DC", (PyCFunction)
rpmfi_DC, METH_NOARGS,
340 {
"DX", (PyCFunction)
rpmfi_DX, METH_NOARGS,
342 {
"BN", (PyCFunction)
rpmfi_BN, METH_NOARGS,
344 {
"DN", (PyCFunction)
rpmfi_DN, METH_NOARGS,
346 {
"FN", (PyCFunction)
rpmfi_FN, METH_NOARGS,
376 {
"next", (PyCFunction)
rpmfi_Next, METH_NOARGS,
377 "fi.next() -> (FN, FSize, FMode, FMtime, FFlags, FRdev, FInode, FNlink, FState, VFlags, FUser, FGroup, Digest))\n\
378 - Retrieve next file info tuple.\n" },
380 {
"NextD", (PyCFunction)rpmfi_NextD, METH_NOARGS,
382 {
"InitD", (PyCFunction)rpmfi_InitD, METH_NOARGS,
429 if (!PyInt_Check(key)) {
430 PyErr_SetString(PyExc_TypeError,
"integer expected");
434 ix = (int) PyInt_AsLong(key);
453 PyObject * to = NULL;
457 char * kwlist[] = {
"header",
"tag",
"flags", NULL};
460 fprintf(stderr,
"*** rpmfi_init(%p,%p,%p)\n", s, args, kwds);
462 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O!|Oi:rpmfi_init", kwlist,
469 PyErr_SetString(PyExc_KeyError,
"unknown header tag");
485 fprintf(stderr,
"%p -- fi %p\n", s, s->
fi);
488 PyObject_Del((PyObject *)s);
496 PyObject * s = PyType_GenericAlloc(subtype, nitems);
499 fprintf(stderr,
"*** rpmfi_alloc(%p,%d) ret %p\n", subtype, nitems, s);
506 static PyObject *
rpmfi_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
519 fprintf(stderr,
"%p ++ fi %p\n", s, s->
fi);
521 return (PyObject *)s;
532 PyVarObject_HEAD_INIT(&PyType_Type, 0)
549 PyObject_GenericGetAttr,
550 PyObject_GenericSetAttr,
554 #if Py_TPFLAGS_HAVE_ITER
601 PyObject * to = NULL;
605 char * kwlist[] = {
"tag",
"flags", NULL};
607 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|Oi:fiFromHeader", kwlist,
614 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.
const char bson_timestamp_t * ts
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)
const char const bson int mongo_write_concern int flags
static void rpmfi_free(rpmfiObject *s)
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.
const char const bson * key
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)