# python/rpmmodule.c File Reference

`#include <errno.h>`
`#include <fcntl.h>`
`#include <time.h>`
`#include <sys/stat.h>`
`#include <sys/time.h>`
`#include <unistd.h>`
`#include <glob.h>`
`#include <dirent.h>`
`#include <locale.h>`
`#include "Python.h"`
`#include "rpmio_internal.h"`
`#include "rpmcli.h"`
`#include "misc.h"`
`#include "header_internal.h"`
`#include "upgrade.h"`

Go to the source code of this file.

## Data Structures

struct | hdrObject_s
struct | rpmdbObject_s
struct | rpmdbMIObject_s
struct | rpmtransObject_s
struct | tsCallbackType
struct | FDlist_t

## Class: header

static struct PyMethodDef | hdrMethods []
static PyMappingMethods | hdrAsMapping
static PyTypeObject | hdrType
static PyObject * | hdrKeyList (hdrObject *s, PyObject *args)
static PyObject * | hdrUnload (hdrObject *s, PyObject *args, PyObject *keywords)
static PyObject * | hdrVerifyFile (hdrObject *s, PyObject *args)
| Returns a list of these tuples for each item that failed: (attr_name, correctValue, currentValue) It should be passed the file number to verify.
static PyObject * | hdrExpandFilelist (hdrObject *s, PyObject *args)
static PyObject * | hdrCompressFilelist (hdrObject *s, PyObject *args)
static void | mungeFilelist (Header h)
static PyObject * | rhnUnload (hdrObject *s, PyObject *args)
static PyObject * | hdrFullFilelist (hdrObject *s, PyObject *args)
static PyObject * | hdrSprintf (hdrObject *s, PyObject *args)
static PyObject * | hdrGetAttr (hdrObject *s, char *name)
static void | hdrDealloc (hdrObject *s)
static long | tagNumFromPyObject (PyObject *item)
static PyObject * | hdrSubscript (hdrObject *s, PyObject *item)

## Class: rpmdbMatchIterator

static struct PyMethodDef | rpmdbMIMethods []
static PyTypeObject | rpmdbMIType
static PyObject * | rpmdbMINext (rpmdbMIObject *s, PyObject *args)
static PyObject * | rpmdbMIGetAttr (rpmdbObject *s, char *name)
static void | rpmdbMIDealloc (rpmdbMIObject *s)

## Class: rpmdb

static struct PyMethodDef | rpmdbMethods []
static PyMappingMethods | rpmdbAsMapping
static PyTypeObject | rpmdbType
static PyObject * | rpmdbFirst (rpmdbObject *s, PyObject *args)
static PyObject * | rpmdbNext (rpmdbObject *s, PyObject *args)
static PyObject * | handleDbResult (rpmdbMatchIterator mi)
static PyObject * | rpmdbByFile (rpmdbObject *s, PyObject *args)
static PyObject * | rpmdbByName (rpmdbObject *s, PyObject *args)
static PyObject * | rpmdbByProvides (rpmdbObject *s, PyObject *args)
static rpmdbMIObject * | py_rpmdbInitIterator (rpmdbObject *s, PyObject *args)
static PyObject * | rpmdbGetAttr (rpmdbObject *s, char *name)
static void | rpmdbDealloc (rpmdbObject *s)
static int | rpmdbLength (rpmdbObject *s)
static hdrObject * | rpmdbSubscript (rpmdbObject *s, PyObject *key)

## Class: rpmtrans

static Header | transactionSetHeader = NULL
static struct PyMethodDef | rpmtransMethods []
static PyTypeObject | rpmtransType
static PyObject * | rpmtransAdd (rpmtransObject *s, PyObject *args)
static PyObject * | rpmtransRemove (rpmtransObject *s, PyObject *args)
static PyObject * | rpmtransDepCheck (rpmtransObject *s, PyObject *args)
static PyObject * | rpmtransOrder (rpmtransObject *s, PyObject *args)
static PyObject * | py_rpmtransGetKeys (rpmtransObject *s, PyObject *args)
static void * | tsCallback (const void *hd, const rpmCallbackType what, const unsigned long amount, const unsigned long total, const void *pkgKey, rpmCallbackData data)
static PyObject * | rpmtransRun (rpmtransObject *s, PyObject *args)
static PyObject * | rpmtransGetAttr (rpmtransObject *o, char *name)
static void | rpmtransDealloc (PyObject *o)
static int | rpmtransSetAttr (rpmtransObject *o, char *name, PyObject *val)

