Commit Graph

169 Commits

Author SHA1 Message Date
Руслан Ижбулатов
6a2543444c W32: use 64-bit stat for localfile size calculation
https://bugzilla.gnome.org/show_bug.cgi?id=728669
2015-04-16 19:58:05 +00:00
Ryan Lortie
2737ab3201 substantially rework file monitors
Remove all event merging and dispatch logic from GFileMonitor.  The only
implementation of GFileMonitor outside of glib is in gvfs and it already
does these things properly.

Get rid of GLocalDirectoryMonitor.  We will use a single class,
GLocalFileMonitor, for both directory and file monitoring.  This will
prevent every single backend from having to create two objects
separately (eg: ginotifydirectorymonitor.c and ginotifyfilemonitor.c).

Introduce GFileMonitorSource as a thread-safe cross-context dispatch
mechanism.  Put it in GLocalFileMonitor.  All backends will be expected
to dispatch via the source and not touch the GFileMonitor object at all
from the worker thread.

Remove all construct properties from GLocalFileMonitor and remove the
"context" construct property from GFileMonitor.  All backends must now
get the information about what file to monitor from the ->start() call
which is mandatory to implement.

Remove the implementation of rate limiting in GFileMonitor and add an
implementation in GLocalFileMonitor.  gvfs never did anything with this
anyway, but if it wanted to, it would have to implement it for itself.
This was done in order to get the rate_limit field into the
GFileMonitorSource so that it could be safely accessed from the worker
thread.

Expose g_local_file_is_remote() internally for NFS detection.

With the "is_remote" functionality exposed, we can now move all
functions for creating local file monitors to a proper location in
glocalfilemonitor.c

Port the inotify backend to adjust to the changes above.  None of the
other backends are ported yet.  Those will come in future commits.
2015-03-20 11:59:47 -04:00
Ryan Lortie
fd8b45eb67 GLocalFile: add _new_from_dirname_and_basename
Add a new internal constructor for GLocalFile (which itself is private).

This new constructor allows creating a GLocalFile from a dirname and a
basename, assuming that the dirname is already in canonical form and the
basename is a regular basename.

This will be used for creating GLocalFile instances from the file
monitoring code (for signal emissions).
2015-03-20 11:58:42 -04:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01:00
Marc-André Lureau
38a6ab3e0e win32: silence build warning
glocalfile.c: In function 'g_local_file_measure_size_of_file':
glocalfile.c:2654:3: warning: passing argument 2 of 'g_lstat' from
incompatible pointer type [enabled by default]
   if (g_lstat (name->data, &buf) != 0)
   ^
In file included from glocalfile.c:68:0:
../glib/gstdio.h:135:5: note: expected 'struct GStatBuf *' but argument
is of type 'struct _stati64 *'

https://bugzilla.gnome.org/show_bug.cgi?id=711547
2014-01-19 08:28:31 -05:00
Dan Winship
158dde0507 Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX
In Windows development environments that have it, <unistd.h> is mostly
just a wrapper around several other native headers (in particular,
<io.h>, which contains read(), close(), etc, and <process.h>, which
contains getpid()). But given that some Windows dev environments don't
have <unistd.h>, everything that uses those functions on Windows
already needed to include the correct Windows header as well, and so
there is never any point to including <unistd.h> on Windows.

Also, remove some <unistd.h> includes (and a few others) that were
unnecessary even on unix.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:25:39 -05:00
Dan Winship
3981cddbf8 Require POSIX.1 (1990) compliance on unix
Assume unix platforms support the original POSIX.1 standard.
Specifically, assume that if G_OS_UNIX, then we have chown(),
getcwd(), getgrgid(), getpwuid(), link(), <grp.h>, <pwd.h>,
<sys/types.h>, <sys/uio.h>, <sys/wait.h>, and <unistd.h>.

Additionally, since all versions of Windows that we care about also
have <sys/types.h>, we can remove HAVE_SYS_TYPES_H checks everywhere.

Also remove one include of <sys/times.h>, and the corresponding
configure check, since the include is not currently needed (and may
always have just been a typo for <sys/time.h>).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:17:42 -05:00
Ross Lagerwall
e2fcb77cb0 gio: Clean up trashinfo file if trashing fails
https://bugzilla.gnome.org/show_bug.cgi?id=687202
2013-10-31 06:31:43 +02:00
Ryan Lortie
33762a4173 glocalfile: add private worker monitor APIs
Add a convenient and race-free method of watching local files from the
GLib worker thread.

Without this, the race-free way to create a monitor that dispatches
events to the worker thread looked something like this:

 - dispatch an idle to the worker thread
 - from the idle, create the monitor and connect signals
 - from the original thread, wait (on a cond?) until the worker thread
   has finished setting up the monitor
 - read the file that you were monitoring

