Idempotent delete operation for OstreeKernelArgs
authorRafael Garcia Ruiz <rafael.garcia@collabora.com>
Fri, 18 Nov 2022 17:24:01 +0000 (18:24 +0100)
committerRafael Garcia Ruiz <rafael.garcia@collabora.com>
Fri, 18 Nov 2022 19:26:28 +0000 (20:26 +0100)
ostree_kernel_args_delete_if_present checks if an argument is present
in OstreeKernelArgs and delete it.

Signed-off-by: Rafael Garcia Ruiz <rafael.garcia@collabora.com>
apidoc/ostree-sections.txt
rust-bindings/sys/src/lib.rs
src/libostree/libostree-devel.sym
src/libostree/ostree-kernel-args.c
src/libostree/ostree-kernel-args.h

index d9f9120856a76702b1b0604dcb36599a7e481e2f..49f2748b0f87d9c2903a43a27d432c01909ffa41 100644 (file)
@@ -739,6 +739,7 @@ ostree_kernel_args_from_string
 ostree_kernel_args_to_strv
 ostree_kernel_args_to_string
 ostree_kernel_args_contains
+ostree_kernel_args_delete_if_present
 </SECTION>
 
 <SECTION>
index df245a6c3c954384a326a207d462a53291dc2dd7..943914ab21d2d799d50e606d5eb0522575e3153a 100644 (file)
@@ -1319,6 +1319,13 @@ extern "C" {
         kargs: *mut OstreeKernelArgs,
         arg: *const c_char,
     ) -> gboolean;
+    #[cfg(any(feature = "v2022_7", feature = "dox"))]
+    #[cfg_attr(feature = "dox", doc(cfg(feature = "v2022_7")))]
+    pub fn ostree_kernel_args_delete_if_present(
+        kargs: *mut OstreeKernelArgs,
+        arg: *const c_char,
+        error: *mut *mut glib::GError,
+    ) -> gboolean;
     #[cfg(any(feature = "v2019_3", feature = "dox"))]
     #[cfg_attr(feature = "dox", doc(cfg(feature = "v2019_3")))]
     pub fn ostree_kernel_args_append_proc_cmdline(
index 2926fe626a0e67136718454c0b25966c5fff09bf..6a82433a63243b72881d64ef6e9f752f1c595ae9 100644 (file)
@@ -23,6 +23,7 @@
 LIBOSTREE_2022.7 {
 global:
   ostree_kernel_args_contains;
+  ostree_kernel_args_delete_if_present;
 } LIBOSTREE_2022.5;
 
 /* Stub section for the stable release *after* this development one; don't
index b5fe4def909442325e1f70fc524963e217fa80f1..d15d28a73392e646e490ed52c106c579f781b4ab 100644 (file)
@@ -848,3 +848,25 @@ ostree_kernel_args_contains (OstreeKernelArgs  *kargs,
 
   return g_hash_table_contains (kargs->table, key);
 }
+
+/**
+ * ostree_kernel_args_delete_if_present:
+ * @kargs: a OstreeKernelArgs instance
+ * @arg: key or key/value pair to be deleted
+ * @error: an GError instance
+ *
+ * Deletes @arg which is in the form of key=value pair from the hash table kargs->table.
+ *
+ * Returns: %TRUE on success, %FALSE on failure
+ *
+ * Since: 2022.7
+ **/
+gboolean
+ostree_kernel_args_delete_if_present (OstreeKernelArgs  *kargs,
+                                      const char        *arg,
+                                      GError           **error)
+{
+  if (ostree_kernel_args_contains (kargs, arg))
+    return ostree_kernel_args_delete (kargs, arg, error);
+  return TRUE;
+}
index 94c494f6557f1403744d3c6176d73c4db9152987..6a1aaac10c5aa2efdb97f9b3d71e697e3fd6a8e3 100644 (file)
@@ -138,4 +138,8 @@ _OSTREE_PUBLIC
 gboolean ostree_kernel_args_contains (OstreeKernelArgs *kargs,
                                       const char *arg);
 
+_OSTREE_PUBLIC
+gboolean ostree_kernel_args_delete_if_present (OstreeKernelArgs *kargs,
+                                               const char       *arg,
+                                               GError          **error);
 G_END_DECLS