Sanitize python object -> tag number exception handling
[platform/upstream/rpm.git] / lib / rpmvf.h
1 #ifndef _RPMVF_H
2 #define _RPMVF_H
3
4 /** \ingroup rpmvf
5  * \file lib/rpmvf.h
6  * @todo Add a more complete API...
7  */
8 #include <rpm/rpmtypes.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 /** \ingroup rpmvf
15  * Bit(s) for rpmVerifyFile() attributes and result.
16  */
17 typedef enum rpmVerifyAttrs_e {
18     RPMVERIFY_NONE      = 0,            /*!< */
19     RPMVERIFY_MD5       = (1 << 0),     /*!< from %verify(md5) - obsolete */
20     RPMVERIFY_FILEDIGEST= (1 << 0),     /*!< from %verify(filedigest) */
21     RPMVERIFY_FILESIZE  = (1 << 1),     /*!< from %verify(size) */
22     RPMVERIFY_LINKTO    = (1 << 2),     /*!< from %verify(link) */
23     RPMVERIFY_USER      = (1 << 3),     /*!< from %verify(user) */
24     RPMVERIFY_GROUP     = (1 << 4),     /*!< from %verify(group) */
25     RPMVERIFY_MTIME     = (1 << 5),     /*!< from %verify(mtime) */
26     RPMVERIFY_MODE      = (1 << 6),     /*!< from %verify(mode) */
27     RPMVERIFY_RDEV      = (1 << 7),     /*!< from %verify(rdev) */
28     RPMVERIFY_CAPS      = (1 << 8),     /*!< from %verify(caps) */
29         /* bits 9-14 unused, reserved for rpmVerifyAttrs */
30     RPMVERIFY_CONTEXTS  = (1 << 15),    /*!< verify: from --nocontexts */
31         /* bits 16-22 used in rpmVerifyFlags */
32         /* bits 23-27 used in rpmQueryFlags */
33     RPMVERIFY_READLINKFAIL= (1 << 28),  /*!< readlink failed */
34     RPMVERIFY_READFAIL  = (1 << 29),    /*!< file read failed */
35     RPMVERIFY_LSTATFAIL = (1 << 30),    /*!< lstat failed */
36     RPMVERIFY_LGETFILECONFAIL   = (1 << 31)     /*!< lgetfilecon failed */
37 } rpmVerifyAttrs;
38 #define RPMVERIFY_ALL           ~(RPMVERIFY_NONE)
39 #define RPMVERIFY_FAILURES      \
40   (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
41
42 /** \ingroup rpmvf
43  * Bit(s) to control rpmVerify() operation
44  */
45 typedef enum rpmVerifyFlags_e {
46     VERIFY_DEFAULT      = 0,            /*!< */
47     VERIFY_MD5          = (1 << 0),     /*!< from --nomd5 - obsolete */
48     VERIFY_FILEDIGEST   = (1 << 0),     /*!< from --nofiledigest */
49     VERIFY_SIZE         = (1 << 1),     /*!< from --nosize */
50     VERIFY_LINKTO       = (1 << 2),     /*!< from --nolinkto */
51     VERIFY_USER         = (1 << 3),     /*!< from --nouser */
52     VERIFY_GROUP        = (1 << 4),     /*!< from --nogroup */
53     VERIFY_MTIME        = (1 << 5),     /*!< from --nomtime */
54     VERIFY_MODE         = (1 << 6),     /*!< from --nomode */
55     VERIFY_RDEV         = (1 << 7),     /*!< from --nodev */
56     VERIFY_CAPS         = (1 << 8),     /*!< from --nocaps */
57         /* bits 9-14 unused, reserved for rpmVerifyAttrs */
58     VERIFY_CONTEXTS     = (1 << 15),    /*!< verify: from --nocontexts */
59     VERIFY_FILES        = (1 << 16),    /*!< verify: from --nofiles */
60     VERIFY_DEPS         = (1 << 17),    /*!< verify: from --nodeps */
61     VERIFY_SCRIPT       = (1 << 18),    /*!< verify: from --noscripts */
62     VERIFY_DIGEST       = (1 << 19),    /*!< verify: from --nodigest */
63     VERIFY_SIGNATURE    = (1 << 20),    /*!< verify: from --nosignature */
64     VERIFY_PATCHES      = (1 << 21),    /*!< verify: from --nopatches */
65     VERIFY_HDRCHK       = (1 << 22),    /*!< verify: from --nohdrchk */
66     VERIFY_FOR_LIST     = (1 << 23),    /*!< query:  from --list */
67     VERIFY_FOR_STATE    = (1 << 24),    /*!< query:  from --state */
68     VERIFY_FOR_DOCS     = (1 << 25),    /*!< query:  from --docfiles */
69     VERIFY_FOR_CONFIG   = (1 << 26),    /*!< query:  from --configfiles */
70     VERIFY_FOR_DUMPFILES= (1 << 27)     /*!< query:  from --dump */
71         /* bits 28-31 used in rpmVerifyAttrs */
72 } rpmVerifyFlags;
73
74 #define VERIFY_ATTRS    \
75   ( VERIFY_FILEDIGEST | VERIFY_SIZE | VERIFY_LINKTO | VERIFY_USER | VERIFY_GROUP | \
76     VERIFY_MTIME | VERIFY_MODE | VERIFY_RDEV | VERIFY_CONTEXTS | VERIFY_CAPS )
77 #define VERIFY_ALL      \
78   ( VERIFY_ATTRS | VERIFY_FILES | VERIFY_DEPS | VERIFY_SCRIPT | VERIFY_DIGEST |\
79     VERIFY_SIGNATURE | VERIFY_HDRCHK )
80
81 /** \ingroup rpmvf
82  * Verify file attributes (including digest).
83  * @todo gnorpm and python bindings prevent this from being static.
84  * @param ts            transaction set
85  * @param fi            file info (with linked header and current file index)
86  * @retval *res         bit(s) returned to indicate failure
87  * @param omitMask      bit(s) to disable verify checks
88  * @return              0 on success (or not installed), 1 on error
89  */
90 int rpmVerifyFile(const rpmts ts, rpmfi fi,
91                 rpmVerifyAttrs * res, rpmVerifyAttrs omitMask);
92
93
94 #ifdef __cplusplus
95 }
96 #endif
97
98 #endif /* _RPMTYPES_H */