which is just ridiculously complicated...

To use the new API:

  monitor = g_local_file_monitor_new_in_worker ("/path/to/some/file",
                                                G_FILE_MONITOR_NONE,
                                                &error);
  g_assert_no_error (error);

  g_signal_connect (monitor, "changed", G_CALLBACK (callback), NULL);

  g_local_file_monitor_start (monitor);

'callback' will run from the GLib worker thread.

This is the reason that the start() call was introduced in the previous
commit.  The backends that don't use the start() call will have a very
thin race between creating the monitor and connecting the signal, but
hopefully they will be fixed soon.

These new APIs will be used (at least) from gdesktopappinfo to watch for
changes in the desktop file directories.

https://bugzilla.gnome.org/show_bug.cgi?id=704887
2013-10-03 10:37:47 -04:00
William Orr
7eb1e5fc5b glocalfile: Only use O_DIRECTORY if available
Solaris 10 for example doesn't have it.

https://bugzilla.gnome.org/show_bug.cgi?id=708860
2013-09-26 15:22:51 -04:00
Ryan Lortie
084e5b0122 GLocalFile: use GDir for g_file_measure_disk_usage
It turns out that although dirent is available on mingw32 (where the
code was originally tested), it is not usable from MSVC.

Avoid portability problems by just using GDir.

Also, be careful about ensuring that we utf8-format filenames in our
error messages, and leave out the "file://" component since the strings
we're displaying are not URIs (and we don't want to make them URIs since
the extra escaping would reduce legibility).

Thanks to Chun-wei Fan <fanchunwei@src.gnome.org> for portions of this
patch and for reviews.

https://bugzilla.gnome.org/show_bug.cgi?id=707787
2013-09-16 13:38:40 -04:00
Ryan Lortie
6ec2bb17c3 GFile: add new g_file_measure_disk_usage() API
This is essentially the equivalent of 'du'.

This is currently only supported on local files.  gvfs will add support for the
interface later.

https://bugzilla.gnome.org/show_bug.cgi?id=704893
2013-09-06 13:16:17 -04:00
Matthias Clasen
5843582604 Fix build with statvfs
As pointed out in bug 704587, the maze of ifdefs was missing the
variable declaration for statfs_result in one case.

https://bugzilla.gnome.org/show_bug.cgi?id=704587
2013-07-28 17:04:56 -04:00
Colin Walters
9f1a0b57cd Ensure g_file_copy() does not temporarily expose private files
Previously, g_file_copy() would (on Unix) create files with the
default mode of 644.  For applications which might at user request
copy arbitrary private files such as ~/.ssh or /etc/shadow, a
world-readable copy would be temporarily exposed.

This patch is suboptimal in that it *only* fixes g_file_copy()
for the case where both source and destination are instances of
GLocalFile on Unix.

The reason for this is that the public GFile APIs for creating files
allow very limited control over the access permissions for the created
file; one can either say a file is "private" or not.  Fixing
this by adding e.g. g_file_create_with_attributes() would make sense,
except this would entail 8 new API calls for all the variants of
_create(), _create_async(), _replace(), _replace_async(),
_create_readwrite(), _create_readwrite_async(), _replace_readwrite(),
_replace_readwrite_async().  That can be done as a separate patch
later.

https://bugzilla.gnome.org/show_bug.cgi?id=699959
2013-06-05 19:00:20 +01:00
Matthias Clasen
59372663f2 Don't try to find nfs mounts on Windows
This should fix the build there.
https://bugzilla.gnome.org/show_bug.cgi?id=592211
2013-02-02 00:19:15 -05:00
Colin Walters
f398bec5bc Add g_close(), use it
There are two benefits to this:

1) We can centralize any operating system specific knowledge of
   close-vs-EINTR handling.  For example, while on Linux we should never
   retry, if someone cared enough later about HP-UX, they could come by
   and change this one spot.
2) For places that do care about the return value and want to provide
   the caller with a GError, this function makes it convenient to do so.

Note that gspawn.c had an incorrect EINTR loop-retry around close().

https://bugzilla.gnome.org/show_bug.cgi?id=682819
2013-01-29 09:46:04 -05:00
Ryan Lortie
6be54e9f56 localfile: add support for monitoring on NFS
Add a pair of new extension points: 'gio-nfs-file-monitor' and
'gio-nfs-directory-monitor'.

Add a check to GLocalFile when creating a file monitor.  If the
requested file is in the user's home directory and the user has an NFS
home directory then attempt to use an implementation of one of the new
extension points.  If we don't have any implementations then fall back
to the normal "local" monitors.

