diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-11-08 23:22:48 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-11-09 10:50:26 +0100 |
commit | 73b44ea51b84e8c8259e07a64fbb9f22a599b774 (patch) | |
tree | 88d50c52464f322427b473bb6accec1a1b735dd2 /src/kerneldevice/mm-kernel-device-helpers.c | |
parent | e5f08b776661eac1f3e151eb8fdf53edf190fca6 (diff) |
kerneldevice,generic: move string match method to helpers
So that we can propertly unit-test it.
Diffstat (limited to 'src/kerneldevice/mm-kernel-device-helpers.c')
-rw-r--r-- | src/kerneldevice/mm-kernel-device-helpers.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-helpers.c b/src/kerneldevice/mm-kernel-device-helpers.c index 5b97303a..5ed25efc 100644 --- a/src/kerneldevice/mm-kernel-device-helpers.c +++ b/src/kerneldevice/mm-kernel-device-helpers.c @@ -19,8 +19,11 @@ #include <glib-object.h> #include <gio/gio.h> +#include "mm-log-object.h" #include "mm-kernel-device-helpers.h" +/******************************************************************************/ + gchar * mm_kernel_device_get_lower_device_name (const gchar *sysfs_path) { @@ -59,3 +62,32 @@ mm_kernel_device_get_lower_device_name (const gchar *sysfs_path) return NULL; } + +/******************************************************************************/ + +gboolean +mm_kernel_device_generic_string_match (const gchar *str, + const gchar *pattern, + gpointer log_object) +{ + g_autoptr(GError) inner_error = NULL; + g_autoptr(GRegex) regex = NULL; + g_autoptr(GMatchInfo) match_info = NULL; + + regex = g_regex_new (pattern, 0, 0, &inner_error); + if (!regex) { + mm_obj_warn (log_object, "invalid pattern in rule '%s': %s", pattern, inner_error->message); + return FALSE; + } + g_regex_match_full (regex, str, -1, 0, 0, &match_info, &inner_error); + if (inner_error) { + mm_obj_warn (log_object, "couldn't apply pattern match in rule '%s': %s", pattern, inner_error->message); + return FALSE; + } + + if (!g_match_info_matches (match_info)) + return FALSE; + + mm_obj_dbg (log_object, "pattern '%s' matched: '%s'", pattern, str); + return TRUE; +} |