diff --git a/Makefile-libostree.am b/Makefile-libostree.am index ea5e8ed5..98e37706 100644 --- a/Makefile-libostree.am +++ b/Makefile-libostree.am @@ -171,9 +171,9 @@ endif # USE_GPGME symbol_files = $(top_srcdir)/src/libostree/libostree-released.sym # Uncomment this include when adding new development symbols. -#if BUILDOPT_IS_DEVEL_BUILD -#symbol_files += $(top_srcdir)/src/libostree/libostree-devel.sym -#endif +if BUILDOPT_IS_DEVEL_BUILD +symbol_files += $(top_srcdir)/src/libostree/libostree-devel.sym +endif # http://blog.jgc.org/2007/06/escaping-comma-and-space-in-gnu-make.html wl_versionscript_arg = -Wl,--version-script= diff --git a/apidoc/ostree-sections.txt b/apidoc/ostree-sections.txt index 900e1704..d9f91208 100644 --- a/apidoc/ostree-sections.txt +++ b/apidoc/ostree-sections.txt @@ -738,6 +738,7 @@ ostree_kernel_args_get_last_value ostree_kernel_args_from_string ostree_kernel_args_to_strv ostree_kernel_args_to_string +ostree_kernel_args_contains
diff --git a/rust-bindings/sys/src/lib.rs b/rust-bindings/sys/src/lib.rs index 1d28759a..df245a6c 100644 --- a/rust-bindings/sys/src/lib.rs +++ b/rust-bindings/sys/src/lib.rs @@ -1313,6 +1313,12 @@ extern "C" { #[cfg(any(feature = "v2022_5", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "v2022_5")))] pub fn ostree_kernel_args_append_if_missing(kargs: *mut OstreeKernelArgs, arg: *const c_char); + #[cfg(any(feature = "v2022_7", feature = "dox"))] + #[cfg_attr(feature = "dox", doc(cfg(feature = "v2022_7")))] + pub fn ostree_kernel_args_contains( + kargs: *mut OstreeKernelArgs, + arg: *const c_char, + ) -> 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( diff --git a/src/libostree/libostree-devel.sym b/src/libostree/libostree-devel.sym index eef5cba0..2926fe62 100644 --- a/src/libostree/libostree-devel.sym +++ b/src/libostree/libostree-devel.sym @@ -20,6 +20,10 @@ - uncomment the include in Makefile-libostree.am */ +LIBOSTREE_2022.7 { +global: + ostree_kernel_args_contains; +} LIBOSTREE_2022.5; /* Stub section for the stable release *after* this development one; don't * edit this other than to update the year. This is just a copy/paste diff --git a/src/libostree/ostree-kernel-args.c b/src/libostree/ostree-kernel-args.c index 08dcf992..b5fe4def 100644 --- a/src/libostree/ostree-kernel-args.c +++ b/src/libostree/ostree-kernel-args.c @@ -820,12 +820,31 @@ void ostree_kernel_args_append_if_missing (OstreeKernelArgs *kargs, const char *arg) { - g_autofree char *key = g_strdup (arg); - split_keyeq (key); - // Don't insert a duplicate key. - if (g_hash_table_contains (kargs->table, key)) + if (ostree_kernel_args_contains (kargs, arg)) return; ostree_kernel_args_append (kargs, arg); } + +/** + * ostree_kernel_args_contains: + * @kargs: a OstreeKernelArgs instance + * @arg: key or key/value pair to check + * + * Search for @arg which is in the form of key=value pair at the hash table kargs->table + * and returns true if finds it. + * + *Returns: %TRUE if @arg is contained in @kargs, %FALSE otherwise. + * + * Since: 2022.7 + **/ +gboolean +ostree_kernel_args_contains (OstreeKernelArgs *kargs, + const char *arg) +{ + g_autofree char *key = g_strdup (arg); + split_keyeq (key); + + return g_hash_table_contains (kargs->table, key); +} diff --git a/src/libostree/ostree-kernel-args.h b/src/libostree/ostree-kernel-args.h index 2e1b249a..94c494f6 100644 --- a/src/libostree/ostree-kernel-args.h +++ b/src/libostree/ostree-kernel-args.h @@ -134,4 +134,8 @@ _OSTREE_PUBLIC void ostree_kernel_args_append_if_missing (OstreeKernelArgs *kargs, const char *arg); +_OSTREE_PUBLIC +gboolean ostree_kernel_args_contains (OstreeKernelArgs *kargs, + const char *arg); + G_END_DECLS