Imported Upstream version 4.14.1
[platform/upstream/rpm.git] / lib / rpmts.h
index c2e5681..e357247 100644 (file)
@@ -34,9 +34,10 @@ enum rpmtransFlags_e {
     RPMTRANS_FLAG_NOTRIGGERS   = (1 <<  4),    /*!< from --notriggers */
     RPMTRANS_FLAG_NODOCS       = (1 <<  5),    /*!< from --excludedocs */
     RPMTRANS_FLAG_ALLFILES     = (1 <<  6),    /*!< from --allfiles */
-    /* bit 7 unused */
+    RPMTRANS_FLAG_NOPLUGINS    = (1 <<  7),    /*!< from --noplugins */
     RPMTRANS_FLAG_NOCONTEXTS   = (1 <<  8),    /*!< from --nocontexts */
-    /* bits 9-15 unused */
+    RPMTRANS_FLAG_NOCAPS       = (1 <<  9),    /*!< from --nocaps */
+    /* bits 10-15 unused */
     RPMTRANS_FLAG_NOTRIGGERPREIN= (1 << 16),   /*!< from --notriggerprein */
     RPMTRANS_FLAG_NOPRE                = (1 << 17),    /*!< from --nopre */
     RPMTRANS_FLAG_NOPOST       = (1 << 18),    /*!< from --nopost */
@@ -45,8 +46,9 @@ enum rpmtransFlags_e {
     RPMTRANS_FLAG_NOPREUN      = (1 << 21),    /*!< from --nopreun */
     RPMTRANS_FLAG_NOPOSTUN     = (1 << 22),    /*!< from --nopostun */
     RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), /*!< from --notriggerpostun */
-    /* bits 24-25 unused */
-    RPMTRANS_FLAG_NOCOLLECTIONS        = (1 << 26),    /*!< from --nocollections */
+    RPMTRANS_FLAG_NOPRETRANS   = (1 << 24),    /*!< from --nopretrans */
+    RPMTRANS_FLAG_NOPOSTTRANS  = (1 << 25),    /*!< from --noposttrans */
+    /* bit 26 unused */
     RPMTRANS_FLAG_NOMD5                = (1 << 27),    /*!< from --nomd5 */
     RPMTRANS_FLAG_NOFILEDIGEST = (1 << 27),    /*!< from --nofiledigest (alias to --nomd5) */
     /* bits 28-29 unused */
@@ -60,7 +62,9 @@ typedef rpmFlags rpmtransFlags;
   ( RPMTRANS_FLAG_NOPRE |      \
     RPMTRANS_FLAG_NOPOST |     \
     RPMTRANS_FLAG_NOPREUN |    \
-    RPMTRANS_FLAG_NOPOSTUN     \
+    RPMTRANS_FLAG_NOPOSTUN |   \
+    RPMTRANS_FLAG_NOPRETRANS | \
+    RPMTRANS_FLAG_NOPOSTTRANS \
   )
 
 #define        _noTransTriggers        \
@@ -93,11 +97,11 @@ enum rpmVSFlags_e {
     RPMVSF_NEEDPAYLOAD = (1 <<  1),
     /* bit(s) 2-7 unused */
     RPMVSF_NOSHA1HEADER        = (1 <<  8),
-    RPMVSF_NOMD5HEADER = (1 <<  9),    /* unimplemented */
+    RPMVSF_NOSHA256HEADER = (1 <<  9),
     RPMVSF_NODSAHEADER = (1 << 10),
-    RPMVSF_NORSAHEADER = (1 << 11),    /* unimplemented */
+    RPMVSF_NORSAHEADER = (1 << 11),
     /* bit(s) 12-15 unused */
-    RPMVSF_NOSHA1      = (1 << 16),    /* unimplemented */
+    RPMVSF_NOPAYLOAD   = (1 << 16),
     RPMVSF_NOMD5       = (1 << 17),
     RPMVSF_NODSA       = (1 << 18),
     RPMVSF_NORSA       = (1 << 19)
@@ -108,8 +112,8 @@ typedef rpmFlags rpmVSFlags;
 
 #define        _RPMVSF_NODIGESTS       \
   ( RPMVSF_NOSHA1HEADER |      \
-    RPMVSF_NOMD5HEADER |       \
-    RPMVSF_NOSHA1 |            \
+    RPMVSF_NOSHA256HEADER |    \
+    RPMVSF_NOPAYLOAD | \
     RPMVSF_NOMD5 )
 
 #define        _RPMVSF_NOSIGNATURES    \
@@ -120,13 +124,13 @@ typedef rpmFlags rpmVSFlags;
 
 #define        _RPMVSF_NOHEADER        \
   ( RPMVSF_NOSHA1HEADER |      \
-    RPMVSF_NOMD5HEADER |       \
+    RPMVSF_NOSHA256HEADER |    \
     RPMVSF_NODSAHEADER |       \
     RPMVSF_NORSAHEADER )
 
 #define        _RPMVSF_NOPAYLOAD       \
-  ( RPMVSF_NOSHA1 |            \
-    RPMVSF_NOMD5 |             \
+  ( RPMVSF_NOMD5 |             \
+    RPMVSF_NOPAYLOAD |         \
     RPMVSF_NODSA |             \
     RPMVSF_NORSA )
 
@@ -153,6 +157,12 @@ typedef    enum rpmtsOpX_e {
     RPMTS_OP_MAX               = 17
 } rpmtsOpX;
 
+enum rpmtxnFlags_e {
+    RPMTXN_READ                = (1 << 0),
+    RPMTXN_WRITE       = (1 << 1),
+};
+typedef rpmFlags rpmtxnFlags;
+
 /** \ingroup rpmts
  * Perform dependency resolution on the transaction set.
  *
@@ -275,6 +285,15 @@ rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag,
                        const void * keyp, size_t keylen);
 
 /** \ingroup rpmts
+ * Import a header into the rpmdb
+ * @param txn          transaction handle
+ * @param h            header
+ * @param flags                (unused)
+ * @return              RPMRC_OK/RPMRC_FAIL
+ */
+rpmRC rpmtsImportHeader(rpmtxn txn, Header h, rpmFlags flags);
+
+/** \ingroup rpmts
  * Import public key packet(s).
  * @todo Implicit --update policy for gpg-pubkey headers.
  * @param ts            transaction set
@@ -544,6 +563,16 @@ int rpmtsAddInstallElement(rpmts ts, Header h,
                rpmRelocation * relocs);
 
 /** \ingroup rpmts
+ * Add package to be reinstalled to transaction set.
+ *
+ * @param ts           transaction set
+ * @param h            header
+ * @param key          package retrieval key (e.g. file name)
+ * @return             0 on success
+ */
+int rpmtsAddReinstallElement(rpmts ts, Header h, const fnpyKey key);
+
+/** \ingroup rpmts
  * Add package to be erased to transaction set.
  * @param ts           transaction set
  * @param h            header
@@ -552,6 +581,21 @@ int rpmtsAddInstallElement(rpmts ts, Header h,
  */
 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset);
 
+/** \ingroup rpmts
+ * Create a transaction (lock) handle
+ * @param ts           transaction set
+ * @param flags                flags
+ * @return             transaction handle
+ */
+rpmtxn rpmtxnBegin(rpmts ts, rpmtxnFlags flags);
+
+/** \ingroup rpmts
+ * Destroy transaction (lock) handle
+ * @param txn          transaction handle
+ * @return             NULL always
+ */
+rpmtxn rpmtxnEnd(rpmtxn txn);
+
 /** \ingroup rpmte
  * Destroy transaction element iterator.
  * @param tsi          transaction element iterator