diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index 72b1ffb4e..faa7f9809 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_to_string GFileInfoClass G_FILE_INFO diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c index 0cdd036c8..db4d7812c 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_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); +} diff --git a/gio/gfileinfo.h b/gio/gfileinfo.h index 90188eba0..e276518e2 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_to_string (GFileAttributeMatcher *matcher); G_END_DECLS diff --git a/gio/gio.symbols b/gio/gio.symbols index d8613956a..72eaa7d82 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_to_string g_file_input_stream_get_type g_file_input_stream_query_info g_file_input_stream_query_info_async