From bd198e5e45282886ea2bad14e987c7c01b163cb3 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 29 Jun 2009 14:13:14 +0200 Subject: [PATCH] export and use _g_file_attribute_matcher_matches_id() --- gio/gfileinfo-priv.h | 5 +++ gio/gfileinfo.c | 13 +++--- gio/glocalfileinfo.c | 95 ++++++++++++++++++++++---------------------- 3 files changed, 58 insertions(+), 55 deletions(-) diff --git a/gio/gfileinfo-priv.h b/gio/gfileinfo-priv.h index f747ece1b..a318edb52 100644 --- a/gio/gfileinfo-priv.h +++ b/gio/gfileinfo-priv.h @@ -96,4 +96,9 @@ #define G_FILE_ATTRIBUTE_ID_SELINUX_CONTEXT (14680064 + 1) #define G_FILE_ATTRIBUTE_ID_TRASH_ITEM_COUNT (15728640 + 1) + +gboolean _g_file_attribute_matcher_matches_id (GFileAttributeMatcher *matcher, + guint32 id); + + #endif /* __G_FILE_INFO_PRIV_H__ */ diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c index c5b8ca8e5..2cc431819 100644 --- a/gio/gfileinfo.c +++ b/gio/gfileinfo.c @@ -86,9 +86,6 @@ struct _GFileInfoClass }; -static gboolean g_file_attribute_matcher_matches_id (GFileAttributeMatcher *matcher, - guint32 id); - G_DEFINE_TYPE (GFileInfo, g_file_info, G_TYPE_OBJECT); typedef struct { @@ -445,7 +442,7 @@ g_file_info_set_attribute_mask (GFileInfo *info, for (i = 0; i < info->attributes->len; i++) { attr = &g_array_index (info->attributes, GFileAttribute, i); - if (!g_file_attribute_matcher_matches_id (mask, + if (!_g_file_attribute_matcher_matches_id (mask, attr->attribute)) { _g_file_attribute_value_clear (&attr->value); @@ -1062,7 +1059,7 @@ g_file_info_create_value (GFileInfo *info, int i; if (info->mask != NO_ATTRIBUTE_MASK && - !g_file_attribute_matcher_matches_id (info->mask, attr_id)) + !_g_file_attribute_matcher_matches_id (info->mask, attr_id)) return NULL; i = g_file_info_find_place (info, attr_id); @@ -2244,9 +2241,9 @@ matcher_matches_id (GFileAttributeMatcher *matcher, return FALSE; } -static gboolean -g_file_attribute_matcher_matches_id (GFileAttributeMatcher *matcher, - guint32 id) +gboolean +_g_file_attribute_matcher_matches_id (GFileAttributeMatcher *matcher, + guint32 id) { /* We return a NULL matcher for an empty match string, so handle this */ if (matcher == NULL) diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c index c6d4be0c6..3aa4acdba 100644 --- a/gio/glocalfileinfo.c +++ b/gio/glocalfileinfo.c @@ -60,6 +60,7 @@ #include #include +#include #include #include "glibintl.h" @@ -196,7 +197,7 @@ get_selinux_context (const char *path, { char *context; - if (!g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_SELINUX_CONTEXT)) + if (!_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_SELINUX_CONTEXT)) return; if (is_selinux_enabled ()) @@ -800,10 +801,10 @@ _g_local_file_info_get_parent_info (const char *dir, parent_info->has_trash_dir = FALSE; parent_info->device = 0; - if (g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME) || - g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE) || - g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH) || - g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_RENAME) || + _g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_DELETE) || + _g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH) || + _g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_UNIX_IS_MOUNTPOINT)) { /* FIXME: Windows: The underlying _waccess() call in the C * library is mostly pointless as it only looks at the READONLY @@ -830,7 +831,7 @@ _g_local_file_info_get_parent_info (const char *dir, parent_info->device = statbuf.st_dev; /* No need to find trash dir if it's not writable anyway */ if (parent_info->writable && - g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH)) + _g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH)) parent_info->has_trash_dir = _g_local_file_has_trash_dir (dir, statbuf.st_dev); } } @@ -852,18 +853,18 @@ get_access_rights (GFileAttributeMatcher *attribute_matcher, GLocalParentFileInfo *parent_info) { /* FIXME: Windows: The underlyin _waccess() is mostly pointless */ - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ACCESS_CAN_READ)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ACCESS_CAN_READ)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ, g_access (path, R_OK) == 0); - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ACCESS_CAN_WRITE)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, g_access (path, W_OK) == 0); - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ACCESS_CAN_EXECUTE)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE, g_access (path, X_OK) == 0); @@ -890,15 +891,15 @@ get_access_rights (GFileAttributeMatcher *attribute_matcher, writable = TRUE; } - if (g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_RENAME)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME, writable); - if (g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_DELETE)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE, writable); - if (g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH, writable && parent_info->has_trash_dir); } @@ -976,24 +977,24 @@ set_info_from_stat (GFileInfo *info, g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_CHANGED_USEC, statbuf->st_ctim.tv_nsec / 1000); #endif - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ETAG_VALUE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ETAG_VALUE)) { char *etag = _g_local_file_info_create_etag (statbuf); g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_ETAG_VALUE, etag); g_free (etag); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ID_FILE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ID_FILE)) { char *id = _g_local_file_info_create_file_id (statbuf); g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_ID_FILE, id); g_free (id); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_ID_FILESYSTEM)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_ID_FILESYSTEM)) { char *id = _g_local_file_info_create_fs_id (statbuf); g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_ID_FILESYSTEM, id); @@ -1533,13 +1534,13 @@ _g_local_file_info_get (const char *basename, { symlink_target = read_link (path); if (symlink_target && - g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET)) + _g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_SYMLINK_TARGET)) g_file_info_set_symlink_target (info, symlink_target); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_DISPLAY_NAME)) { char *display_name = g_filename_display_basename (path); @@ -1554,8 +1555,8 @@ _g_local_file_info_get (const char *basename, g_free (display_name); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_EDIT_NAME)) { char *edit_name = g_filename_display_basename (path); g_file_info_set_edit_name (info, edit_name); @@ -1563,8 +1564,8 @@ _g_local_file_info_get (const char *basename, } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_COPY_NAME)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_COPY_NAME)) { char *copy_name = g_filename_to_utf8 (basename, -1, NULL, NULL, NULL); if (copy_name) @@ -1572,10 +1573,10 @@ _g_local_file_info_get (const char *basename, g_free (copy_name); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE) || - g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_ICON)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_CONTENT_TYPE) || + _g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_ICON)) { char *content_type = get_content_type (basename, path, &statbuf, is_symlink, symlink_broken, flags, FALSE); @@ -1583,8 +1584,8 @@ _g_local_file_info_get (const char *basename, { g_file_info_set_content_type (info, content_type); - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_ICON)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_ICON)) { GIcon *icon; @@ -1631,8 +1632,8 @@ _g_local_file_info_get (const char *basename, } } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_STANDARD_FAST_CONTENT_TYPE)) { char *content_type = get_content_type (basename, path, &statbuf, is_symlink, symlink_broken, flags, TRUE); @@ -1643,8 +1644,8 @@ _g_local_file_info_get (const char *basename, } } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_OWNER_USER)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_OWNER_USER)) { char *name = NULL; @@ -1658,8 +1659,8 @@ _g_local_file_info_get (const char *basename, g_free (name); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_OWNER_USER_REAL)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_OWNER_USER_REAL)) { char *name = NULL; #ifdef G_OS_WIN32 @@ -1672,8 +1673,8 @@ _g_local_file_info_get (const char *basename, g_free (name); } - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_OWNER_GROUP)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_OWNER_GROUP)) { char *name = NULL; #ifdef G_OS_WIN32 @@ -1687,7 +1688,7 @@ _g_local_file_info_get (const char *basename, } if (parent_info && parent_info->device != 0 && - g_file_attribute_matcher_matches (attribute_matcher, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT) && + _g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_UNIX_IS_MOUNTPOINT) && statbuf.st_dev != parent_info->device) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT, TRUE); @@ -1699,8 +1700,8 @@ _g_local_file_info_get (const char *basename, get_xattrs (path, TRUE, info, attribute_matcher, (flags & G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS) == 0); get_xattrs (path, FALSE, info, attribute_matcher, (flags & G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS) == 0); - if (g_file_attribute_matcher_matches (attribute_matcher, - G_FILE_ATTRIBUTE_THUMBNAIL_PATH)) + if (_g_file_attribute_matcher_matches_id (attribute_matcher, + G_FILE_ATTRIBUTE_ID_THUMBNAIL_PATH)) get_thumbnail_attributes (path, info); vfs = g_vfs_get_default (); @@ -1769,7 +1770,7 @@ _g_local_file_info_get_from_fd (int fd, set_info_from_stat (info, &stat_buf, matcher); #ifdef HAVE_SELINUX - if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_SELINUX_CONTEXT) && + if (_g_file_attribute_matcher_matches_id (matcher, G_FILE_ATTRIBUTE_ID_SELINUX_CONTEXT) && is_selinux_enabled ()) { char *context;