summaryrefslogtreecommitdiff
path: root/client
Commit message (Collapse)AuthorAgeFilesLines
* Bug 587484 – Interaction when unmounting mounts and misc fixesDavid Zeuthen2009-07-083-29/+261
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Port everything to use _with_operation() variants of unmount/eject methods - Add support for g_file_poll_mountable() - new job class: GVfsJobPollMountable - Pass mount operation for unmount/eject ops on GDaemonFile and GDaemonMount - receive in the appropriate GVfsJob classes - also pass unmount flags where it was missing - port all backends to use this - Teach GMountSource and GMountOperationDBus about the new GMountOperation::show-processes signal - also provide new API - g_mount_source_is_dummy() - e.g. when the client didn't passed NULL for the GMountOperation - g_mount_source_abort() - to send the ::abort signal to the client-side GMountOperation - make the client-side of GMountSource return ::reply with NOT_HANDLED when we do an abort - Refactor the mount operation handling in GProxyVolumeMonitor - Pass mount operation for unmount/ejects in GProxyVolumeMonitor - Pass the process id of the actual reader/writer in OpenForRead and OpenForWrite daemon methods - add some private API for making the FUSE client set the pid of the POSIX client (otherwise it looks like the FUSE client is blocking) and pass the right pid. This is because the FUSE client is basically impersonating the POSIX processes. - Make the process id mentioned above available in appropriate GVfsJob classes - GVfsJobOpenForRead - GVfsJobOpenForWrite - GVfsChannel - Provide API to get a list of all blocking clients, e.g. an array of GPid - g_vfs_daemon_get_blocking_processes() - Provide convenience API to easily doing the right thing on unmount; e.g. interact with the user about blocking processes - see the gphoto2 backend for example usage - g_vfs_backend_has_blocking_processes() - g_vfs_backend_unmount_with_operation() and g_vfs_backend_unmount_with_operation_finish() - Only the gphoto2 backend supports ::show-processes right now. Support for other backends will be added shortly. - Implement support for ::show-processes in the GDU volume monitor - right now we don't support "Unmount Anyway" since it requires ABI changes in libgdu.so - this will be changed as soon as there's a new gnome-disk-utility release
* Avoid deadlock on cancelling async enumerate_childrenAlexander Larsson2009-06-251-2/+23
| | | | | | | | | We can't call g_cancellable_disconnect from inside the cancel signal emission, as that deadlocks. However we know if that happens and can use the regular disconnect. Also, we need to grab the infos lock when calling trigger_async_done, this was only done in some cases, now its always done.
* Implement metadata setting for remote locationsAlexander Larsson2009-06-256-82/+338
|
* (de)marshal the attribute status in GFileInfoAlexander Larsson2009-06-251-1/+1
|
* try extra hard to make sure operations get cancelled properlyBenjamin Otte2009-06-256-36/+90
| | | | | | | | | Previously there were some rather big windows that allowed for races between cancelling and calling g_simple_async_result_complete(). This code makes sure we check for cancellaton right before calling g_simple_async_result_complete(), which gets rid of that window and gives you the guarantee that cancelling an operation in the main thread will indeed return a CANCELLED error.
* Support unsetting metadata in g_file_set_attributes_from_info()Alexander Larsson2009-06-251-0/+15
|
* Short circuit metadata setting if no changeAlexander Larsson2009-06-231-12/+44
|
* Implement the metadata addition api in GVfsAlexander Larsson2009-06-232-3/+358
| | | | | This uses the metadata library to add metadata to GFileInfo for local files.
* Bug 585591 – Starting/stopping drivesDavid Zeuthen2009-06-172-6/+102
| | | | | | | | | This is the GVfs implementation for the new GIO API for starting/stopping drives. See http://bugzilla.gnome.org/show_bug.cgi?id=585591 for details.
* signal the need for updates (changes wire protocol and internal API)Benjamin Otte2009-06-101-0/+4
| | | | | | | | | | | Send a boolean send_progress to the daemon in the case of push/pull jobs that indicates if progress updates should be sent to the client. Oftentimes the daemons can avoid quite a bit of work (like querying file sizes or setting up and operating machinery required to send progress updates) when it's not required. Patch also includes fixes to daemons to ensure they don't call a NULL progress_callback (previously, NULL was not a possible value).
* Use new race-free cancellable signal connect APIs (#572844)Alexander Larsson2009-05-151-5/+18
|
* Ref the infos in next_files_finish (#582195)Alexander Larsson2009-05-121-5/+2
| | | | | | | In later glib versions setting the GSimpleAsyncResult gpointer data frees the old data using the destroy notify, which can cause crashes since we return it. So, just copy+ref the list instead of trying to steal the asyncresult one.
* Fix up .gitignore filesAlexander Larsson2009-04-171-0/+1
| | | | Update old ignore files and add new ones as needed
* Hold file mutex while closing stream.Hans Petter Jansson2009-04-021-0/+4
| | | | | | | | | | | 2009-04-01 Hans Petter Jansson <hpj@novell.com> * client/gvfsfusedaemon.c (vfs_flush) (vfs_fsync): Hold file mutex while closing stream. svn path=/trunk/; revision=2359
* Related to bug #574968 - gvfs ftp backend appears to not wait for ftpdHans Petter Jansson2009-04-021-0/+20
| | | | | | | | | | | | | 2009-04-01 Hans Petter Jansson <hpj@novell.com> Related to bug #574968 - gvfs ftp backend appears to not wait for ftpd return code on STOR. * client/gvfsfusedaemon.c (vfs_fsync): Implement by closing stream. svn path=/trunk/; revision=2358
* Add G_IO_ERROR_WOULD_BLOCK -> EAGAIN mapping.Hans Petter Jansson2009-04-011-0/+1
| | | | | | | | | | 2009-04-01 Hans Petter Jansson <hpj@novell.com> * client/gvfsfusedaemon.c (errno_from_error): Add G_IO_ERROR_WOULD_BLOCK -> EAGAIN mapping. svn path=/trunk/; revision=2357
* Potential fix for bug #574968 - gvfs ftp backend appears to not wait forHans Petter Jansson2009-04-011-0/+11
| | | | | | | | | | | | | 2009-04-01 Hans Petter Jansson <hpj@novell.com> Potential fix for bug #574968 - gvfs ftp backend appears to not wait for ftpd return code on STOR. * client/gvfsfusedaemon.c (vfs_flush): Implement by closing stream. svn path=/trunk/; revision=2356
* Make sure async callbacks are sent in mainloop.Alexander Larsson2009-03-311-1/+1
| | | | | | | | | | | | | 2009-03-31 Alexander Larsson <alexl@redhat.com> * client/gdaemonmount.c: (g_daemon_mount_guess_content_type): * monitor/proxy/gproxymount.c: (g_proxy_mount_guess_content_type): Make sure async callbacks are sent in mainloop. svn path=/trunk/; revision=2355
* Bug 548648 – g_daemon_vfs_parse_name() fails to parse user names withAlexander Larsson2009-03-201-1/+5
| | | | | | | | | | | | | 2009-03-20 Alexander Larsson <alexl@redhat.com> Bug 548648 – g_daemon_vfs_parse_name() fails to parse user names with '@' chars * client/gvfsuriutils.c (g_vfs_decode_uri): Make sure multiple @ in the authority part are put in the username. This is an invalid uri, but we might as well handle it in the better way. svn path=/trunk/; revision=2345
* Bug 563418 – gvfs backend leaks monitorsAlexander Larsson2009-03-101-0/+3
| | | | | | | | | | | | | | 2009-03-10 Alexander Larsson <alexl@redhat.com> Bug 563418 – gvfs backend leaks monitors * client/gdaemonfilemonitor.c: (g_daemon_file_monitor_cancel): Actually pass in object_path in unsubscribe message svn path=/trunk/; revision=2317
* Don't send cancel when partial header read, as that would throw away theAlexander Larsson2009-03-061-4/+4
| | | | | | | | | | | | | | | | 2009-03-06 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileinputstream.c: (iterate_read_state_machine): (iterate_close_state_machine): (iterate_seek_state_machine): (iterate_query_state_machine): Don't send cancel when partial header read, as that would throw away the part of the headers read so far. svn path=/trunk/; revision=2295
* Bug 569199 – incorrectly open smb workgroup using a spaceAlexander Larsson2009-03-052-3/+6
| | | | | | | | | | | | | | | | | | | 2009-03-05 Alexander Larsson <alexl@redhat.com> Bug 569199 – incorrectly open smb workgroup using a space * client/gvfsuriutils.c (g_vfs_encode_uri), (g_vfs_decode_uri): Escape and unescape host part too. This means we handle e.g. smb workgroups with spaces in them. Allowing escapes in hostnames complies with RFC 3986. * client/gdaemonvfs.c (get_mountspec_from_uri): Fix indentation svn path=/trunk/; revision=2288
* Bug 573837 – gvfs-fuse does not support ftruncate size != 0Alexander Larsson2009-03-041-5/+43
| | | | | | | | | | | | | 2009-03-04 Alexander Larsson <alexl@redhat.com> Bug 573837 – gvfs-fuse does not support ftruncate size != 0 * client/gvfsfusedaemon.c: Support ftruncate to the current size as a NOP. Fixes OOo saving svn path=/trunk/; revision=2286
* Make argument const char * as per the glib change.Alexander Larsson2009-03-032-12/+12
| | | | | | | | | | | 2009-03-03 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileinputstream.c: * client/gdaemonfileoutputstream.c: Make argument const char * as per the glib change. svn path=/trunk/; revision=2282
* Bug 547161 – http string leakAlexander Larsson2009-03-021-2/+0
| | | | | | | | | | | | | 2009-03-02 Alexander Larsson <alexl@redhat.com> Bug 547161 – http string leak * client/httpuri.c (http_get_mount_info_for_path): Fix leak svn path=/trunk/; revision=2274
* Bug 573371 – Unsafe g_htonl() macro expansionAlexander Larsson2009-03-022-2/+6
| | | | | | | | | | | | | 2009-03-02 Alexander Larsson <alexl@redhat.com> Bug 573371 – Unsafe g_htonl() macro expansion * client/gdaemonfileoutputstream.c (append_request): * client/gdaemonfileinputstream.c (append_request): Don't use ++ inside macro that may evaluate twice. svn path=/trunk/; revision=2263
* Support query info on output streamsAlexander Larsson2009-02-271-49/+318
| | | | | | | | | | | | | | | | | | | | | | | 2009-02-27 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileoutputstream.c: Support query info on output streams * daemon/Makefile.am: * daemon/gvfsbackend.h: * daemon/gvfsjobqueryinfowrite.[ch]: * daemon/gvfswritechannel.c: Add query info write support. * daemon/gvfsbackendtest.c: Implement writing to files in test backend. Implement query info on write * test/test-query-info-stream.c: Test g_file_output_stream_query_info(). svn path=/trunk/; revision=2260
* Add and use g_string_remove_in_front helper function.Alexander Larsson2009-02-271-15/+17
| | | | | | | | | | | 2009-02-27 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileoutputstream.c: Add and use g_string_remove_in_front helper function. svn path=/trunk/; revision=2259
* Support async query infoAlexander Larsson2009-02-271-50/+156
| | | | | | | | | | | | | | 2009-02-27 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileinputstream.c: Support async query info * test/test-query-info-stream.c: Test async query info svn path=/trunk/; revision=2258
* Add (de)marshalling functions for GFileInfos.Alexander Larsson2009-02-271-26/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2009-02-27 Alexander Larsson <alexl@redhat.com> * common/Makefile.am: * common/gvfsfileinfo.[ch]: Add (de)marshalling functions for GFileInfos. * common/gvfsdaemonprotocol.h: Add protocol extensions for query info over streams * client/gdaemonfileinputstream.c: Support sync query_info. * daemon/Makefile.am: * daemon/gvfsjobqueryinforead.[ch]: * daemon/gvfsbackend.h: Added query info job and backend call for input streams * daemon/gvfsbackendtest.c: Implement query_info_on_read * daemon/gvfschannel.[ch]: Add g_vfs_channel_send_info * daemon/gvfsreadchannel.c: (read_channel_handle_request): Handle query info * test/Makefile.am: * test/test-query-info-stream.c: Add test for stream query info. svn path=/trunk/; revision=2257
* Immediately close the stream we get from g_file_replace(), so truncationHans Petter Jansson2009-02-261-0/+10
| | | | | | | | | | | 2009-02-26 Hans Petter Jansson <hpj@novell.com> * client/gvfsfusedaemon.c (vfs_ftruncate): Immediately close the stream we get from g_file_replace(), so truncation becomes visible. Fixes BRC #479199. svn path=/trunk/; revision=2251
* Always use g_strerrorPaolo Borelli2009-02-241-16/+16
| | | | | | | | | | | | | | 2009-02-24 Paolo Borelli <pborelli@katamail.com> * test/benchmark-posix-small-files.c: * test/benchmark-posix-big-files.c: * daemon/trashlib/dirwatch.c: * daemon/gvfsbackendsmbbrowse.c: * client/gvfsfusedaemon.c: Always use g_strerror svn path=/trunk/; revision=2247
* Bug 563623 – build dies on platforms lacking poll() implimentationAlexander Larsson2009-02-181-6/+5
| | | | | | | | | | | | | | | 2009-02-18 Alexander Larsson <alexl@redhat.com> Bug 563623 – build dies on platforms lacking poll() implimentation * client/gvfsdaemondbus.c: (setup_async_fd_receive): (_g_vfs_daemon_call_sync): Use g_poll instead of poll. Patch from ephraim_owns@hotmail.com svn path=/trunk/; revision=2234
* Bug 546256 – Crash in g_vfs_get_file_for_uri()Christian Kellner2009-02-161-28/+11
| | | | | | | | | | | | | | | 2009-02-16 Christian Kellner <gicmo@gnome.org> Bug 546256 – Crash in g_vfs_get_file_for_uri() * client/httpuri.c: Make sure we never return a non-NULL GVfsUriMountInfo with the path component set to NULL, since this leads to dead kittens. NB: This only fixes the symptom. The real problem is deep in the uri parsing logic. svn path=/trunk/; revision=2222
* Bug 563788 – GNOME Goal: Clean up GLib and GTK+ includesBastien Nocera2009-02-051-1/+0
| | | | | | | | | | | | | | | | | | 2009-02-05 Bastien Nocera <hadess@hadess.net> Bug 563788 – GNOME Goal: Clean up GLib and GTK+ includes * client/gvfsuriutils.h: * daemon/gvfsbackendburn.c: * daemon/gvfsbackendcomputer.c: * daemon/gvfsbackenddnssd.c: * daemon/gvfsbackendnetwork.c: * daemon/gvfsdaemonutils.c: * daemon/mount.c: Fix build for single GTK+ include, patch from Luis Menina <liberforce@freeside.fr> (Closes: #563788) svn path=/trunk/; revision=2201
* Get only the attributes we require. This speeds up directory listings inHans Petter Jansson2009-01-131-5/+20
| | | | | | | | | | | | | | | 2009-01-13 Hans Petter Jansson <hpj@novell.com> * client/gvfsfusedaemon.c (getattr_for_file) (vfs_open) (vfs_create) (vfs_rmdir) (vfs_access): Get only the attributes we require. This speeds up directory listings in particular, since we don't need to probe individual files to determine their MIME types. svn path=/trunk/; revision=2168
* Use the new support for shadow mounts instead ofAlexander Larsson2008-12-012-154/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 2008-12-01 Alexander Larsson <alexl@redhat.com> * client/gdaemonmount.c: * client/gdaemonvolumemonitor.c: * monitor/proxy/Makefile.am: * monitor/proxy/gproxydrive.c: * monitor/proxy/gproxymount.c: * monitor/proxy/gproxyvolume.c: * monitor/proxy/gproxyvolume.h: * monitor/proxy/gproxyvolumemonitor.c: * monitor/proxy/gproxyvolumemonitor.h: * monitor/proxy/remote-volume-monitor-module.c: * monitor/proxy/gproxyshadowmount.[ch]: Use the new support for shadow mounts instead of g_volume_monitor_adopt_orphan_mount Patch from David Zeuthen (#555332) * programs/gvfs-mount.c: Add support to monitor volume monitor events svn path=/trunk/; revision=2119
* Make mounts/backends have a GIcon not a icon nameAlexander Larsson2008-12-011-1/+1
| | | | | | | | | | | | | | | | | | | | 2008-12-01 Alexander Larsson <alexl@redhat.com> * client/gdaemonmount.c: * common/gmounttracker.[ch]: * daemon/gvfsbackend.[ch]: Make mounts/backends have a GIcon not a icon name * daemon/gvfsbackendsftp.c: Support /etc/favicon.png * daemon/gvfsbackendsmbbrowse.c: Simplify some code with the new GIcon support Patch from David Zeuthen (#557540) svn path=/trunk/; revision=2113
* Return an empty array on success when no content type matchesTomas Bzatek2008-11-041-1/+2
| | | | | | | | | | 2008-11-04 Tomas Bzatek <tbzatek@redhat.com> * client/gdaemonmount.c: (g_daemon_mount_guess_content_type_sync): Return an empty array on success when no content type matches svn path=/trunk/; revision=2081
* Patch from David ZeuthenAlexander Larsson2008-10-214-0/+473
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-10-21 Alexander Larsson <alexl@redhat.com> Patch from David Zeuthen * common/Makefile.am: * common/gvfsicon.[ch]: Added GVfsIcon object for GVfs backend specific icons. * common/gmountspec.[ch]: Make sure to/from string works correctly to roundtrip GMountSpec:s Make GMountSpec a boxed type * common/gvfsdaemonprotocol.h: Add OpenIconForRead operation * client/Makefile.am: * client/gvfsiconloadable.[ch]: In gvfs client side, implement GLoadableIcon for GVfsIcon type. * client/gdaemonvfs.c: Make sure that we add the GLoadableIcon interface for GVfsIcon on load * daemon/Makefile.am: * daemon/gvfsbackend.[ch]: * daemon/gvfsjobopeniconforread.[ch]: Add new job type for OpenIconForRead op * daemon/gvfsbackendgphoto2.c: Implement OpenIconForRead for icon previews. svn path=/trunk/; revision=2070
* Revert debug spew from recent commit now that the core issue is fixed (byAlexander Larsson2008-10-201-7/+1
| | | | | | | | | | | | 2008-10-20 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileinputstream.c: (run_sync_state_machine): Revert debug spew from recent commit now that the core issue is fixed (by the fuse race condition fix). svn path=/trunk/; revision=2062
* Always fail the job when we don't support monitoring.Alexander Larsson2008-10-201-1/+1
| | | | | | | | | | | | | | 2008-10-20 Alexander Larsson <alexl@redhat.com> * daemon/gvfsbackendcomputer.c (try_create_dir_monitor): Always fail the job when we don't support monitoring. * client/gvfsfusedaemon.c (getattr_for_file): Correct st_blocks rounding in previous commit svn path=/trunk/; revision=2060
* Attempt to prevent potential race conditions in the FUSE backend when fileHans Petter Jansson2008-10-171-85/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-10-17 Hans Petter Jansson <hpj@novell.com> Attempt to prevent potential race conditions in the FUSE backend when file handles get closed while still in use in another thread, if that ever happens. * client/gvfsfusedaemon.c (file_handle_new): Insert new file handles in global hash table of active file handles. (file_handle_unref): Clarify the code and comments a little. (file_handle_free): Remove file handle from global table of active handles. (reindex_file_handle_for_path) (get_file_handle_for_path) (get_or_create_file_handle_for_path): global_fh_table -> global_path_to_fh_map. (get_file_handle_from_info): New function that recovers our file handle from a fuse_file_info struct, but only if it exists in the global table of valid handles. (vfs_getattr): Remove code that acquired and locked the file handle for the path we operate on. No locking is required here. (vfs_open): Assign file handle to fuse_file_info while holding lock. Purely a formality that makes code easier to read. (vfs_create): Ditto. (vfs_release): Use get_file_handle_from_info () so the file handle is validated. (vfs_read): Hold a ref to the file handle while it's in use. If handle is invalid, raise EINVAL. (vfs_ftruncate): Ditto. (vfs_write): Ditto. (vfs_rename): Cosmetic change. (vfs_unlink): Ditto. (vfs_truncate): Add helpful comment. (vfs_init): Create global table of active file handles. svn path=/trunk/; revision=2056
* Show username in auth dialog if specified in uri (#554156)Alexander Larsson2008-10-161-0/+7
| | | | | | | | | | | | | | | | | | 2008-10-16 Alexander Larsson <alexl@redhat.com> * daemon/gvfsbackendftp.c: (do_mount): Show username in auth dialog if specified in uri (#554156) 2008-10-16 Alexander Larsson <alexl@redhat.com> * client/gvfsfusedaemon.c (getattr_for_file): Set st_blocks & co so that du works (#554682) Patch from Andreas Henriksson svn path=/trunk/; revision=2052
* Add some debug spew and avoid crashing in case of code not properlyAlexander Larsson2008-10-091-1/+7
| | | | | | | | | | | | 2008-10-09 Alexander Larsson <alexl@redhat.com> * client/gdaemonfileinputstream.c: (run_sync_state_machine): Add some debug spew and avoid crashing in case of code not properly setting the GError, as reported on the list. svn path=/trunk/; revision=2046
* Add a few more test URIsBastien Nocera2008-10-021-0/+2
| | | | | | | | | 2008-10-02 Bastien Nocera <hadess@hadess.net> * client/test-uri-utils.c: Add a few more test URIs svn path=/trunk/; revision=2039
* Reverse map fuse paths to gvfs uris in g_file_new_for_path().Alexander Larsson2008-09-262-3/+141
| | | | | | | | | | | | | | 2008-09-26 Alexander Larsson <alexl@redhat.com> * client/gdaemonvfs.[ch]: * common/gvfsdaemonprotocol.h: * daemon/mount.c: Reverse map fuse paths to gvfs uris in g_file_new_for_path(). svn path=/trunk/; revision=2031
* Only call the IsSupported dbus call when the class is actually neededAlexander Larsson2008-09-232-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-09-23 Alexander Larsson <alexl@redhat.com> * monitor/proxy/gproxyvolumemonitor.[ch]: * monitor/proxy/gproxyvolumemonitor.h: * monitor/proxy/remote-volume-monitor-module.c: Only call the IsSupported dbus call when the class is actually needed instead of on gio init. Don't integrate internal session bus with mainloop during is_support code, as that is not necessary yet, and it caused problem if done in a thread. This fixes the trash crash issue in bug #547568. 2008-09-23 Alexander Larsson <alexl@redhat.com> * client/Makefile.am: * common/Makefile.am: * common/gmountsource.c: * common/gmounttracker.c: * monitor/gphoto2/Makefile.am: * monitor/hal/Makefile.am: * monitor/proxy/Makefile.am: Link all modules against the installed libgvfscommon instead of duplicating the statically linked one. This is safe wrt namespace conflicts, because the modules are opened RTLD_LOCAL so the dependencies will not pollute the global namespace. * client/gdaemonvfs.c: Make the gvfsdbus module persistant. This means we will never unload it, and thus not unload libgvfscommon which could be problematic. This is not a huge problem, as: + The gio modules will not be loaded anyway unless you use gio + The gvfsdbus module will be persistent anyway as soon as the app references the GVfs object, which likely all gio apps do + The module load order doesn't matter wrt unload order, because all gio modules are loaded before any one is unloaded. svn path=/trunk/; revision=2021
* SMB: encode username and domain into the URITomas Bzatek2008-09-151-0/+11
| | | | svn path=/trunk/; revision=1983
* Fix the leak of a AsyncResult (#552295)Christian Kellner2008-09-151-0/+1
| | | | svn path=/trunk/; revision=1977