97 char * kwlist[] = {
"debugLevel", NULL};
99 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmfd_debug))
115 char * mode =
"r.fdio";
117 char * kwlist[] = {
"path",
"mode", NULL};
119 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s|s", kwlist, &path, &mode))
144 PyErr_SetString(
pyrpmError,
"FD_t has no FILE*");
152 fdhead = fdtail = node;
171 {
"Debug", (PyCFunction)
rpmfd_Debug, METH_VARARGS|METH_KEYWORDS,
173 {
"Fopen", (PyCFunction)
rpmfd_Fopen, METH_VARARGS|METH_KEYWORDS,
197 return PyObject_GenericGetAttr(o, n);
203 return PyObject_GenericSetAttr(o, n, v);
213 char * kwlist[] = {
"path",
"mode", NULL};
216 fprintf(stderr,
"*** rpmfd_init(%p,%p,%p)\n", s, args, kwds);
218 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s|s:rpmfd_init", kwlist,
246 fprintf(stderr,
"%p -- fd %p\n", s, s->
fd);
250 PyObject_Del((PyObject *)s);
258 PyObject * s = PyType_GenericAlloc(subtype, nitems);
261 fprintf(stderr,
"*** rpmfd_alloc(%p,%d) ret %p\n", subtype, nitems, s);
280 fprintf(stderr,
"%p ++ fd %p\n", s, s->
fd);
295 PyObject_HEAD_INIT(&PyType_Type)
318 #
if Py_TPFLAGS_HAVE_ITER
static void rpmfd_dealloc(rpmfdObject *s)
static int rpmfd_init(rpmfdObject *s, PyObject *args, PyObject *kwds)
static void rpmfd_free(rpmfdObject *s)
static void * fdGetFp(FD_t fd)
char * xstrdup(const char *str)
FD_t Fopen(const char *path, const char *_fmode)
fopen(3) clone.
FD_t fdLink(void *cookie, const char *msg)
static int closeCallback(FILE *f)
static PyObject * rpmfd_Fopen(PyObject *s, PyObject *args, PyObject *kwds)
const char * Fstrerror(FD_t fd)
strerror(3) clone.
FD_t fdFree(FD_t fd, const char *msg)
rpmfdObject * rpmfd_Wrap(FD_t fd)
static PyObject * rpmfd_Debug(rpmfdObject *s, PyObject *args, PyObject *kwds)
The FD_t File Handle data structure.
static PyObject * rpmfd_getattro(PyObject *o, PyObject *n)
int Fclose(FD_t fd)
fclose(3) clone.
static int rpmfd_setattro(PyObject *o, PyObject *n, PyObject *v)
int Ferror(FD_t fd)
ferror(3) clone.
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
struct rpmfdObject_s rpmfdObject
static struct PyMethodDef rpmfd_methods[]
static PyObject * rpmfd_alloc(PyTypeObject *subtype, int nitems)
static rpmfdObject * rpmfd_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)