From b45b1536a9e07597d861f7df0cc632ded77afa7e Mon Sep 17 00:00:00 2001 From: Morten Welinder Date: Mon, 1 Mar 2004 20:07:26 +0000 Subject: [PATCH] Only stat when needed. 2004-03-01 Morten Welinder * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when needed. --- ChangeLog | 3 +++ ChangeLog.pre-2-10 | 3 +++ ChangeLog.pre-2-4 | 3 +++ ChangeLog.pre-2-6 | 3 +++ ChangeLog.pre-2-8 | 3 +++ gtk/gtkfilesystemunix.c | 7 ++++++- 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index bbb58ca612..f698631700 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2004-03-01 Morten Welinder + * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when + needed. + * gtk/gtkfilesystemmodel.c (file_model_node_is_visible): Simplify semantics and check for errors. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index bbb58ca612..f698631700 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,8 @@ 2004-03-01 Morten Welinder + * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when + needed. + * gtk/gtkfilesystemmodel.c (file_model_node_is_visible): Simplify semantics and check for errors. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index bbb58ca612..f698631700 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,5 +1,8 @@ 2004-03-01 Morten Welinder + * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when + needed. + * gtk/gtkfilesystemmodel.c (file_model_node_is_visible): Simplify semantics and check for errors. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index bbb58ca612..f698631700 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,8 @@ 2004-03-01 Morten Welinder + * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when + needed. + * gtk/gtkfilesystemmodel.c (file_model_node_is_visible): Simplify semantics and check for errors. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index bbb58ca612..f698631700 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,8 @@ 2004-03-01 Morten Welinder + * gtk/gtkfilesystemunix.c (filename_get_info): Only stat when + needed. + * gtk/gtkfilesystemmodel.c (file_model_node_is_visible): Simplify semantics and check for errors. diff --git a/gtk/gtkfilesystemunix.c b/gtk/gtkfilesystemunix.c index 2becd2dfeb..77649316fa 100644 --- a/gtk/gtkfilesystemunix.c +++ b/gtk/gtkfilesystemunix.c @@ -1358,10 +1358,15 @@ filename_get_info (const gchar *filename, { GtkFileInfo *info; struct stat statbuf; + gboolean do_stat = (types & (GTK_FILE_INFO_IS_FOLDER | + GTK_FILE_INFO_IS_HIDDEN | + GTK_FILE_INFO_MODIFICATION_TIME | + GTK_FILE_INFO_SIZE)); /* If stat fails, try to fall back to lstat to catch broken links */ - if (stat (filename, &statbuf) != 0 && + if (do_stat && + stat (filename, &statbuf) != 0 && lstat (filename, &statbuf) != 0) { gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);