From b400127b3eb6039ecfcada3fa398f8aecb4945bd Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 1 Nov 2011 19:06:39 +0100 Subject: [PATCH] fileinfo: Add g_file_attribute_matcher_to_string() 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(+) diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index 72b1ffb..faa7f98 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 0cdd036..db4d781 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 90188eb..e276518 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 d861395..72eaa7d 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 -- 2.7.4