Sanitize python object -> tag number exception handling
[platform/upstream/rpm.git] / lib / hdrNVR.c
1 /** \ingroup rpmdb
2  * \file lib/hdrNVR.c
3  */
4
5 #include "system.h"
6
7 #include <rpm/rpmtypes.h>
8 #include <rpm/header.h>
9 #include <rpm/rpmstring.h>
10
11 #include "debug.h"
12
13 static int NEVRA(Header h, const char **np,
14                  uint32_t **ep, const char **vp, const char **rp,
15                  const char **ap)
16 {
17     if (np) *np = headerGetString(h, RPMTAG_NAME);
18     if (vp) *vp = headerGetString(h, RPMTAG_VERSION);
19     if (rp) *rp = headerGetString(h, RPMTAG_RELEASE);
20     if (ap) *ap = headerGetString(h, RPMTAG_ARCH);
21     if (ep) {
22         struct rpmtd_s td;
23         headerGet(h, RPMTAG_EPOCH, &td, HEADERGET_DEFAULT);
24         *ep = rpmtdGetUint32(&td);
25     }
26     return 0;
27 }
28
29 int headerNVR(Header h, const char **np, const char **vp, const char **rp)
30 {
31     return NEVRA(h, np, NULL, vp, rp, NULL);
32 }
33
34 int headerNEVRA(Header h, const char **np,
35                 uint32_t **ep, const char **vp, const char **rp,
36                 const char **ap)
37 {
38     return NEVRA(h, np, ep, vp, rp, ap);
39 }
40
41 static char *getNEVRA(Header h, rpmTag tag, const char **np)
42 {
43     if (np) *np = headerGetString(h, RPMTAG_NAME);
44     return headerGetAsString(h, tag);
45 }
46
47 char * headerGetNEVR(Header h, const char ** np)
48 {
49     return getNEVRA(h, RPMTAG_NEVR, np);
50 }
51
52 char * headerGetNEVRA(Header h, const char ** np)
53 {
54     return getNEVRA(h, RPMTAG_NEVRA, np);
55 }
56
57 char * headerGetEVR(Header h, const char ** np)
58 {
59     return getNEVRA(h, RPMTAG_EVR, np);
60 }
61
62 rpm_color_t headerGetColor(Header h)
63 {
64     return headerGetNumber(h, RPMTAG_HEADERCOLOR);
65 }
66
67 int headerIsSource(Header h)
68 {
69     return (!headerIsEntry(h, RPMTAG_SOURCERPM));
70 }
71