fileinfo: Add g_file_attribute_matcher_to_string()
authorBenjamin Otte <otte@redhat.com>
Tue, 1 Nov 2011 18:06:39 +0000 (19:06 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 16 Nov 2011 16:18:13 +0000 (17:18 +0100)
This is to be mainly used for debugging and tests.

docs/reference/gio/gio-sections.txt
gio/gfileinfo.c
gio/gfileinfo.h
gio/gio.symbols

index 72b1ffb..faa7f98 100644 (file)
@@ -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_to_string
 <SUBSECTION Standard>
 GFileInfoClass
 G_FILE_INFO
index 0cdd036..db4d781 100644 (file)
@@ -2488,3 +2488,43 @@ g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher)
        return get_attribute_for_id (sub_matcher->id);
     }
 }
+
+/**
+ * g_file_attribute_matcher_to_string:
+ * @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_to_string (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);
+}
index 90188eb..e276518 100644 (file)
@@ -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_to_string      (GFileAttributeMatcher *matcher);
 
 G_END_DECLS
 
index d861395..72eaa7d 100644 (file)
@@ -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_to_string
 g_file_input_stream_get_type
 g_file_input_stream_query_info
 g_file_input_stream_query_info_async