[glib/filechooserentry: 4/10] fileinfo: Add g_file_attribute_matcher_print()



commit 7d383646a074d0d998dec26bc019f7c37ad2f9df
Author: Benjamin Otte <otte redhat com>
Date:   Tue Nov 1 19:06:39 2011 +0100

    fileinfo: Add g_file_attribute_matcher_print()
    
    This is to be mainly used for debugging and tests.

 docs/reference/gio/gio-sections.txt |    1 +
 gio/gfileinfo.c                     |   40 +++++++++++++++++++++++++++++++++++
 gio/gfileinfo.h                     |    1 +
 gio/gio.symbols                     |    1 +
 4 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt
index 49ac6b1..71cdf40 100644
--- a/docs/reference/gio/gio-sections.txt
+++ b/docs/reference/gio/gio-sections.txt
@@ -370,6 +370,7 @@ g_file_attribute_matcher_matches
 g_file_attribute_matcher_matches_only
 g_file_attribute_matcher_enumerate_namespace
 g_file_attribute_matcher_enumerate_next
+g_file_attribute_matcher_print
 <SUBSECTION Standard>
 GFileInfoClass
 G_FILE_INFO
diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c
index 0cdd036..498db0f 100644
--- a/gio/gfileinfo.c
+++ b/gio/gfileinfo.c
@@ -2488,3 +2488,43 @@ g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher)
 	return get_attribute_for_id (sub_matcher->id);
     }
 }
+
+/**
+ * g_file_attribute_matcher_print:
+ * @matcher: (allow-none): a #GFileAttributeMatcher.
+ *
+ * Prints what the matcher is matching against. The format will be 
+ * equal to the format passed to g_file_attribute_matcher_new().
+ * The output however, might not be identical, as the matcher may
+ * decide to use a different order or omit needless parts.
+ *
+ * Returns: a string describing the attributes the matcher matches
+ *   against or %NULL if @matcher was %NULL.
+ *
+ * Since: 2.32
+ **/
+char *
+g_file_attribute_matcher_print (GFileAttributeMatcher *matcher)
+{
+  GString *string;
+  guint i;
+
+  if (matcher == NULL)
+    return NULL;
+
+  if (matcher->all)
+    return g_strdup ("*");
+
+  string = g_string_new ("");
+  for (i = 0; i < matcher->sub_matchers->len; i++)
+    {
+      SubMatcher *submatcher = &g_array_index (matcher->sub_matchers, SubMatcher, i);
+
+      if (i > 0)
+        g_string_append_c (string, ',');
+
+      g_string_append (string, get_attribute_for_id (submatcher->id));
+    }
+
+  return g_string_free (string, FALSE);
+}
diff --git a/gio/gfileinfo.h b/gio/gfileinfo.h
index 90188eb..d209bb4 100644
--- a/gio/gfileinfo.h
+++ b/gio/gfileinfo.h
@@ -946,6 +946,7 @@ gboolean               g_file_attribute_matcher_matches_only   (GFileAttributeMa
 gboolean               g_file_attribute_matcher_enumerate_namespace (GFileAttributeMatcher *matcher,
 								     const char            *ns);
 const char *           g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher);
+char *                 g_file_attribute_matcher_print          (GFileAttributeMatcher *matcher);
 
 G_END_DECLS
 
diff --git a/gio/gio.symbols b/gio/gio.symbols
index a96b827..91138f3 100644
--- a/gio/gio.symbols
+++ b/gio/gio.symbols
@@ -437,6 +437,7 @@ g_file_attribute_matcher_matches
 g_file_attribute_matcher_matches_only
 g_file_attribute_matcher_enumerate_namespace
 g_file_attribute_matcher_enumerate_next
+g_file_attribute_matcher_print
 g_file_input_stream_get_type
 g_file_input_stream_query_info
 g_file_input_stream_query_info_async



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]