https://bugzilla.gnome.org/show_bug.cgi?id=592211
2013-01-19 14:04:49 -05:00
David Zeuthen
d77948eadf fileinfo: mark lost+found/ root directory as hidden
This was reported in bug 689800.

https://bugzilla.gnome.org/show_bug.cgi?id=689800

Signed-off-by: David Zeuthen <zeuthen@gmail.com>
2012-12-06 16:21:58 -05:00
Dan Winship
468a166711 GLocalFile: canonicalize the initial directory separator
GLocalFile was (in certain situations) translating a path like
"/foo/bar/baz" to "/foo\bar\baz" on win32. Fix it to make sure the
initial directory separator gets canonicalized too.

Fixes gio/tests/g-icon on win32.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
731b469908 win32: define _WIN32_WINNT globally
Rather than defining _WIN32_WINNT only in a handful of files, define
it in config.h, like we do with _GNU_SOURCE.

(Also remove a "#define WIN32_LEAN_AND_MEAN" that isn't really all
that useful.)

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Timothy Arceri
edeffe0c87 Use url encoding for trash fileinfo path as per freedesktop trash specification
https://bugzilla.gnome.org/show_bug.cgi?id=687540
2012-11-09 08:40:43 -05:00
Colin Walters
6e64ba58b9 Switch all open() calls to use g_open()
Because it now handles EINTR.  And we should do so.  While most people
use Linux, which tries very hard to avoid propagating EINTR back up
into userspace, it can still happen.

https://bugzilla.gnome.org/show_bug.cgi?id=682833
2012-08-28 13:56:59 -04:00
Dan Winship
5c91af7e41 glocalfile: fix g_file_get_parse_name() on win32
When getting the parse name for a file: URI on win32, we were not
translating "\" to "/", resulting in incorrect output.

https://bugzilla.gnome.org/show_bug.cgi?id=669331
2012-08-06 11:27:36 -04:00
Dan Winship
ca5ed93fde glocalfile: fix error code when opening a directory on win32
g_file_read() was returning G_IO_ERROR_IS_DIRECTORY when you tried to
open a directory on unix, but G_IO_ERROR_PERMISSION_DENIED on win32.
Fix that, and add a test to tests/file.c

Pointed out on IRC by Paweł Forysiuk.

https://bugzilla.gnome.org/show_bug.cgi?id=669330
2012-02-09 06:48:12 -05:00
Matthias Clasen
00c00e2f3f Add G_FILE_ATTRIBUTE_FILESYSTEM_USED to get exact used space
This is implemented by with statfs_buffer.f_bavail (free blocks
for unprivileged users) as a default way to retrieve real free space.
Based on a patch by Marcus Carlson, bug 625751.
2012-01-09 21:49:08 -05:00
Matthias Clasen
31960257a6 Make glocalfile.c more readable
The many nested ifdefs here really deserve some annotations.
Based on a patch by Marcus Carlson, bug 625751.
2012-01-09 21:35:13 -05:00
Patrick Welche
afa82ae805 Avoid getmntinfo
- getmntinfo can take struct statfs or statvfs depending on the
  OS. Use getvfsstat and if not found getfsstat instead. Idea from
  Dan Winship.
- g_local_file_query_filesystem_info(): use statvfs.f_fstypename
  if available

https://bugzilla.gnome.org/show_bug.cgi?id=617949
2011-09-04 17:50:41 -04:00
Tomas Bzatek
116b2932ab glocalfile: Fix the grammar 2011-08-30 18:00:49 +02:00
Matthias Clasen
1b28408b8b Spelling fixes
Spelling fixes in comments and docs, provided by
Kjartan Maraas in bug 657336.
2011-08-29 14:49:32 -04:00
Ryan Lortie
633fd86815 glocalfile: don't bother with fstype on win32
Fixes the broken build on Windows.
2011-07-26 11:20:12 +02:00
Benjamin Otte
a5e94cbd36 glocalfile: Fix compilation without USE_STATFS and USE_STATVFS 2011-07-21 02:58:15 +02:00
Patrick Welche
7f289c924b Avoid failing arguments to statfs() test on systems which use statvfs.
- move choice of statfs vs statvfs from gio/glocalfile.c to configure.ac
- if statvfs is the choice, then don't check number of arguments to statfs()
- use choice in gio/gunixmounts.c as well

