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) 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); const gchar *filename = g_file_info_get_name (info);
if (file_type == G_FILE_TYPE_REGULAR && if (file_type == G_FILE_TYPE_REGULAR &&

View File

@ -382,13 +382,13 @@ gimp_data_loader_factory_load_directory (GimpDataFactory *factory,
GFileType file_type; GFileType file_type;
GFile *child; 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); g_object_unref (info);
continue; 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); child = g_file_enumerator_get_child (enumerator, info);
if (file_type == G_FILE_TYPE_DIRECTORY) if (file_type == G_FILE_TYPE_DIRECTORY)

View File

@ -1018,7 +1018,7 @@ gimp_extension_manager_search_directory (GimpExtensionManager *manager,
{ {
GFile *subdir; 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); g_object_unref (info);
continue; continue;

View File

@ -452,7 +452,7 @@ gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
G_FILE_QUERY_INFO_NONE, G_FILE_QUERY_INFO_NONE,
NULL, NULL); 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, readable = g_file_info_get_attribute_boolean (file_info,
G_FILE_ATTRIBUTE_ACCESS_CAN_READ); G_FILE_ATTRIBUTE_ACCESS_CAN_READ);
@ -715,7 +715,7 @@ gimp_imagefile_icon_callback (GObject *source_object,
if (file_info) 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); g_object_unref (file_info);
} }

View File

@ -1732,7 +1732,7 @@ gimp_palette_load_detect_format (GFile *file,
if (info) 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) if (size == 768)
format = GIMP_PALETTE_FILE_FORMAT_ACT; format = GIMP_PALETTE_FILE_FORMAT_ACT;

View File

@ -130,7 +130,7 @@ file_open_image (Gimp *gimp,
if (! info) if (! info)
return NULL; 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, g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Not a regular file")); _("Not a regular file"));

View File

@ -134,7 +134,7 @@ file_save (Gimp *gimp,
goto out; 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, g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Not a regular file")); _("Not a regular file"));

View File

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

View File

@ -595,7 +595,7 @@ splash_image_load_from_file (GFile *file,
{ {
const gchar *content_type; 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) if (content_type)
{ {
gchar *mime_type; gchar *mime_type;

View File

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

View File

@ -170,8 +170,8 @@ gimp_environ_table_load (GimpEnvironTable *environ_table,
while ((info = g_file_enumerator_next_file (enumerator, while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL))) NULL, NULL)))
{ {
if (! g_file_info_get_is_hidden (info) && if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR) 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); 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, while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL))) NULL, NULL)))
{ {
if (! g_file_info_get_is_hidden (info) && if (! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN) &&
g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR) 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); GFile *file = g_file_enumerator_get_child (enumerator, info);

View File

@ -683,7 +683,7 @@ file_check_single_magic (const gchar *offset,
if (! info) if (! info)
return FILE_MATCH_NONE; 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); g_object_unref (info);
} }
else if (offs >= 0 && else if (offs >= 0 &&

View File

@ -269,7 +269,7 @@ gimp_plug_in_manager_search_directory (GimpPlugInManager *manager,
{ {
GFile *child; 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); g_object_unref (info);
continue; continue;
@ -305,7 +305,7 @@ gimp_plug_in_manager_search_directory (GimpPlugInManager *manager,
gchar *file_name; gchar *file_name;
char *ext; 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); g_object_unref (info2);
continue; continue;

View File

@ -420,13 +420,13 @@ gimp_font_factory_recursive_add_fontdir (FcConfig *config,
GFileType file_type; GFileType file_type;
GFile *child; 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); g_object_unref (info);
continue; 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); child = g_file_enumerator_get_child (enumerator, info);
if (file_type == G_FILE_TYPE_DIRECTORY) if (file_type == G_FILE_TYPE_DIRECTORY)

View File

@ -257,7 +257,7 @@ gimp_help_get_installed_languages (void)
while ((info = g_file_enumerator_next_file (enumerator, while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL))) 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 *locale_dir;
GFile *file; GFile *file;

View File

@ -338,7 +338,7 @@ gimp_image_prop_view_label_set_filesize (GtkWidget *label,
if (info) 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); gchar *str = g_format_size (size);
gtk_label_set_text (GTK_LABEL (label), str); gtk_label_set_text (GTK_LABEL (label), str);

View File

@ -216,7 +216,7 @@ gimp_color_profile_new_from_file (GFile *file,
{ {
GInputStream *input; 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); data = g_malloc (length);
g_object_unref (info); 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))) 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 && 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); 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); G_FILE_ATTRIBUTE_TIME_MODIFIED);
if (size) 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) if (err_no)
*err_no = 0; *err_no = 0;

View File

@ -1027,7 +1027,7 @@ get_file_info (GFile *file)
if (info) 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); g_object_unref (info);
} }

View File

@ -659,7 +659,7 @@ get_file_size (GFile *file,
NULL, error); NULL, error);
if (info) 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); g_object_unref (info);
} }

View File

@ -706,7 +706,7 @@ get_file_info (GFile *file)
if (info) 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); g_object_unref (info);
} }

View File

@ -392,7 +392,7 @@ send_image (GObject *config,
while ((info = g_file_enumerator_next_file (enumerator, while ((info = g_file_enumerator_next_file (enumerator,
NULL, NULL))) 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); GFile *file = g_file_enumerator_get_child (enumerator, info);
g_file_delete (file, NULL, NULL); g_file_delete (file, NULL, NULL);

View File

@ -132,7 +132,7 @@ background_jpeg_save (PreviewPersistent *pp)
if (info) 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; gchar *size_text;
size_text = g_format_size (size); size_text = g_format_size (size);

View File

@ -571,7 +571,7 @@ tiff_io_get_file_size (thandle_t handle)
} }
else 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); 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))) 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 && 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; fractalexplorerOBJ *fractalexplorer;
GFile *child; GFile *child;

View File

@ -1772,10 +1772,10 @@ gflares_list_load_all (void)
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL))) 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 && 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; GFlare *gflare;
GFile *child; GFile *child;

View File

@ -258,7 +258,7 @@ gimp_help_locale_parse (GimpHelpLocale *locale,
return FALSE; 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); 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))) 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 || if ((file_type == G_FILE_TYPE_REGULAR ||
file_type == G_FILE_TYPE_DIRECTORY) && 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); GFile *child = g_file_enumerator_get_child (enumerator, info);