Following the behaviour of ls here, we should return at least the
file name, if we can't get any other information about a file. To
do this, handle EACCESS on stat() calls.
Patch by Tomas Bzatek, see bug 623692
Define GStatBuf as the type used by g_stat() and g_lstat(). Replaces
the non-public struct tag _g_stat_struct. Mostly relevant for Windows
where there are several variants of stat-style structs. On POSIX, is
just another name for struct stat.
Actually, also on many POSIX systems there are in fact several
variants of struct stat and corresponding stat() and lstat()
functions, but as g_stat and g_lstat are normally on POSIX just macros
that expand to stat and lstat, this should not cause a problem. It's
only when it's the actual g_stat() or g_lstat() implementation inside
GLib that gets called that one needs to be sure the passed struct is
the same as what GLib expects.)
Metadata are really part of the pathname, not the target file
(as they are stored by pathname, and for many metadata like icon position
etc make not sense using the target data). So, even if nofollow
is not specified we should not follow links for metadata.
Ideally this should be implemented in the metadata extension in gvfs,
but the extension API does not allow this, so we do it in gio.
See https://bugzilla.gnome.org/show_bug.cgi?id=593809
When doing a g_file_copy() with nofollow-symlinks (to copy a link for
example), the later copying of the file attributes copies the source
links 777 attributes to the target's attributes. As chmod affects the
symlink target, this would cause such copies to always set the target to
777 mode.
This patch makes setting the mode with nofollow-symlinks fail with
NOT_SUPPORTED.
The aforementioned g_file_copy() will still succeed, because it ignores
errors of the attribute copy.
This patch and the previous ones fixes the performance issues noted in
Bug 587089 – lookup_attribute() takes too much CPU
It increases performance for querying attributes by ~15% in my tests.
The icon names are folder-documents, folder-download, folder-music,
folder-pictures, folder-publicshare, folder-templates, folder-videos.
See bug 541276.
Bug 579862 – requesting xattr::foo ends up calling getxattr(...,
user.:foo,...)
The patch makes sure we escape xattr::, not xattr:, before adding user.
and calling getxattr.
Apps don't generally create backup directories, etc. So, if the file
ends with ~ but is not a regular file shouldn't be considered a backup
file. (#573673)
2009-03-03 Alexander Larsson <alexl@redhat.com>
Bug 562613 – Missing const modifier in string parameters
* gfileinputstream.[ch]:
* gfileoutputstream.[ch]:
* glocalfileinfo.[ch]:
Make string arguments const if used as such.
svn path=/trunk/; revision=7952
2009-02-13 Ryan Lortie <desrt@desrt.ca>
Bug 505042 – add file attribute for actually used file size in bytes
* gfileinfo.h: add G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE define to
"standard::allocated-size"
* gfileattribute.c: document
* glocalfileinfo.c: set the allocated size from st_blocks * 512
svn path=/trunk/; revision=7865
2008-10-23 Alexander Larsson <alexl@redhat.com>
Bug 528320 - Incorrect icons displayed for files with custom mimetype icons
* glocalfileinfo.c:
(_g_local_file_info_get):
Don't return the fallback icon (text-x-generic) for all files.
This is causing problems with theme icon lookup and custom mime
icons, as the generic fallback overrides custom mime icons in
inherited themes.
This is a slight change as applications might not get an icon wher
they previously did. But there is no guarantee to get on neither before
or after this change, so it should not break applications. Changes
to nautilus and gtk+ will be done to manually use the generic fallback
icon if no icon is found, but this is only required for rare cases.
svn path=/trunk/; revision=7620
2008-10-14 Matthias Clasen <mclasen@redhat.com>
Bug 556334 – Warning when building without selinux support
* glocalfileinfo.c: Avoid compiler warnings when selinux is
disabled. Patch by Pascal Terjan
svn path=/trunk/; revision=7601
folder
* glocalfileinfo.c (_g_local_file_info_get): Return user-desktop
as icon for the desktop directory, also make user-home and
user-desktop the preferred icons.
svn path=/trunk/; revision=6992
2008-05-05 Michael Natterer <mitch@imendio.com>
* Makefile.am. build with G_DISABLE_SINGLE_INCLUDES to prevent
code from being checked in that breaks the build of applications
which use G_DISABLE_SINGLE_INCLUDES.
* makegioalias.pl: make the alias file include "glib.h" instead of
"glibconfig.h".
* gio.symbols: whitespace change to force regeneration of the
alias file after above script change.
* gfileinfo.h: remove inlcusion of <glib/gfileutils.h>.
* gfilenamecompleter.c: remove inclusion of "gurifuncs.h".
* gioerror.h: #include <glib.h> instead of <glib/gerror.h>.
* glocalfileinfo.c: remove inclusion of <glib/gchecksum>.
svn path=/trunk/; revision=6879
2008-03-12 Tor Lillqvist <tml@novell.com>
* glocalfileinfo.h: Introduce a macro GLocalFileStat that is the
normal struct stat on Unix but struct _stati64 on Windows to have
access to 64-bit file size information. Use that instead of struct
stat in the functions declared here in this private header.
* glocalfileinfo.c: Corresponding changes. Move some G_OS_WIN32,
S_ISLNK and HAVE_UTIMES ifdefs and add some more to avoid compiler
warnings about unused functions and variables. Don't set
meaningless attributes like inode numbers on Windows.
svn path=/trunk/; revision=6697
2008-03-11 Alexander Larsson <alexl@redhat.com>
* glocalfile.c:
* glocalfileinfo.[ch]:
Correctly implement can_trash by actually
looking for a trash dir, not just assuming
one exists.
svn path=/trunk/; revision=6679
2008-02-29 Alexander Larsson <alexl@redhat.com>
* glocalfileinfo.c:
(get_content_type):
Make sure empty files get text/plain type (#518720)
svn path=/trunk/; revision=6605
2008-02-21 David Zeuthen <davidz@redhat.com>
* glocalfileinfo.c: (_g_local_file_info_get):
* gcontenttype.c:
(g_content_type_get_icon): Implement this function by
moving bits from glocalfileinfo.c
(g_content_type_get_description): Unalias before getting
description (#517687)
* gfile.c: (g_file_class_init),
(g_file_query_filesystem_info_async),
(g_file_query_filesystem_info_finish),
(query_filesystem_info_data_free),
(query_filesystem_info_async_thread),
(g_file_real_query_filesystem_info_async),
(g_file_real_query_filesystem_info_finish):
* gfile.h: Implement async version of
g_file_query_filesystem_info()
* gfileinfo.h: Add new attributes for filesystem::use-preview
* gio.symbols: Update
* gthemedicon.c: (g_themed_icon_append_name):
* gthemedicon.h: Add new new convenience function.
* gunionvolumemonitor.c: (g_union_volume_monitor_dispose),
(get_mounts), (get_volumes), (get_connected_drives),
(get_volume_for_uuid), (get_mount_for_uuid),
(g_union_volume_monitor_init), (populate_union_monitor),
(g_volume_monitor_get), (_g_mount_get_for_mount_path),
(g_volume_monitor_adopt_orphan_mount):
* gvolumemonitor.c:
* gvolumemonitor.h: Use recursive locks so it's safe for volume
monitor implementations to call into the main volume monitor. Also
separate object initialization and volume monitor initialization
such that non-native volume monitors can properly adopt their
mounts away.
svn path=/trunk/; revision=6550
2008-02-18 Alexander Larsson <alexl@redhat.com>
* glocalfile.c:
* glocalfileinfo.c:
* glocalfileoutputstream.c:
Use g_unlink/g_rename instead of unlink/rename;
do not pass raw filenames to g_set_error. (#517239)
Patch from Yevgen Muntyan.
svn path=/trunk/; revision=6533
2008-01-21 Matthias Clasen <mclasen@redhat.com>
* glocal*.c:
* gvolumemanager.c: Whitespace cleanups.
* glocalfileoutputsteam.c (_g_local_file_output_stream_create):
Use the right mode when creating the file.
svn path=/trunk/; revision=6341
2007-12-25 Paolo Borelli <pborelli@katamail.com>
* glocalfileinfo.c (set_info_from_stat): fix typo in the ifdef
used to detect statbuf->st_blocks. (#505042)
svn path=/trunk/; revision=6202
2007-12-14 Alexander Larsson <alexl@redhat.com>
* Makefile.am:
* gfileattribute.[ch]:
* gfileattribute-priv.h:
Move GFileAttributeValue to a private header, as
its sort of ugly.
* gfile.[ch]:
Make set_attribute take a type + a pointer instead
of a GFileAttributeValue.
* gfileinfo.[ch]:
Fix up for above changes.
Add g_file_info_get_attribute_data to get
all info in one call, g_file_info_get_attribute_status
to get the status and g_file_info_get_attribute_as_string.
* gio.symbols:
* glocalfile.c:
* glocalfileinfo.[ch]:
Update for changes
* gunixmounts.c:
Make _guess_type static.
svn path=/trunk/; revision=6129