https://bugzilla.gnome.org/show_bug.cgi?id=617949
2011-07-18 14:17:28 -04:00
Kean Johnston
8b50e2f547 GLocalFile: Use _fstati64 rather than stat on Win32
We want this to get 64bit timestamps and file lenghts.
2011-04-15 10:15:04 +02:00
Serkan Kaba
26b65a3abd gio: Recognize reiser4 in g_file_query_filesystem_info()
Signed-off-by: Serkan Kaba <serkan@gentoo.org>
Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
2011-01-06 14:08:02 +01:00
Ryan Lortie
5b946e0504 gio/: fully remove gioalias hacks 2010-07-07 19:53:22 -04:00
Tor Lillqvist
2e84249082 Bypass a few functions not used on Windows when compiling for Windows 2010-06-22 12:16:14 +03:00
Tor Lillqvist
1229281d95 Define a public documented type for the struct stat used by g_stat()
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.)
2010-03-30 19:22:39 +03:00
Alexander Larsson
4535683b3f Keep metadata when files are renamed and trashed
This fixes https://bugzilla.gnome.org/show_bug.cgi?id=609813
2010-02-22 12:37:16 +01:00
Tor Lillqvist
021643cda4 Clarify use of struct stat on Windows 2010-02-04 19:59:05 +02:00
Matthias Clasen
f2d8f6287d Fix the filename roundtrip check
The check was always failing because the code was comparing
the wrong strings. Reported in bug 605977.
2010-01-06 13:27:19 -05:00
Matthias Clasen
8907bfee86 Fix up GIO docs 2009-11-29 22:54:16 -05:00
Stéphane Démurget
ef6117f78d Bug 324930 - Nicer message for EPERM on symlink
Introduced a more precise error message for EPERM when symlinking to
a local filesystem.

EPERM on symlink means symlinking is not supported by the underlying
fs so it is not the general meaning of EPERM which roughly translates
to 'Operation not permitted'.
2009-11-05 14:31:14 +01:00
Matthias Clasen
53fc10d269 Fix a lot of clang complaints
Mostly dead assignments.
2009-09-18 19:20:06 -04:00
Alexander Larsson
8af494d987 Avoid reading uninitialized memory
If the statfs call fails, don't look at the result.
2009-09-07 12:50:58 +02:00
Dan Winship
65cc5d895a Support g_main_context_push_thread_default() in gio
GFile allows for the possibility that external implementations may not
support thread-default contexts yet, via
g_file_supports_thread_contexts(). GVolumeMonitor is not yet
thread-default-context aware.

Add a test program to verify that basic gio async ops work correctly
in non-default contexts.

http://bugzilla.gnome.org/show_bug.cgi?id=579984
2009-07-01 09:02:46 -04:00
Alexander Larsson
7662c86611 Add extension point for adding metadata for local files
This adds a local_file_add_info vfunc to GVfs that vfs implementations
can override to add metadata for local files.
2009-06-23 16:35:42 +02:00
Alexander Larsson
14d58d51a3 Local file implementation of GFileIOStream and ops
This implements all the GIOStream file ops for local files.
We use the "fallback to output stream" for all GFileIOStream ops.
Some helpers stuff was added to the local input and output streams
so they could be reused.
2009-05-13 14:42:57 +02:00
Matthias Clasen
25ff8ee748 Don't lie about ext4 filesystems
When returning a filesystem type id, say "ext3/ext4" instead of "ext3",
since both use the same superblock magic, so we can't discriminate
them without more work.
2009-04-03 00:23:54 -04:00
Alexander Larsson
1ce74b0dd3 On trash, if rename fails with EXDEV, return G_IO_ERROR_NOT_SUPPORTED
Sometimes it seems like the trash dir and the file are on the same
filesystem but the rename fails with EXDEV anyway (can happen
e.g. with bind mounts or multiple mounts of the same device). In this
case we want to return the right error so that apps can fallback to
regular delete.
2009-04-02 19:01:56 +02:00
Alexander Larsson
70a276eca3 Bug 573843 – g_get_current_dir returns non-absolute path
2009-03-04  Alexander Larsson  <alexl@redhat.com>

	Bug 573843 – g_get_current_dir returns non-absolute path

	* glocalfile.c (canonicalize_filename):
	Handle the case where g_get_current_dir() returns a non-absolute path.


svn path=/trunk/; revision=7958
2009-03-04 13:47:53 +00:00
Alexander Larsson
0b9f24c1e1 Handle filesystems no supporting reporting how much is free. This fixes
2009-03-03  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_query_filesystem_info):
	Handle filesystems no supporting reporting how much is free.
	This fixes bug 573454 where the filesystem not supporting this
	is the gvfs smb backend over the fuse filesystem.



svn path=/trunk/; revision=7951
2009-03-03 14:40:44 +00:00
Alexander Larsson
319d60e444 Remove accidentally commited spew
2009-02-23  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	Remove accidentally commited spew



svn path=/trunk/; revision=7903
2009-02-23 15:12:39 +00:00
Matthias Clasen
f548330275 Fix "it's" vs "its" confusion throughout the source. Patch by Will
* Fix "it's" vs "its" confusion throughout the source. Patch
        by Will Thompson.


