99 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmfd_debug))
110 rpmfd_Fopen( PyObject *
s, PyObject *
args, PyObject * kwds)
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,
194 static PyObject * rpmfd_getattro(PyObject *
o, PyObject *
n)
197 return PyObject_GenericGetAttr(o, n);
200 static int rpmfd_setattro(PyObject *
o, PyObject *
n, PyObject * v)
203 return PyObject_GenericSetAttr(o, n, v);
208 static int rpmfd_init(
rpmfdObject * s, PyObject *args, PyObject *kwds)
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);
255 static PyObject * rpmfd_alloc(PyTypeObject * subtype,
int nitems)
258 PyObject * s = PyType_GenericAlloc(subtype, nitems);
261 fprintf(stderr,
"*** rpmfd_alloc(%p,%d) ret %p\n", subtype, nitems, s);
268 static rpmfdObject * rpmfd_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
274 if (rpmfd_init(s, args, kwds) < 0) {
280 fprintf(stderr,
"%p ++ fd %p\n", s, s->
fd);
288 static char rpmfd_doc[] =
295 PyObject_HEAD_INIT(&PyType_Type)
301 (destructor) rpmfd_dealloc,
313 (getattrofunc) rpmfd_getattro,
314 (setattrofunc) rpmfd_setattro,
318 #
if Py_TPFLAGS_HAVE_ITER
333 (initproc) rpmfd_init,
334 (allocfunc) rpmfd_alloc,
336 (freefunc) rpmfd_free,
char * xstrdup(const char *str)
struct rpmfdObject_s rpmfdObject
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)
return PyFile_FromFile(node->f, path, mode, closeCallback)
static PyObject *char * mode
const char * Fstrerror(FD_t fd)
strerror(3) clone.
fprintf(stderr,"--> %s(%p,%p,%p) sig %p sigp %p\n", __FUNCTION__, dig, t, rsactx, sig, sigp)
FD_t fdFree(FD_t fd, const char *msg)
static PyObject * rpmfd_Debug(rpmfdObject *s, PyObject *args, PyObject *kwds)
The FD_t File Handle data structure.
int Fclose(FD_t fd)
fclose(3) clone.
static struct PyMethodDef rpmfd_methods[]
int Ferror(FD_t fd)
ferror(3) clone.
static void * fdGetFp(FD_t fd)
rpmfdObject * rpmfd_Wrap(FD_t fd)
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.