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