svn path=/trunk/; revision=7897
2009-02-23 04:30:06 +00:00
Alexander Larsson
39b3b41484 Bug 515777 - incorrect date&time on copy
2008-12-09  Alexander Larsson  <alexl@redhat.com>

	Bug 515777 - incorrect date&time on copy
	
        * glocalfile.c:
        (g_local_file_class_init):
	Copy mtime by default
	
        * gfile.c:
	Change docs about G_FILE_COPY_ALL_METADATA to not mention
	mtime as an example.



svn path=/trunk/; revision=7738
2008-12-09 11:15:36 +00:00
Matthias Clasen
d4d876846e Bug 548163 – Nautilus displays wrong error message for too long file
names

        * glocalfile.c (g_local_file_set_display_name): Correctly set
        error conditions if the new name is e.g. too long. Reported
        by Leonardo Ferreira Fontenelle.


svn path=/trunk/; revision=7696
2008-11-28 08:05:49 +00:00
Cosimo Cecchi
d20bf1076b Bug 561375 – Leaks mountpoint description
2008-11-21  Cosimo Cecchi  <cosimoc@gnome.org>

	Bug 561375 – Leaks mountpoint description

	* glocalfile.c: (get_mount_info): don't leak the mountpoint description
	string.

svn path=/trunk/; revision=7662
2008-11-21 00:01:22 +00:00
Grahame Bowland
df719f749c Bug 558185 – 'parent' variable in
2008-10-31  Grahame Bowland  <grahame@angrygoats.net>

	Bug 558185 – 'parent' variable in g_local_file_get_child_for_display_name() 
	hits g_object_unref(NULL) assertion

	* gio/glocalfile.c: 
	- remove unused variable. Patch by Matt Johnston <matt@ucc.asn.au>

svn path=/trunk/; revision=7636
2008-10-31 02:23:55 +00:00
Federico Mena Quintero
7b46b2a43b Fix leak inside g_local_file_get_parse_name()
Signed-off-by: Federico Mena Quintero <federico@novell.com>

svn path=/trunk/; revision=7629
2008-10-27 20:42:32 +00:00
Tor Lillqvist
801da1dfc1 Avoid a g_critical(). Pass a large enough result buffer to
2008-09-30  Tor Lillqvist  <tml@novell.com>

	* glocalfile.c (get_volume_for_path) [Win32]: Avoid a
	g_critical(). Pass a large enough result buffer to
	GetVolumePathNameW(). Just use MAX_PATH.


svn path=/trunk/; revision=7561
2008-09-30 10:47:06 +00:00
Loïc Minier
83e4fb4f9b Bug 535124 – umask 002 not being applied for new directories, new files
2008-08-08  Loïc Minier  <lool@dooz.org>

	Bug 535124 – umask 002 not being applied for new directories, new
	files get the correct umask

	* glocalfile.c: (g_local_file_make_directory): Use 0777 instead of
	0755 as umask

svn path=/trunk/; revision=7323
2008-08-08 09:26:51 +00:00
Matthias Clasen
563eb12748 Use a configure check for structfs.f_bavail.
* glocalfile.c: Use a configure check for structfs.f_bavail.


