rust: update manual helpers
authorLuca BRUNO <luca.bruno@coreos.com>
Mon, 24 Oct 2022 16:01:57 +0000 (16:01 +0000)
committerLuca BRUNO <luca.bruno@coreos.com>
Wed, 26 Oct 2022 09:26:56 +0000 (09:26 +0000)
rust-bindings/src/repo_checkout_at_options/mod.rs

index 9e47017de7df1fa6c37fd16a5fb0f3a6b9c3995b..b0ded2c77c2d3f6a996fe4984255681f334ed2b4 100644 (file)
@@ -31,6 +31,9 @@ pub struct RepoCheckoutAtOptions {
     /// Copy zero-sized files rather than hardlinking.
     #[cfg(any(feature = "v2018_9", feature = "dox"))]
     pub force_copy_zerosized: bool,
+    /// Enable overlayfs whiteout extraction into char 0:0 devices.
+    #[cfg(any(feature = "v2022_6", feature = "dox"))]
+    pub process_passthrough_whiteouts: bool,
     /// Only check out this subpath.
     pub subpath: Option<PathBuf>,
     /// A cache from device, inode pairs to checksums.
@@ -68,6 +71,8 @@ impl Default for RepoCheckoutAtOptions {
             bareuseronly_dirs: false,
             #[cfg(feature = "v2018_9")]
             force_copy_zerosized: false,
+            #[cfg(feature = "v2022_6")]
+            process_passthrough_whiteouts: false,
             subpath: None,
             devino_to_csum_cache: None,
             #[cfg(feature = "v2018_2")]
@@ -124,6 +129,11 @@ impl<'a> ToGlibPtr<'a, *const ffi::OstreeRepoCheckoutAtOptions> for RepoCheckout
             options.force_copy_zerosized = self.force_copy_zerosized.into_glib();
         }
 
+        #[cfg(feature = "v2022_6")]
+        {
+            options.process_passthrough_whiteouts = self.process_passthrough_whiteouts.into_glib();
+        }
+
         // We keep these complex values alive by returning them in our Stash. Technically, some of
         // these are being kept alive by `self` already, but it's better to be consistent here.
         let subpath = self.subpath.to_glib_none();
@@ -191,7 +201,9 @@ mod tests {
             assert_eq!((*ptr).bareuseronly_dirs, GFALSE);
             #[cfg(feature = "v2018_9")]
             assert_eq!((*ptr).force_copy_zerosized, GFALSE);
-            assert_eq!((*ptr).unused_bools, [GFALSE; 4]);
+            #[cfg(feature = "v2022_6")]
+            assert_eq!((*ptr).process_passthrough_whiteouts, GFALSE);
+            assert_eq!((*ptr).unused_bools, [GFALSE; 3]);
             assert_eq!((*ptr).subpath, ptr::null());
             assert_eq!((*ptr).devino_to_csum_cache, ptr::null_mut());
             assert_eq!((*ptr).unused_ints, [0; 6]);
@@ -221,6 +233,8 @@ mod tests {
             bareuseronly_dirs: true,
             #[cfg(feature = "v2018_9")]
             force_copy_zerosized: true,
+            #[cfg(feature = "v2022_6")]
+            process_passthrough_whiteouts: true,
             subpath: Some("sub/path".into()),
             devino_to_csum_cache: Some(RepoDevInoCache::new()),
             #[cfg(feature = "v2018_2")]
@@ -251,7 +265,9 @@ mod tests {
             assert_eq!((*ptr).bareuseronly_dirs, GTRUE);
             #[cfg(feature = "v2018_9")]
             assert_eq!((*ptr).force_copy_zerosized, GTRUE);
-            assert_eq!((*ptr).unused_bools, [GFALSE; 4]);
+            #[cfg(feature = "v2022_6")]
+            assert_eq!((*ptr).process_passthrough_whiteouts, GTRUE);
+            assert_eq!((*ptr).unused_bools, [GFALSE; 3]);
             assert_eq!(
                 CStr::from_ptr((*ptr).subpath),
                 CString::new("sub/path").unwrap().as_c_str()