## Module: rpm

static PyObject * | errorCB = NULL
static PyObject * | errorData = NULL
static FDlist * | fdhead = NULL
static FDlist * | fdtail = NULL
static PyMethodDef | rpmModuleMethods []
typedef struct FDlist_t | FDlist
void | initrpm (void)
static PyObject * | rpmtransCreate (PyObject *self, PyObject *args)
static PyObject * | doAddMacro (PyObject *self, PyObject *args)
static PyObject * | doDelMacro (PyObject *self, PyObject *args)
static PyObject * | archScore (PyObject *self, PyObject *args)
static int | psGetArchScore (Header h)
static int | pkgCompareVer (void *first, void *second)
static void | pkgSort (struct pkgSet *psp)
static PyObject * | findUpgradeSet (PyObject *self, PyObject *args)
static PyObject * | rpmHeaderFromPackage (PyObject *self, PyObject *args)
static PyObject * | hdrLoad (PyObject *self, PyObject *args)
static PyObject * | rhnLoad (PyObject *self, PyObject *args)
static PyObject * | rpmInitDB (PyObject *self, PyObject *args)
static rpmdbObject * | rpmOpenDB (PyObject *self, PyObject *args)
static PyObject * | rebuildDB (PyObject *self, PyObject *args)
static PyObject * | rpmReadHeaders (FD_t fd)
static PyObject * | rpmHeaderFromFD (PyObject *self, PyObject *args)
static PyObject * | rpmHeaderFromFile (PyObject *self, PyObject *args)
static int | rpmMergeHeaders (PyObject *list, FD_t fd, int matchTag)
| This assumes the order of list matches the order of the new headers, and throws an exception if that isn't true.
static PyObject * | rpmMergeHeadersFromFD (PyObject *self, PyObject *args)
static void | errorcb (void)
static PyObject * | errorSetCallback (PyObject *self, PyObject *args)
static PyObject * | errorString (PyObject *self, PyObject *args)
static PyObject * | versionCompare (PyObject *self, PyObject *args)
static PyObject * | labelCompare (PyObject *self, PyObject *args)
static PyObject * | checkSig (PyObject *self, PyObject *args)
static PyObject * | getTsHeader (PyObject *self, PyObject *args)
static PyObject * | setVerbosity (PyObject *self, PyObject *args)
static int | closeCallback (FILE *f)
static PyObject * | doFopen (PyObject *self, PyObject *args)

## Defines

#define | REGISTER_ENUM(val)

## Typedefs

typedef struct rpmdbObject_s | rpmdbObject
typedef struct rpmdbMIObject_s | rpmdbMIObject
typedef struct rpmtransObject_s | rpmtransObject
typedef struct hdrObject_s | hdrObject

## Functions

static Header | headerAllocated (Header h)
int | mdfile (const char *fn, unsigned char *digest)
int | rpmvercmp (const char *one, const char *two)
| Segmented string compare for version and/or release.

## Variables

int | _rpmio_debug
static PyObject * | pyrpmError

## Detailed Description

Definition in file rpmmodule.c.

## Define Documentation

#define REGISTER_ENUM | ( | val |  | ) |