svn path=/trunk/; revision=7144
2008-07-02 16:49:04 +00:00
Cody Russell
3d93bf6968 Moved all relevant typedefs into these files.
2008-07-01  Cody Russell  <bratsche@gnome.org>

        * gio/gioenums.h:
        * gio/giotypes.h:
	Moved all relevant typedefs into these	files.

        * gio/*.[ch]:
	Updated wrt added files.

        Split types into separate file	for easier maintainership. (#538564)


svn path=/trunk/; revision=7127
2008-07-01 06:32:35 +00:00
Johan Dahlin
761424465a Include "config.h" instead of <config.h> Command used: find -name
2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch


svn path=/trunk/; revision=7092
2008-06-22 15:10:51 +00:00
Christian Persch
9c17697b56 Use g_set_error_literal where appropriate. Patch from bug #535947.
svn path=/trunk/; revision=7051
2008-06-16 16:53:58 +00:00
Tor Lillqvist
cc8adfaeb8 Bug 538362 - Get Win32 icons back in the file chooser
2008-06-16  Tor Lillqvist  <tml@novell.com>

	Bug 538362 - Get Win32 icons back in the file chooser

	* gcontenttype.c (g_content_type_get_icon): Look up the icon
	corresponding to a file extension in the Registry. Patch by Hans
	Breuer.
	(get_registry_classes_key): Handle also REG_EXPAND_SZ type values.
	
2008-06-16  Tor Lillqvist  <tml@novell.com>

	Patches by Hans Breuer:

	* glocalfile.c (is_xp_or_later): Handle compiling against older
	SDK headers with missing VerifyVersionInfo().  Conditioned on
	_MSC_VER, but should probably use some better test.
	* glocalfile.c (g_local_file_query_filesystem_info): Don't test
	uninitialised statfs_result variable on Win32.



svn path=/trunk/; revision=7049
2008-06-16 13:23:14 +00:00
Michael Natterer
a4427bfff5 chain up unconditionally in finalize() and dispose(). Also don't
2008-06-16  Michael Natterer  <mitch@imendio.com>

	* *.c: chain up unconditionally in finalize() and dispose(). Also
	don't dereference these function pointers when calling them since
	that has no meaning at all.


svn path=/trunk/; revision=7048
2008-06-16 09:54:04 +00:00
Ross Burton
3480685d4e Bug 536252 – GFileEnumerator should allow access to the containing GFile
2008-06-16  Ross Burton  <ross@burtonini.com>

	Bug 536252 – GFileEnumerator should allow access to the containing
	GFile
	
	* gio/gfileenumerator.c:
	* gio/gfileenumerator.h:
	* gio/gfile.h:
	Add g_file_enumerator_get_container() and a container writeable
	construct-only property.  Also shuffle around typedefs to make it
	compile.
	
	* gio/glocalfileenumerator.c:
	* gio/glocalfileenumerator.h:
	* gio/glocalfile.c:
	Instead of a string filename take a GFile in the constructor and
	use it to set the container property.
	
	* gio/gio.symbols:
	* docs/reference/gio/gio-sections.txt:
	Update with new API.

svn path=/trunk/; revision=7044
2008-06-16 08:49:08 +00:00
Matthias Clasen
bb5bfd3546 revert unintended change
svn path=/trunk/; revision=6998
2008-06-11 14:25:18 +00:00
Matthias Clasen
a0c45852e1 Bug 536641 – Filesystem querying in gio does not list AFS and autofs
file systems

        * glocalfile.c (get_fs_type): Add afs and autofs.
        Patch by Danny Baumann.


svn path=/trunk/; revision=6988
2008-06-10 15:37:41 +00:00
simon.zheng
58e4b46343 Fix #533369. Check whether memeber statvfs.f_basetype available or not.
2008-05-27  simon.zheng  <simon.zheng@sun.com>

	* configure.in: Fix #533369. Check whether memeber statvfs.f_basetype 
        available or not.
	* gio/glocalfile.c: (g_local_file_query_filesystem_info):
        Fix #533369. Make G_FILE_ATTRIBUTE_FILESYSTEM_TYPE work on Solaris.


svn path=/trunk/; revision=6939
2008-05-27 07:51:13 +00:00
Ross Burton
8b6fdb362f Fix typo in error message (#534764).
2008-05-25  Ross Burton  <ross@burtonini.com>

	* glocalfile.c:
	Fix typo in error message (#534764).

svn path=/trunk/; revision=6928
2008-05-25 18:31:42 +00:00
Matthias Clasen
a30f8df3c8 fix free space information for ncpfs
svn path=/trunk/; revision=6902
2008-05-17 06:08:08 +00:00
Matthias Clasen
67b2f9a99b Bug 530196 – _g_local_file_has_trash_dir() doesn't handle st_dev == 0
* glocalfile.c (_g_local_file_has_trash_dir): Handle the case that
        st_dev might be zero.



svn path=/trunk/; revision=6901
2008-05-17 06:01:43 +00:00
Alexander Larsson
fe68fc7496 Don't leak parent.
2008-03-31  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (get_parent):
	Don't leak parent.
	


svn path=/trunk/; revision=6801
2008-03-31 20:04:24 +00:00
Alexander Larsson
b4e4bbd594 Reuse old string instead of adding new one.
2008-03-28  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_move):
	Reuse old string instead of adding new one.



svn path=/trunk/; revision=6762
2008-03-28 11:44:04 +00:00
Alexander Larsson
9dfce3a26a Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
2008-03-27  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_move):
	Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
	file over directory. This is according to the docs and what the move via
	copy+remove fallback does.



svn path=/trunk/; revision=6758
2008-03-27 20:13:00 +00:00
Alexander Larsson
7437486b36 Use right define name for f_fstypename member check
2008-03-14  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
        (g_local_file_query_filesystem_info):
	Use right define name for f_fstypename member check

2008-03-14  Alexander Larsson  <alexl@redhat.com>

        * configure.in:
	Add required includes for f_fstypename member check.
	

svn path=/trunk/; revision=6703
2008-03-14 09:19:09 +00:00
Tor Lillqvist
5fe2e21960 Implement as empty, returning FALSE, on Win32.
2008-03-12  Tor Lillqvist  <tml@novell.com>

	* glocalfile.c (_g_local_file_has_trash_dir): Implement as empty,
	returning FALSE, on Win32.


svn path=/trunk/; revision=6689
2008-03-12 13:16:54 +00:00
Alexander Larsson
c5a10d2650 Correctly implement can_trash by actually looking for a trash dir, not
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-03-11 14:48:28 +00:00
Tor Lillqvist
93bd705e78 Define FILE_READ_ONLY_VOLUME if it is missing from winnt.h. (#521145)
2008-03-08  Tor Lillqvist  <tml@novell.com>

	* glocalfile.c: Define FILE_READ_ONLY_VOLUME if it is missing from
	winnt.h. (#521145)


svn path=/trunk/; revision=6643
2008-03-08 16:06:00 +00:00
Alexander Larsson
3cacbe8178 Use struct statfs.f_fstypename if availible (e.g. on OpenBSD) Patch from
2008-03-07  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
        (g_local_file_query_filesystem_info):
	Use struct statfs.f_fstypename if availible (e.g. on OpenBSD)
	Patch from Jasper Lievisse Adriaanse


svn path=/trunk/; revision=6638
2008-03-07 14:36:15 +00:00
Alexander Larsson
f0e54fd328 Handle filesystems (like ntfs-3g) that return EEXIST instead of ENOTEMPTY
2008-02-26  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
        (g_local_file_delete):
	Handle filesystems (like ntfs-3g) that return EEXIST instead
	of ENOTEMPTY (#518816)


svn path=/trunk/; revision=6598
2008-02-27 11:16:58 +00:00
Wouter Bolsterlee
8b294f1f9d Fixup translator comments (#518578).
2008-02-25  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfile.c (g_file_find_enclosing_mount):
	* ginputstream.c (g_input_stream_set_pending):
	* glocalfile.c (g_local_file_find_enclosing_mount):
	* gmount.c (g_mount_unmount), (g_mount_eject), (g_mount_remount):
	* goutputstream.c (g_output_stream_set_pending):

	Fixup translator comments (#518578).

svn path=/trunk/; revision=6591
2008-02-25 14:31:19 +00:00
Wouter Bolsterlee
a9a0498007 Fix a few typos in translator comments and documentation.
2008-02-25  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfile.c (g_file_find_enclosing_mount):
	* giomodule.c:
	* glocalfile.c (g_local_file_find_enclosing_mount):
	* goutputstream.c:

	Fix a few typos in translator comments and documentation.

svn path=/trunk/; revision=6590
2008-02-25 14:04:38 +00:00
Alexander Larsson
9edb46455c Add translator comments (#518578)
2008-02-25  Alexander Larsson  <alexl@redhat.com>

        * gfile.c:
        * ginputstream.c:
        * glocalfile.c:
        * gmount.c:
        * goutputstream.c:
	Add translator comments (#518578)


svn path=/trunk/; revision=6589
2008-02-25 13:47:00 +00:00
Alexander Larsson
493cbfa607 Make new strings reuse old ones.
2008-02-25  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
	Make new strings reuse old ones.


svn path=/trunk/; revision=6581
2008-02-25 09:11:09 +00:00
Alexander Larsson
1d568f35d1 Implement trashing and filesystem::readonly for win32 (#517235) Patch from
2008-02-25  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
	Implement trashing and filesystem::readonly for win32 (#517235)
	Patch from Yevgen Muntyan


svn path=/trunk/; revision=6578
2008-02-25 08:15:35 +00:00
Alexander Larsson
6dc9b7ee00 Add new g_file_has_prefix that does the same as g_file_contains_file.
2008-02-21  Alexander Larsson  <alexl@redhat.com>

        * gfile.[ch]:
        * gio.symbols:
	Add new g_file_has_prefix that does the same as g_file_contains_file.
	Deprecate g_file_contains_file and add a macro that converts
	it to g_file_has_prefix.
	The reason for this change is that the contains_file() name seems to
	imply that this does more work than what it does, but its really only
	a name match (from #517086)
	
        * gdummyfile.c:
        * glocalfile.c:
        * tests/g-file.c:
	Update to match the above change.


svn path=/trunk/; revision=6546
2008-02-21 09:09:59 +00:00
Alexander Larsson
3b1b6a9722 Use g_unlink/g_rename instead of unlink/rename; do not pass raw filenames
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-02-18 15:35:16 +00:00
Alexander Larsson
b221d1b36d Open files with O_BINARY on windows. (#517140)
2008-02-18  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
        * glocalfileoutputstream.c:
	Open files with O_BINARY on windows. (#517140)


svn path=/trunk/; revision=6531
2008-02-18 10:10:58 +00:00
Alexander Larsson
8a9c5b6d3c Copy permissions with file on copy (#514084) This is what cp does and
2008-02-14  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
	Copy permissions with file on copy (#514084)
	This is what cp does and makes sure e.g. the
	exec permissions are kept.
	Its kinda weird in that it keeps the permission bits
	the same while the uid and gid are different. However
	the new uid is the user so its not a security issue,
	and I've heard no complaints about cp on this issue.



svn path=/trunk/; revision=6514
2008-02-14 11:00:09 +00:00
Christian Persch
37ac644bd1 Save errno before calling other funcs that potentially alter it. Bug
* gio/gdesktopappinfo.c: (ensure_dir):
	* gio/glocalfile.c: (g_local_file_query_filesystem_info),
	(g_local_file_read), (g_local_file_delete), (g_local_file_trash),
	(g_local_file_move):
	* gio/glocalfileinfo.c: (set_xattr), (_g_local_file_info_get),
	(_g_local_file_info_get_from_fd), (set_unix_mode),
	(set_unix_uid_gid), (set_symlink), (set_mtime_atime):
	* gio/glocalfileinputstream.c: (g_local_file_input_stream_read),
	(g_local_file_input_stream_skip),
	(g_local_file_input_stream_close),
	(g_local_file_input_stream_seek):
	* gio/glocalfileoutputstream.c:
	(g_local_file_output_stream_write),
	(g_local_file_output_stream_close),
	(g_local_file_output_stream_seek),
	(g_local_file_output_stream_truncate), (copy_file_data),
	(handle_overwrite_open):
	* gio/gunixinputstream.c: (g_unix_input_stream_read),
	(g_unix_input_stream_close), (read_async_cb), (close_async_cb):
	* gio/gunixoutputstream.c: (g_unix_output_stream_write),
	(g_unix_output_stream_close), (write_async_cb), (close_async_cb):
	Save
	errno before calling other funcs that potentially alter it. Bug
	#514766.

svn path=/trunk/; revision=6466
2008-02-06 15:10:08 +00:00
Alexander Larsson
2185733235 Don't succeed with trash if newly created trash dir has the wrong owner.
2008-02-06  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_trash):
	Don't succeed with trash if newly created
	trash dir has the wrong owner. (#514696)


svn path=/trunk/; revision=6459
2008-02-06 10:06:54 +00:00
Alexander Larsson
c6af0efb11 Don't spew warnings when destination is not a GLocalFile.
2008-02-05  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_move):
	Don't spew warnings when destination is not
	a GLocalFile.


svn path=/trunk/; revision=6451
2008-02-05 10:11:12 +00:00
Matthias Clasen
c923700b3d Avoid trivial differences in translatable strings
svn path=/trunk/; revision=6386
2008-01-27 21:58:53 +00:00
Matthias Clasen
af7645a498 String fixes
svn path=/trunk/; revision=6370
2008-01-25 06:10:29 +00:00
Alexander Larsson
2544ae3cd6 Canonicalize paths that start with more than two slashes.
2008-01-22  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
        (canonicalize_filename):
	Canonicalize paths that start with more than
	two slashes.
	
        * tests/g-file.c:
        (compare_two_files):
        (test_g_file_new_for_path):
	Test the above



svn path=/trunk/; revision=6353
2008-01-22 09:38:37 +00:00
Alexander Larsson
b784923e9c Allow UTF-8 in file:// parse names.
2008-01-22  Alexander Larsson  <alexl@redhat.com>

        * glocalfile.c:
	Allow UTF-8 in file:// parse names.
	
        * tests/Makefile.am:
        * tests/data-input-stream.c:
        * tests/data-output-stream.c:
        * tests/g-file-info.c:
        * tests/g-file.c:
	Added a bunch of tests from Tomas Bzatek


svn path=/trunk/; revision=6351
2008-01-22 09:13:28 +00:00
Matthias Clasen
54300dde6d Whitespace cleanups.
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
2008-01-21 14:02:19 +00:00
Alexander Larsson
0026537f37 Allow calls to implementation of copy and write even if the type of the
2008-01-17  Alexander Larsson  <alexl@redhat.com>

        * gfile.c:
        (g_file_copy):
        (g_file_move):
	Allow calls to implementation of copy and write
	even if the type of the file implementations is
	different. This can be used to implement native
	upload and download calls in a vfs.
	
        * glocalfile.c:
        (g_local_file_move):
	Protect against the case where move is called
	with one file not being local.
	
	Make sure we call the progress callback once
	in the native move operation so that the caller
	knows how many bytes were copied.


svn path=/trunk/; revision=6324
2008-01-17 10:57:48 +00:00