aboutsummaryrefslogtreecommitdiff
path: root/src/kerneldevice/mm-kernel-device-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kerneldevice/mm-kernel-device-helpers.c')
-rw-r--r--src/kerneldevice/mm-kernel-device-helpers.c32
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;
+}