Issue #9994: do not call g_file_info_get_is_hidden() (and others) directly.

This is not the main reason for the specific output in #9994. These ones are
more probably because of similar usage in GTK (which updated its own calls to
g_file_info_get_is_hidden|backup() in version 3.24.38). But we should likely
also update the various calls we have to use the generic
g_file_info_get_attribute_*() variants.

To be fair, it is unclear to me when we can be sure that an attribute is set.
For instance, when we call g_file_enumerate_children() or g_file_query_info()
with specific attributes, docs say that it is still possible for these
attributes to not be set. So I assume it means we should never use direct
accessor functions.

The only exception is that I didn't remove usage of g_file_info_get_name(),
since its docs says:

> * Gets a display name for a file. This is guaranteed to always be set.

Even though it also says just after:

> * It is an error to call this if the #GFileInfo does not contain
> * %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME.

Which is very contradictory. But assuming that this error warning was
over-zealous documentation, I kept the direct accessors since they are supposed
to be slightly more optimized (still according to in-code documentation) so
let's priorize them when we know they are set for sure.
This commit is contained in:
Jehan 2023-09-19 14:38:42 +02:00
parent d928bd2c93
commit 231ca0c505
30 changed files with 43 additions and 43 deletions

View File

@ -730,7 +730,7 @@ gimp_file_is_executable (GFile *file)
if (info)
{
GFileType file_type = g_file_info_get_file_type (info);
GFileType file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
const gchar *filename = g_file_info_get_name (info);
if (file_type == G_FILE_TYPE_REGULAR &&

View File

@ -382,13 +382,13 @@ gimp_data_loader_factory_load_directory (GimpDataFactory *factory,
GFileType file_type;
GFile *child;
if (g_file_info_get_is_hidden (info))
if (g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
g_object_unref (info);
continue;
}
file_type = g_file_info_get_file_type (info);
file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
child = g_file_enumerator_get_child (enumerator, info);
if (file_type == G_FILE_TYPE_DIRECTORY)

View File

@ -1018,7 +1018,7 @@ gimp_extension_manager_search_directory (GimpExtensionManager *manager,
{
GFile *subdir;
if (g_file_info_get_is_hidden (info))
if (g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
g_object_unref (info);
continue;

View File

@ -452,7 +452,7 @@ gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
G_FILE_QUERY_INFO_NONE,
NULL, NULL);
regular = (g_file_info_get_file_type (file_info) == G_FILE_TYPE_REGULAR);
regular = (g_file_info_get_attribute_uint32 (file_info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_REGULAR);
readable = g_file_info_get_attribute_boolean (file_info,
G_FILE_ATTRIBUTE_ACCESS_CAN_READ);
@ -715,7 +715,7 @@ gimp_imagefile_icon_callback (GObject *source_object,
if (file_info)
{
private->icon = g_object_ref (g_file_info_get_icon (file_info));
private->icon = g_object_ref (G_ICON (g_file_info_get_attribute_object (file_info, G_FILE_ATTRIBUTE_STANDARD_ICON)));
g_object_unref (file_info);
}

View File

@ -1732,7 +1732,7 @@ gimp_palette_load_detect_format (GFile *file,
if (info)
{
goffset size = g_file_info_get_size (info);
goffset size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
if (size == 768)
format = GIMP_PALETTE_FILE_FORMAT_ACT;

View File

@ -130,7 +130,7 @@ file_open_image (Gimp *gimp,
if (! info)
return NULL;
if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR)
if (g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) != G_FILE_TYPE_REGULAR)
{
g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Not a regular file"));

View File

@ -134,7 +134,7 @@ file_save (Gimp *gimp,
goto out;
}
if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR)
if (g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) != G_FILE_TYPE_REGULAR)
{
g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Not a regular file"));

View File

@ -96,8 +96,8 @@ icon_themes_init (Gimp *gimp)
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (! g_file_info_get_is_hidden (info) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)
if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_DIRECTORY)
{
GFile *file;
GFile *index_theme;

View File

@ -595,7 +595,7 @@ splash_image_load_from_file (GFile *file,
{
const gchar *content_type;
content_type = g_file_info_get_content_type (info);
content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE);
if (content_type)
{
gchar *mime_type;

View File

@ -511,8 +511,8 @@ themes_theme_paths_notify (GimpExtensionManager *manager,
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (! g_file_info_get_is_hidden (info) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)
if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_DIRECTORY)
{
GFile *file;
const gchar *name;

View File

@ -170,8 +170,8 @@ gimp_environ_table_load (GimpEnvironTable *environ_table,
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (! g_file_info_get_is_hidden (info) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR)
if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_REGULAR)
{
GFile *file = g_file_enumerator_get_child (enumerator, info);

View File

@ -163,8 +163,8 @@ gimp_interpreter_db_load (GimpInterpreterDB *db,
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (! g_file_info_get_is_hidden (info) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR)
if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_REGULAR)
{
GFile *file = g_file_enumerator_get_child (enumerator, info);

View File

@ -683,7 +683,7 @@ file_check_single_magic (const gchar *offset,
if (! info)
return FILE_MATCH_NONE;
fileval = g_file_info_get_size (info);
fileval = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}
else if (offs >= 0 &&

View File

@ -269,7 +269,7 @@ gimp_plug_in_manager_search_directory (GimpPlugInManager *manager,
{
GFile *child;
if (g_file_info_get_is_hidden (info))
if (g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
g_object_unref (info);
continue;
@ -305,7 +305,7 @@ gimp_plug_in_manager_search_directory (GimpPlugInManager *manager,
gchar *file_name;
char *ext;
if (g_file_info_get_is_hidden (info2))
if (g_file_info_get_attribute_boolean (info2, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
g_object_unref (info2);
continue;

View File

@ -420,13 +420,13 @@ gimp_font_factory_recursive_add_fontdir (FcConfig *config,
GFileType file_type;
GFile *child;
if (g_file_info_get_is_hidden (info))
if (g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
g_object_unref (info);
continue;
}
file_type = g_file_info_get_file_type (info);
file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
child = g_file_enumerator_get_child (enumerator, info);
if (file_type == G_FILE_TYPE_DIRECTORY)
@ -892,4 +892,4 @@ gimp_font_factory_load_names (GimpContainer *container,
FcFontSetDestroy (fontset);
gimp_font_class_set_font_factory (container);
}
}

View File

@ -257,7 +257,7 @@ gimp_help_get_installed_languages (void)
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)
if (g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_DIRECTORY)
{
GFile *locale_dir;
GFile *file;

View File

@ -338,7 +338,7 @@ gimp_image_prop_view_label_set_filesize (GtkWidget *label,
if (info)
{
goffset size = g_file_info_get_size (info);
goffset size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
gchar *str = g_format_size (size);
gtk_label_set_text (GTK_LABEL (label), str);

View File

@ -216,7 +216,7 @@ gimp_color_profile_new_from_file (GFile *file,
{
GInputStream *input;
length = g_file_info_get_size (info);
length = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
data = g_malloc (length);
g_object_unref (info);

View File

@ -381,10 +381,10 @@ gimp_module_db_load_directory (GimpModuleDB *db,
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
{
GFileType file_type = g_file_info_get_file_type (info);
GFileType file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
if (file_type == G_FILE_TYPE_REGULAR &&
! g_file_info_get_is_hidden (info))
! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
GFile *child = g_file_enumerator_get_child (enumerator, info);

View File

@ -556,7 +556,7 @@ gimp_thumb_file_test (const gchar *filename,
G_FILE_ATTRIBUTE_TIME_MODIFIED);
if (size)
*size = g_file_info_get_size (info);
*size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
if (err_no)
*err_no = 0;

View File

@ -1027,7 +1027,7 @@ get_file_info (GFile *file)
if (info)
{
size = g_file_info_get_size (info);
size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}

View File

@ -659,7 +659,7 @@ get_file_size (GFile *file,
NULL, error);
if (info)
{
size = g_file_info_get_size (info);
size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}

View File

@ -706,7 +706,7 @@ get_file_info (GFile *file)
if (info)
{
size = g_file_info_get_size (info);
size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}

View File

@ -392,7 +392,7 @@ send_image (GObject *config,
while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL)))
{
if (g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR)
if (g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE) == G_FILE_TYPE_REGULAR)
{
GFile *file = g_file_enumerator_get_child (enumerator, info);
g_file_delete (file, NULL, NULL);

View File

@ -132,7 +132,7 @@ background_jpeg_save (PreviewPersistent *pp)
if (info)
{
goffset size = g_file_info_get_size (info);
goffset size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
gchar *size_text;
size_text = g_format_size (size);

View File

@ -571,7 +571,7 @@ tiff_io_get_file_size (thandle_t handle)
}
else
{
size = g_file_info_get_size (info);
size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}

View File

@ -1110,10 +1110,10 @@ fractalexplorer_list_load_all (const gchar *explorer_path)
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
{
GFileType file_type = g_file_info_get_file_type (info);
GFileType file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
if (file_type == G_FILE_TYPE_REGULAR &&
! g_file_info_get_is_hidden (info))
! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
fractalexplorerOBJ *fractalexplorer;
GFile *child;

View File

@ -1772,10 +1772,10 @@ gflares_list_load_all (void)
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
{
GFileType file_type = g_file_info_get_file_type (info);
GFileType file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
if (file_type == G_FILE_TYPE_REGULAR &&
! g_file_info_get_is_hidden (info))
! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
GFlare *gflare;
GFile *child;

View File

@ -258,7 +258,7 @@ gimp_help_locale_parse (GimpHelpLocale *locale,
return FALSE;
}
size = g_file_info_get_size (info);
size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
g_object_unref (info);
}

View File

@ -316,11 +316,11 @@ script_fu_load_directory (GFile *directory)
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)))
{
GFileType file_type = g_file_info_get_file_type (info);
GFileType file_type = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_STANDARD_TYPE);
if ((file_type == G_FILE_TYPE_REGULAR ||
file_type == G_FILE_TYPE_DIRECTORY) &&
! g_file_info_get_is_hidden (info))
! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN))
{
GFile *child = g_file_enumerator_get_child (enumerator, info);