This is an interface for stateful conversions of data. Its a generic
interface suitable for things like IConv, compression, decompression,
and regexp replacement.
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'.
Since returning exactly one match has special significance, don't
give up matching before we've found at least 2 types. Also, make
sure that we don't return the same mime type more than once.
Bug 541236.
GWin32DirectoryMonitor was quite broken, but nobody had apparently
noticed, or at least not filed any bug. Only now with a bleeding edge
GTK+ file chooser does the code get exercised in common programs like
gtk-demo or GIMP, apparently. Bug #598899.
The source can be destroyed by the time we complete the result, and
then the g_source_get_context(current_source) call will cause
a critical error. We check for the source being destroyed and avoid
the check in that case.
This means we miss the right-thread check in this case, but thats
merely a helper, so this is not critical.
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
g_network_address_address_enumerator_next_finish takes the first item of the
address list and moves the pointer to the next one, so we shouldn't do the same
in g_network_address_address_enumerator_next_async function
Fixes bug #593941
g_socket_send_message() and g_socket_send_to() fail with ENOBUFS or
EFAULT due to the fact that if no "address" argument is specified to
g_socket_send_message, when g_socket_send_message() calls sendmsg(2),
the 2nd parameter to sendmsg ("const struct msghdr *msg") contains
uninitialized values. The fix is simple - initialize msg.msg_name to
NULL and msg.msg_msg_namelen to 0.
https://bugzilla.gnome.org/show_bug.cgi?id=594759
This warning hits code that uses GSimpleAsyncResult outside of a
mainloop as a helper object. For instance EggDBus does this.
Since the bugs this warning would fix are pretty easy to spot
and since EggDBus is deployed already we just remove the
"called from outside main loop" warning.
However, we need to keep the "called from wrong context" warning
as that is very helpful when debugging misuse of the new multiple
main context code.
Previous code used g_mkstemp(). But when using
G_FILE_CREATE_REPLACE_DESTINATION, no attempt was made to ensure proper
mode and flags of the created temporary file. The visible issue was that
the file was always created with mode 0600 as opposed to using 0666.
(The invisible issue was that O_RDWR was used instead of O_WRONLY.)
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.
Even though we ignore SIGPIPE, gdb will still stop when the process
receives one, which sometimes confuses people into thinking the app
has crashed (eg, bug 578984, bug 590420), and is annoying anyway. So
use MSG_NOSIGNAL if it's there.
http://bugzilla.gnome.org/show_bug.cgi?id=591378
This patch only adds the function. The function is a NOP.
See the API documentation for a rationale.
Part of: Bug 591388 - number of GCancellables available is too limited
For details, see bug 587482. The new api:
- Provide new _with_operation() variants of all unmount and eject methods
- Add GMountOperation::show-processes signal
- this can be used to show processes blocking an unmount operation
- Deprecate all unmount and eject methods
- Add g_drive_can_start_degraded() method
- this is to avoid auto-starting degraded drives
- Make g_drive_stop() resp. g_file_stop_mountable() take a GMountOperation
- these ops were recently added and not yet public API so it's fine
to change how they work
- Provide a way to poll mountable files, e.g. g_file_poll_mountable()
- Add some missing file attributes for mountable files
- G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE
- needed for the GDU Nautilus extensions to format a volume
- G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED:
- mimics g_drive_can_start_degraded()
- G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL:
- mimics g_drive_can_poll_for_media()
- G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC
- mimics g_drive_is_media_check_automatic()
g_simple_async_result_complete() now checks that it's being run from
the correct main loop, so tests/gio/simple-async-result was failing,
because it called it from outside any main loop. (And gio's pltcheck
was failing because I hadn't added g_main_current_source() to it.)
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
Currently, to implement cancellability correctly, all synchronous
calls to GSocket must be preceded by a g_socket_condition_wait() call,
(even though GSocket does this internally as well) and all
asynchronous calls must do occasional manual
g_cancellable_is_cancelled() checks. Since it's trivial to do these
checks inside GSocket instead, and we don't particularly want to
encourage people to use the APIs non-cancellably, move the
cancellation support into GSocket and simplify the existing callers.
http://bugzilla.gnome.org/show_bug.cgi?id=586797
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.
g_filename_complete_get_completions() return value is meant to be a
g_strfreev-compatible array i.e. NULL-terminated. However, pointer arrays
aren't automagically NULL-terminated. This fixes bug 586868
I'm not sure why we used the elaborate formula to convert the io-priority
to the priority of the mainloop idle when emulating async i/o with idles.
However, it causes the default io priority to be less than the normal
idle prio, so the i/o won't be scheduled if there is an idle outstanding.
There is really no great mapping to use here, doing blocking i/o in an
idle of any prio is generally bad and apps doing a lot of async i/o should
initialize threads. However, if we use the io-priority directly we at least
avoid the starvation problem above and make things easier to understand.
Add API for starting/stopping drives. This new API will enable
GVolumeMonitor and GVfs implementations to add support for the
following features
1. Powering down external hard disk enclosures / drives
2. Starting/stopping multi-disk devices (such as RAID/btrfs/ZFS)
3. Connecting/disconnecting iSCSI devices
4. Reacting to the user pressing e.g. the "remove drive" button on
a IBM/Lenovo Ultrabay: http://www.thinkwiki.org/wiki/Ultrabay
See the bug for the corresponding GVfs and Nautilus changes.
The icon names are folder-documents, folder-download, folder-music,
folder-pictures, folder-publicshare, folder-templates, folder-videos.
See bug 541276.
Change the logic in g_socket_listener_add_inet_port() as per the
reasoning in the bug report.
- If the OS supports neither IPv6 or IPv4, fail.
- If the OS supports only IPv6, do that.
- If the OS supports only IPv4, do that.
- If the OS supports IPv6 and IPv6 "speaks" IPv4 then bind it
and be done.
- If the OS supports IPv6 and IPv6 doesn't "speak" IPv4 then
create an additional socket for IPv4.
- If binding any socket fails then fail the entire call.
Also, remove the ability to call this function with port == 0. This
is a useless thing to do anyway since you have no way to know what
port number was actually allocated. We should have a separate
function to deal with this.
... as g_cancellable_cancel()
Rework a g_critical() that would (rarely) trigger when _reset() was
called in a thread different from _cancel() by making _reset() wait for
the cancel function to be finished the same way
g_cancellable_disconnect() uses.
The default implementation of g_file_copy() checked the size of the file
to copy to give useful progress updates unconditionally. This can cause
long delays on 1-connection FTP servers while it tries to open a second
connection before it returns EBUSY. This patch makes this query only
happen when we actually send progress updates.
In particular, targets with weight 0 should be very UNlikely to be
selected, not very likely, as they were before. However, even ignoring
that bug in the logic, there was an additional bug (swapping list
items would cause the 0-weight items to get re-ordered incorrectly
anyway), and the code contained several fencepost errors.
This patch also adds gio/tests/srvtarget.c, which confirms that for a
sample list of targets, we now generate all possible correct random
sortings and no incorrect sortings, and the correct sortings occur in
roughly the expected proportions (though if the current code is
still wrong, those proportions may be wrong as well).
http://bugzilla.gnome.org/show_bug.cgi?id=583398
Do proper referencing and unreferencing of
GWinHttpFileInputStream::file and
GWinHttpFileInputStream::file::vfs. Implement
GWinHttpFileInputStream::close_fn.
The docs mentions a separate seekable API for the various file streams
which don't actually exists. Change this to refer to the generic
GSeekable calls.
It was possible for a signal handler to remove the last reference and
dispose the monitor. If there were remaining pending_file_changes they
tried to dereference the disposed monitor.
This patch simply calls g_object_{ref,unref} around the loop that signals
the changes.
It's a bit lame, but some of our C++ wrapping scripts expect objects to be
typedefed like:
typedef struct _FooClass FooClass;
struct {} _FooClass;
Rather than:
typedef struct {} FooClass;
Functionally they're the same, but the former makes our lives easier in the
short term
The whole protocol name thing is pretty weird. The getprotobyname functions
seem to only specify one mapping for name <-> ids, so all families/types
must use the same values. Plus the values used for the protocols are
standardized by IANA, so are always the same.
So, we drop using names for protocols, intead introducing an enum with
a few commonly availible and used protocols.
Mention g_socket_set_listen_backlog in g_socket_listen.
Explain that listen backlock needs to be set before calling
listen. Also verify this with a g_return_if_fail.
Previously we saved the location in various places which is unnecessary
and sometimes even wrong. For instance, we saved the address we bound to
which may not have the final port set.
The main error would be "not supported" which could happen for e.g.
unix domain sockets, we don't really care, as this is mainly something
for TCP to help out a bit.
This is nice for some callers so they can report an error.
It is also required to support opional address types like
abstract paths for unix domain sockets.
When you're using the threaded resolver and using a sync call
without a cancellable the resolve_sync forgot to unlock the
initial req->mutex lock, leading to a deadlock when unrefing
the request.
We want to use the protocol id for lookup in the GSocketConnection
code, so we expose it. We also make GSocket store the protocol
as an int for less memory use and to allow platform specific protocols
to be specified.
Also added g_socket_protocol_id_lookup_by_name() to allow the higher
level code to specify the name by string, and g_socket_get_protocol_name()
to get it.
We were sometimes failing in g_socket_check_pending_error because
we were not setting optlen on input and it was sometimes randomly
less than sizeof(int).
This adds:
GInitable - failable object constructor interface
GAsyncInitable - async failable object constructor interface
GSocket - Platform independent lowlevel berkely socket style object
GSocketControlMessage - For passing control messages over GSocket
GUnixFDMessage - unix fd passing socket control message
Some changes were done during the import from gnio to make things
work in glib. For instance, types were moved to other headers, header
file boiler plate were updated to glib style and gio.symbols stuff
was added.
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.
There is no need to have a GIOChannel in the GPollFD in
g_cancellable_create_pollfd. All we need is an Event object that
we signal when cancelling and reset when resetting.
Also, supporting g_cancellable_get_fd on Windows using _pipe is useless
as it doesn't work with any corresponding poll() function, so just don't
support that on win32.
I tested this with the cancellation support in GSocket from gnio.
glib/pcre/pcre_ucp_search_funcs.c, glib/pcre/pcre_valid_utf8.c: add
back missing config.h includes, and this time add them to the copies
in glib/update-pcre/ too so they don't get lost again on the next PCRE
update.
glib/garray.c, glib/gbase64.c: fix signed/unsigned pointer casts
gio/xdgmime/xdgmimeglob.c: remove unused variable
gio/tests/live-g-file.c: fix printf args on x86_64
tests/Makefile.am, tests/regex-test.c: remove redundant -DENABLE_REGEX
It turns out that just calling g_inet_address_get_type() isn't
enough, since its marked G_GNUC_CONST, so the call is optimized
away. If we assign the return value to a volatile location we ensure
it is called.
OS X's headers split up the current and old (BIND 4) nameserver stuff
slightly differently than Linux does, but explicitly including
arpa/nameser_compat.h does the right thing on both. Part of #580301
In glibc, IN6_IS_ADDR_UNSPECIFIED() et al. cast their argument to a
uint32_t*, so it doesn't matter whether you pass them the in6_addr
itself (which is what you're supposed to do) or one of its union
members (which is what we were actually doing). Solaris's macro
accesses the in6_addr fields directly though, and so only works if you
pass the actual in6_addr. #580194.
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.
Higher-level wrappers around GResolver. GSocketConnectable provides an
interface for synchronously or asynchronously iterating multiple
socket addresses, with GNetworkAddress and GNetworkService providing
interfaces based on hostname and SRV record resolution.
Part of #548466.
GResolver provides asynchronous (and synchronous-but-cancellable) APIs
for resolving hostnames, reverse-resolving IP addresses back to
hostnames, and resolving SRV records. Part of #548466.
Types and methods for dealing with IPv4 and IPv6 addresses (and UNIX
domain socket addresses under UNIX). This does not include code for
actual socket I/O.
Originally from "gnio". Much of the code was written by Christian
Kellner, Samuel Cormier-Iijima, and Ryan Lortie.
Part of #548466.
There are race conditions when connecting and disconnecting from the
"cancelled" signal on GCancellable which you need to do when
implementing cancellable operations. This adds helper functions that
avoid these races and mentions these races in the docs. (#572844)
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)
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.
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.
Update various README files to refer to git instead of svn.
Add a README.commits that is pretty much a copy of the same file
in GTK+. Also discontinue ChangeLog files.
2009-03-26 Carlos Garnacho <carlosg@gnome.org>
Bug 575270 – GVolumeMonitor::mount-pre-unmount not being emitted
* gunixmount.c (eject_unmount_cb) (eject_unmount_do_cb)
(eject_unmount_do): Emit ::mount-pre-unmount and wait 500msec before
actually trying to unmount.
svn path=/trunk/; revision=8020
2009-03-17 Colin Walters <walters@redhat.com>
Bug 575708 - runaway inotify madness ...
* gfilemonitor.c: Queue up events in a local list and
fire one idle, instead of queuing lots of individual
idles which has bad performance behavior.
svn path=/trunk/; revision=8010
2009-03-16 Alexander Larsson <alexl@redhat.com>
Bug 575555 – Use fsync() when replacing files to avoid data loss on crash
* configure.in:
Look for fsync().
* glib/gfileutils.c:
(write_to_temp_file):
fsync temp file if destination file exists
2009-03-16 Alexander Larsson <alexl@redhat.com>
Bug 575555 – Use fsync() when replacing files to avoid data loss on crash
* glocalfileoutputstream.c:
(g_local_file_output_stream_close):
(_g_local_file_output_stream_replace):
fsync temp file before closing if replacing target file
svn path=/trunk/; revision=7991
2009-03-04 Alexander Larsson <alexl@redhat.com>
Bug 573970 – crash in gunixvolumemonitor:update_mounts when unmounting
* gunionvolumemonitor.c:
(g_union_volume_monitor_dispose):
Run dispose on child monitors when disposing.
* gunixvolumemonitor.c:
Remove all volumes and mount on dispose to avoid circular
dependencies not freeing the monitor
svn path=/trunk/; revision=7957
2009-03-03 Alexander Larsson <alexl@redhat.com>
Bug 561172 – gnome-open fails on local URIs with anchors
* gdesktopappinfo.c:
Don't force uris to filenames if the uri has an anchor, because
that would strip the anchor.
* glocalvfs.c:
Strip anchor from file:// uris when creating GFile, since
g_filename_from_uri doesn't handle them.
svn path=/trunk/; revision=7953
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-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
* giomodule.c: Use a separate lock for extension point registration
to avoid deadlock. Discovered by Torsten Schoenfeld
svn path=/trunk/; revision=7935
2009-02-27 Alexander Larsson <alexl@redhat.com>
* giomodule-priv.h:
* giomodule.c:
Split out the extension point registration code to its
own function.
* glocalvfs.c:
Ensure extension points are registered before extending it.
It might not have happened yet if g_vfs_get_local() is called.
svn path=/trunk/; revision=7919
2009-02-26 Alexander Larsson <alexl@redhat.com>
Bug 540461 – g_memory_output_stream_get_data_size() doesn't behave as document
* gmemoryoutputstream.c:
Track actual valid size, even if we later seek back.
* tests/memory-output-stream.c:
Add testcase
svn path=/trunk/; revision=7916
2009-02-26 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Support desktop file key X-GIO-NoFuse which disables
use of fuse pathnames for %u and %U arguments.
svn path=/trunk/; revision=7914
2009-02-25 Alexander Larsson <alexl@redhat.com>
Bug 570073 – Add support for reading filesystems on Interix
* gunixmounts.c (_g_get_unix_mounts):
Support Interix. Patch from Fabian Groffen
svn path=/trunk/; revision=7911
2009-02-20 Alexander Larsson <alexl@redhat.com>
* gcontenttype.c:
(g_content_type_guess):
Don't ever sniff desktop files when the filename is known.
In other words, only allow desktop files with the .desktop extension
and when the filename isn't known.
This is a security precaution since desktop files can execute
arbitrary code when launched and we don't want to allow them to
try and hide as another type. There is no legit reason to not
have the .desktop extension anyway.
svn path=/trunk/; revision=7892
2009-02-19 Alexander Larsson <alexl@redhat.com>
Bug 549298 – impossible to copy files with p (pipe) flag
* gfile.c:
(file_copy_fallback):
Error out if the source file is a special file
svn path=/trunk/; revision=7885
2009-02-18 Alexander Larsson <alexl@redhat.com>
Bug 560564 – Replacing a symlink with its linked file truncates the original file
* gioenums.h:
Add G_FILE_CREATE_REPLACE_DESTINATION
* glocalfileoutputstream.c:
(handle_overwrite_open):
(_g_local_file_output_stream_replace):
Handle G_FILE_CREATE_REPLACE_DESTINATION when overwriting files.
* gfile.c:
(file_copy_fallback):
Pass G_FILE_CREATE_REPLACE_DESTINATION to g_file_replace when copying
with overwrite.
svn path=/trunk/; revision=7880
2009-02-17 Ryan Lortie <desrt@desrt.ca>
* gfileinfo.c: unref the destination's attribute matcher before
overwriting it.
svn path=/trunk/; revision=7879
* gmountoperation.[hc]: Add an "aborted" signal to abort a
mount operation from the backend side.
* gvolume.h: Add docs regarding the "aborted" signal.
svn path=/trunk/; revision=7866
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
2009-02-16 Ryan Lortie <desrt@desrt.ca>
Bug 571598 – GAsyncResult with NULL gobject
* gsimpleasyncresult.c: remove various assertions and add some checks
to allow for a NULL source_object in GSimpleAsyncResult.
svn path=/trunk/; revision=7864
2009-02-06 Murray Cumming <murrayc@murrayc.com>
* gio/gfilterinputstream.c:
* gio/gfilteroutputstream.c: Correct the grammar in some property
documentation.
* gio/gdatainputstream.c:
* glib/gregex.c: Correct the spelling of
occurrence in documentation.
svn path=/trunk/; revision=7856
2009-02-04 Alexander Larsson <alexl@redhat.com>
Bug 566747 - URIs opened with firefox %u load as local files
* gdummyfile.c (g_dummy_file_get_path):
Dummy files are never used for local paths, so always return NULL
in get_path().
svn path=/trunk/; revision=7849
2009-01-29 Ryan Lortie <desrt@desrt.ca>
* gioerror.c (g_io_error_from_errno): handle all possible cases of
EAGAIN and EWOULDBLOCK being (un)defined and (un)equal.
svn path=/trunk/; revision=7836
2009-01-28 Ryan Lortie <desrt@desrt.ca>
Bug 568575 – _async functions for GDataInputStream
* gdatainputstream.h:
* gdatainputstream.c: add _async versions of read_line and read_until.
* gio.symbols:
* ../docs/reference/gio/gio-sections.txt: add new functions
* tests/sleepy-stream.c: new test case for async read line
* tests/Makefile.am: add new test
svn path=/trunk/; revision=7835
2009-01-22 Ryan Lortie <desrt@desrt.ca>
Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1
* gbufferedinputstream.c (g_buffered_input_stream_fill_async,
g_buffered_input_stream_fill): check for count < -1 instead of count <
0 and copy modified check to non-async version for consistency.
document the "count = -1" API.
svn path=/trunk/; revision=7828
2009-01-22 Ryan Lortie <desrt@desrt.ca>
Bug 568741 – g_buffered_input_stream_fill_async doesn't work
* gbufferedinputstream.c (fill_async_callback): grow the buffer tail
after we have successfully read data from the base stream
svn path=/trunk/; revision=7827
2009-01-20 Ryan Lortie <desrt@desrt.ca>
Bug 568394 – dropping the last reference to a stream filter closes the
base stream
* gfilterinputstream.h:
* gfilterinputstream.c: add "close-base-stream" property and only
close the base stream if it is true. issue async close callbacks from
correct source object.
* gfilteroutputstream.h:
* gfilteroutputstream.c: add a "close-base-stream" property and only
close the base stream if it is true. issue async close callbacks from
correct source object.
* gbufferedoutputstream: check g_filter_output_stream_get_close_base()
before closing the base stream. fix invalid source tag comparison in
close_async (was comparing to flush_async).
* ../docs/reference/gio/gio-sections.txt:
* gio.symbols: add
g_filter_{in,out}put_stream_{g,s}et_close_base_stream
* tests/filter-streams.c: new test cases
* tests/Makefile.am: add new test
* tests/.gitignore: add new test
svn path=/trunk/; revision=7825
2009-01-05 Ryan Lortie <desrt@desrt.ca>
* tests/.gitignore: improve
* tests/Makefile.am: add new simple-async-result test
* tests/simple-async-result.c: new file to test GSimpleAsyncResult
svn path=/trunk/; revision=7767
2008-12-12 Ryan Lortie <desrt@desrt.ca>
* gio/gicon.c (g_icon_to_string_tokenized): free the tokens when done
with them
svn path=/trunk/; revision=7743
2008-12-12 Ryan Lortie <desrt@desrt.ca>
* gio/gunixmounts.c (g_unix_mount_at): fix leak that occurs when
multiple mount entries match the requested path
svn path=/trunk/; revision=7742
2008-12-10 Alexander Larsson <alexl@redhat.com>
Bug 562452 - Ensure we return G_IO_ERROR_CANCELLED if cancelling
g_simple_async_result_run_in_thread
* gsimpleasyncresult.c:
Make g_simple_async_result_run_in_thread check cancellation before
calling out to the user in the callback. This means we guarantee
reporting cancels of async operations from the main threads, which
is probably more in line with what users expect.
Note that there are still no such guarantees for cancelling sync
operations or cancelling async operation from outside the main
thread. Furthermore, the exact behaviour of async implementations
not using run_in_thread may differ.
svn path=/trunk/; revision=7740
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
* gunixmounts.c: (guess_system_internal): Hide ecryptfs mounts,
so that the desktop does not show both the mount and the target
directory. Patch by Martin Pitt
svn path=/trunk/; revision=7736
* gio.symbols:
* gunixinputstream.[hc]:
* gunixoutputstream.[hc]: Add "fd" and "close-fd" properties
including getters and setters. Patch by Maciej Piechotka
svn path=/trunk/; revision=7735
2008-12-01 Alexander Larsson <alexl@redhat.com>
* gio.symbols:
* gmount.[ch]:
* gunionvolumemonitor.c:
* gvolume.c:
Add and document g_mount_is_shadowed plus calls
to set/unset a mount as shadowed
svn path=/trunk/; revision=7716
* gio.symbols:
* gappinfo.[hc]: Add g_app_info_get_commandline. Requested
by Hans Petter Jansson.
* gdesktopappinfo.c: And implement it here.
svn path=/trunk/; revision=7706
2008-11-28 Matthias Clasen <mclasen@redhat.com>
Bug 559633 – gtk_image_new_from_gicon does not always work for
.desktop files
* gdesktopappinfo.c (g_desktop_app_info_new_from_keyfile): Ignore
extensions on icon names. Proposed by Axel von Bertoldi.
svn path=/trunk/; revision=7698
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 Matthias Clasen <mclasen@redhat.com>
Bug 547481 – g_data_input_stream_read_line behaves not as stated in
the docs
* gdatainputstream.c (g_data_input_stream_read_line): Behave as
documented and include the line end in the returned string.
Pointed out by Paul Pogonyshev.
* tests/data-input-stream.c: Fix the read_line test to test the
documented behaviour.
svn path=/trunk/; revision=7694
* gdesktopappinfo.c (g_app_info_can_delete): Only allow deleting
files that have been created by g_app_info_create_from_commandline.
svn path=/trunk/; revision=7693
2008-11-28 Matthias Clasen <mclasen@redhat.com>
Bug 562393 – g_buffered_input_stream_read_byte broken if data
available
* gio/gbufferedinputstream.c (g_buffered_input_stream_read_byte): Fix
handling of buffered content. Patch by Philip Withnall
* gio/tests/buffered-input-stream.c: Add a testcase for this bug.
* gio/tests/Makefile.am: And build it
svn path=/trunk/; revision=7686