Value:

    PyDict_SetItemString(d, #val, o=PyInt_FromLong( val )); \
        Py_DECREF(o);

## Typedef Documentation

typedef struct FDlist_t FDlist

Definition at line 2381 of file rpmmodule.c.

## Function Documentation

static PyObject* archScore | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1704 of file rpmmodule.c.

static PyObject* checkSig | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2331 of file rpmmodule.c.

static int closeCallback | ( | FILE * | f | ) | `[static]`

Definition at line 2402 of file rpmmodule.c.

static PyObject* doAddMacro | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1676 of file rpmmodule.c.

static PyObject* doDelMacro | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1690 of file rpmmodule.c.

static PyObject* doFopen | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2433 of file rpmmodule.c.

static void errorcb | ( | void |  | ) | `[static]`

Definition at line 2225 of file rpmmodule.c.

static PyObject* errorSetCallback | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2244 of file rpmmodule.c.

static PyObject* errorString | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2284 of file rpmmodule.c.

static PyObject* findUpgradeSet | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1786 of file rpmmodule.c.

static PyObject* getTsHeader | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2348 of file rpmmodule.c.

static PyObject* handleDbResult | ( | rpmdbMatchIterator | mi | ) | `[static]`

Definition at line 1010 of file rpmmodule.c.

static PyObject* hdrLoad | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1882 of file rpmmodule.c.

static Header headerAllocated | ( | Header | h | ) | `[inline, static]`

Definition at line 25 of file rpmmodule.c.

void initrpm | ( | void |  | ) |

Definition at line 2511 of file rpmmodule.c.

static PyObject* labelCompare | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2300 of file rpmmodule.c.

int mdfile | ( | const char * | fn,
|  | unsigned char * | digest |
| ) |  |  |

static int pkgCompareVer | ( | void * | first,
|  | void * | second |
| ) |  |  | `[static]`

Definition at line 1731 of file rpmmodule.c.

static void pkgSort | ( | struct pkgSet * | psp | ) | `[static]`

Definition at line 1753 of file rpmmodule.c.

static int psGetArchScore | ( | Header | h | ) | `[static]`

Definition at line 1718 of file rpmmodule.c.

static rpmdbMIObject* py_rpmdbInitIterator | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1060 of file rpmmodule.c.

static PyObject* rebuildDB | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2039 of file rpmmodule.c.

static PyObject* rhnLoad | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1919 of file rpmmodule.c.

static PyObject* rpmdbByFile | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1029 of file rpmmodule.c.

static PyObject* rpmdbByName | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1039 of file rpmmodule.c.

static PyObject* rpmdbByProvides | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1049 of file rpmmodule.c.

static void rpmdbDealloc | ( | rpmdbObject * | s | ) | `[static]`

Definition at line 1109 of file rpmmodule.c.

static PyObject* rpmdbFirst | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 949 of file rpmmodule.c.

static PyObject* rpmdbGetAttr | ( | rpmdbObject * | s,
|  | char * | name |
| ) |  |  | `[static]`

Definition at line 1103 of file rpmmodule.c.

static int rpmdbLength | ( | rpmdbObject * | s | ) | `[static]`

Definition at line 1123 of file rpmmodule.c.

static PyObject* rpmdbNext | ( | rpmdbObject * | s,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 988 of file rpmmodule.c.

static hdrObject* rpmdbSubscript | ( | rpmdbObject * | s,
|  | PyObject * | key |
| ) |  |  | `[static]`

Definition at line 1141 of file rpmmodule.c.

static PyObject* rpmHeaderFromFD | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2091 of file rpmmodule.c.

static PyObject* rpmHeaderFromFile | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2107 of file rpmmodule.c.

static PyObject* rpmHeaderFromPackage | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1837 of file rpmmodule.c.

static PyObject* rpmInitDB | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1983 of file rpmmodule.c.

static int rpmMergeHeaders | ( | PyObject * | list,
|  | FD_t | fd,
|  | int | matchTag |
| ) |  |  | `[static]`

This assumes the order of list matches the order of the new headers, and throws an exception if that isn't true.

Definition at line 2130 of file rpmmodule.c.

static PyObject* rpmMergeHeadersFromFD | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2191 of file rpmmodule.c.

static rpmdbObject* rpmOpenDB | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2007 of file rpmmodule.c.

static PyObject* rpmReadHeaders | ( | FD_t | fd | ) | `[static]`

Definition at line 2049 of file rpmmodule.c.

static PyObject* rpmtransCreate | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 1652 of file rpmmodule.c.

static PyObject* setVerbosity | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2367 of file rpmmodule.c.

static PyObject* versionCompare | ( | PyObject * | self,
|  | PyObject * | args |
| ) |  |  | `[static]`

Definition at line 2290 of file rpmmodule.c.

## Variable Documentation

int _rpmio_debug

Definition at line 123 of file rpmio.c.

PyObject* errorCB = NULL`[static]`

Definition at line 2221 of file rpmmodule.c.

PyObject * errorData = NULL`[static]`

Definition at line 2221 of file rpmmodule.c.

FDlist* fdhead = NULL`[static]`

Definition at line 2394 of file rpmmodule.c.

FDlist* fdtail = NULL`[static]`

Definition at line 2398 of file rpmmodule.c.

PyMappingMethods rpmdbAsMapping `[static]`

Initial value:

     {
            (inquiry) rpmdbLength,
            (binaryfunc) rpmdbSubscript,
            (objobjargproc)0,
    }

Definition at line 1175 of file rpmmodule.c.

struct PyMethodDef rpmdbMethods[]`[static]`

Initial value:

     {
            {"firstkey",        (PyCFunction) rpmdbFirst,   1 },
            {"nextkey",         (PyCFunction) rpmdbNext,    1 },
            {"findbyfile",      (PyCFunction) rpmdbByFile, 1 },
            {"findbyname",      (PyCFunction) rpmdbByName, 1 },
            {"findbyprovides",  (PyCFunction) rpmdbByProvides, 1 },
            {"match",           (PyCFunction) py_rpmdbInitIterator, 1 },
            {NULL,          NULL}
    }

Definition at line 1091 of file rpmmodule.c.

PyTypeObject rpmdbType `[static]`

Initial value:

     {
            PyObject_HEAD_INIT(NULL)
            0,
            "rpmdb",
            sizeof(rpmdbObject),
            0,
            (destructor) rpmdbDealloc,
            0,
            (getattrfunc) rpmdbGetAttr,
            0,
            0,
            0,
            0,
            0,

            &rpmdbAsMapping,

    }

Definition at line 1184 of file rpmmodule.c.

PyMethodDef rpmModuleMethods[]`[static]`

Initial value:

     {
        { "TransactionSet", (PyCFunction) rpmtransCreate, METH_VARARGS, NULL },
        { "addMacro", (PyCFunction) doAddMacro, METH_VARARGS, NULL },
        { "delMacro", (PyCFunction) doDelMacro, METH_VARARGS, NULL },
        { "archscore", (PyCFunction) archScore, METH_VARARGS, NULL },
        { "findUpgradeSet", (PyCFunction) findUpgradeSet, METH_VARARGS, NULL },
        { "headerFromPackage", (PyCFunction) rpmHeaderFromPackage, METH_VARARGS, NULL },
        { "headerLoad", (PyCFunction) hdrLoad, METH_VARARGS, NULL },
        { "rhnLoad", (PyCFunction) rhnLoad, METH_VARARGS, NULL },
        { "initdb", (PyCFunction) rpmInitDB, METH_VARARGS, NULL },
        { "opendb", (PyCFunction) rpmOpenDB, METH_VARARGS, NULL },
        { "rebuilddb", (PyCFunction) rebuildDB, METH_VARARGS, NULL },
        { "mergeHeaderListFromFD", (PyCFunction) rpmMergeHeadersFromFD, METH_VARARGS, NULL },
        { "readHeaderListFromFD", (PyCFunction) rpmHeaderFromFD, METH_VARARGS, NULL },
        { "readHeaderListFromFile", (PyCFunction) rpmHeaderFromFile, METH_VARARGS, NULL },
        { "errorSetCallback", (PyCFunction) errorSetCallback, METH_VARARGS, NULL },
        { "errorString", (PyCFunction) errorString, METH_VARARGS, NULL },
        { "versionCompare", (PyCFunction) versionCompare, METH_VARARGS, NULL },
        { "labelCompare", (PyCFunction) labelCompare, METH_VARARGS, NULL },
        { "checksig", (PyCFunction) checkSig, METH_VARARGS, NULL },
        { "getTransactionCallbackHeader", (PyCFunction) getTsHeader, METH_VARARGS, NULL },

        { "setVerbosity", (PyCFunction) setVerbosity, METH_VARARGS, NULL },
        { NULL }
    }

Definition at line 2483 of file rpmmodule.c.