diff options
author | Milan Crha <mcrha@redhat.com> | 2008-04-18 00:59:08 +0800 |
---|---|---|
committer | Milan Crha <mcrha@src.gnome.org> | 2008-04-18 00:59:08 +0800 |
commit | e9a0cfe1a901f41456575a2cd07158f1947b873c (patch) | |
tree | afaedd4dd4c72cbf773142e592324d83bd05b950 /mail/em-vfs-stream.c | |
parent | b24bdfcc8d3e43499f1e81351f69ac667cedd08a (diff) | |
download | gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar.gz gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar.bz2 gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar.lz gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar.xz gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.tar.zst gsoc2013-evolution-e9a0cfe1a901f41456575a2cd07158f1947b873c.zip |
** Fix for bug #526741 (gnome-vfs to gio/gvfs port)
2008-04-17 Milan Crha <mcrha@redhat.com>
** Fix for bug #526741 (gnome-vfs to gio/gvfs port)
* configure.in: Drop dependency on gnome-vfs, depend on gio instead.
* addressbook/gui/contact-editor/e-contact-editor.c: Do not include gnome-vfs.
* calendar/gui/e-meeting-store.c: (start_async_read), (freebusy_async),
(async_read): Read data with gio, not with gnome-vfs.
* calendar/gui/e-meeting-store.c: (async_close): Function removed.
* calendar/gui/migration.c:
* calendar/gui/e-memos.c:
* calendar/gui/alarm-notify/notify-main.c:
* calendar/gui/e-tasks.c:
* calendar/gui/main.c:
* calendar/gui/e-meeting-list-view.c:
Do not include gnome-vfs.
* calendar/gui/dialogs/comp-editor.c: (set_attachment_list):
* calendar/gui/dialogs/comp-editor.c: (attachment_guess_mime_type):
Function removed, use e-util function instead.
* calendar/gui/e-cal-popup.c: (temp_save_part):
Reflect changes in CamelStreamVFS.
* calendar/gui/e-cal-popup.c: (ecalp_apps_open_in), (ecalp_apps_popup_free),
(ecalp_standard_menu_factory): Use gio to fill popup and launch app.
* calendar/gui/e-cal-component-preview.h: (e_cal_comp_preview_url_requested_cb):
* calendar/gui/e-cal-component-preview.c: (e_cal_comp_preview_url_requested_cb):
New helper function to manage file:// urls for GtkHTML component.
* calendar/gui/e-cal-component-preview.c: (e_cal_component_preview_init):
* calendar/gui/e-cal-component-memo-preview.c:
(e_cal_comp_preview_url_requested_cb):
Use above helper function.
* calendar/gui/e-cal-component-memo-preview.c: (url_requested_cb):
* calendar/gui/e-cal-component-preview.c: (url_requested_cb): Function removed.
* composer/e-msg-composer.h: (e_msg_composer_guess_mime_type):
* composer/e-msg-composer.c: (e_msg_composer_guess_mime_type), (handle_uri),
(e_msg_composer_add_inline_image_from_file):
Use shared e_util_guess_mime_type instead of its own.
* e-util/e-gui-utils.c: Do not include gnome-vfs.
* e-util/e-util.c: (e_write_file_uri), (e_file_get_save_path):
* e-util/e-dialog-utils.c: (e_file_can_save), (e_file_check_local):
Use gio instead of gnome-vfs.
* e-util/e-util.h:
* e-util/e-util.c: (e_util_guess_mime_type), (e_util_filename_to_uri),
(e_util_uri_to_filename), (e_util_read_file): New helper functions.
* mail/Makefile.am:
* mail/em-vfs-stream.h:
* mail/em-vfs-stream.c: Removed from project, not used anywhere.
* mail/em-menu.c:
* mail/em-config.c: Do not include gnome-vfs.
* mail/mail-ops.c: (save_messages_exec), (save_part_exec):
Changes related to Data Server change of CamelStreamVFS.
* mail/em-format.c: (em_format_describe_part):
* mail/em-format-html-display.c: (efhd_bonobo_object), (efhd_find_handler),
(efhd_use_component), (efhd_bonobo_unknown), (efhd_check_server_prop),
(efhd_format_attachment): Drop use of deprecated gnome-vfs functions.
* mail/em-utils.c: (em_utils_snoop_type): Use gio to guess the mime_type.
* mail/em-popup.c: (emp_apps_open_in), (emp_apps_popup_free),
(emp_standard_menu_factory): Use gio to fill popup and launch app.
* plugins/import-ics-attachments/icsimporter.c: Do not include gnome-vfs.
* plugins/ipod-sync/ical-format.c: (do_save_calendar_ical):
* plugins/ipod-sync/ipod-sync.c: (destination_save_addressbook):
Write to gio GOutputStream instead of gnome-vfs handle.
* plugins/ipod-sync/format-handler.h: (open_for_writing):
* plugins/ipod-sync/ipod-sync.c: (open_for_writing): New helper function.
* plugins/publish-calendar/publish-format-fb.h: (publish_calendar_as_fb):
* plugins/publish-calendar/publish-format-fb.c: (write_calendar), (publish_calendar_as_fb):
* plugins/publish-calendar/publish-format-ical.h: (publish_calendar_as_ical):
* plugins/publish-calendar/publish-format-ical.c: (write_calendar), (publish_calendar_as_ical):
Use gio GOutputStream instead of gnome-vfs handle.
* plugins/publish-calendar/url-editor-dialog.c: (create_uri): Use glib function to escape URI.
* plugins/publish-calendar/publish-location.c: (migrateURI): Use EUri to parse URI.
* plugins/publish-calendar/publish-calendar.c: (publish_online), (unmount_done_cb),
(struct mnt_struct), (mount_ready_cb), (ask_password), (ask_question),
(mount_first), (publish):
Use gio instead of gnome-vfs for opening (remote) files.
* plugins/save-calendar/ical-format.c: (do_save_calendar_ical):
* plugins/save-calendar/csv-format.c: (do_save_calendar_csv):
* plugins/save-calendar/rdf-format.c: (do_save_calendar_rdf):
Use gio GOutpuStream instead of gnome-vfs handle.
* plugins/save-calendar/format-handler.h: (open_for_writing):
* plugins/save-calendar/save-calendar.c: (open_for_writing): New helper function.
* shell/e-shell-window-commands.c: (command_quick_reference):
Use gio instead of gnome-vfs.
* widgets/misc/e-attachment.h: (struct _EAttachment):
* widgets/misc/e-attachment.c: (finalise), (init), (attachment_guess_mime_type),
(e_attachment_new), (struct DownloadInfo), (download_info_free),
(data_ready_cb), (download_to_local_path),
(e_attachment_new_remote_file):
Use gio instead of gnome-vfs to download remote files.
* widgets/misc/e-image-chooser.c: (image_drag_data_received_cb):
Use new util function to read file.
* widgets/misc/e-attachment-bar.c: (size_to_string): Stolen from gnome-vfs.
svn path=/trunk/; revision=35378
Diffstat (limited to 'mail/em-vfs-stream.c')
-rw-r--r-- | mail/em-vfs-stream.c | 330 |
1 files changed, 0 insertions, 330 deletions
diff --git a/mail/em-vfs-stream.c b/mail/em-vfs-stream.c deleted file mode 100644 index 290ea86a4d..0000000000 --- a/mail/em-vfs-stream.c +++ /dev/null @@ -1,330 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- - * - * Authors: Michael Zucchi <notzed@ximian.com> - * - * Copyright 2004 Ximian, Inc. (www.ximian.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * A GnomeVFS to CamelStream mapper. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> -#include <stdio.h> -#include <errno.h> - -#include <libgnomevfs/gnome-vfs.h> - -#include "em-vfs-stream.h" - -#ifndef EINPROGRESS -#define EINPROGRESS EAGAIN -#endif -#ifndef ELOOP -#define ELOOP EIO -#endif - -#define LOG_STREAM - -#define d(x) - -#define EMVS_CLASS(x) ((EMVFSStreamClass *)(((CamelObject *)(x))->klass)) - -static CamelStreamClass *parent_class = NULL; - -static void -em_vfs_stream_init (CamelObject *object) -{ - /*EMVFSStream *emvfs = (EMVFSStream *)object;*/ -} - -static void -em_vfs_stream_finalize (CamelObject *object) -{ - EMVFSStream *emvfs = (EMVFSStream *)object; - - if (emvfs->handle) - gnome_vfs_close(emvfs->handle); -} - -static void -emvfs_set_errno(GnomeVFSResult res) -{ - switch(res) { - case GNOME_VFS_OK: - g_warning("em-vfs-stream: calling set_errno with no error"); - break; - case GNOME_VFS_ERROR_NOT_FOUND: - case GNOME_VFS_ERROR_HOST_NOT_FOUND: - case GNOME_VFS_ERROR_INVALID_HOST_NAME: - case GNOME_VFS_ERROR_HOST_HAS_NO_ADDRESS: - case GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE: - errno = ENOENT; - break; - case GNOME_VFS_ERROR_GENERIC: - case GNOME_VFS_ERROR_INTERNAL: - case GNOME_VFS_ERROR_IO: - case GNOME_VFS_ERROR_EOF: /* will be caught by read before here anyway */ - case GNOME_VFS_ERROR_SERVICE_OBSOLETE: - case GNOME_VFS_ERROR_PROTOCOL_ERROR: - default: - errno = EIO; - break; - case GNOME_VFS_ERROR_BAD_PARAMETERS: - case GNOME_VFS_ERROR_NOT_SUPPORTED: - case GNOME_VFS_ERROR_INVALID_URI: - case GNOME_VFS_ERROR_NOT_OPEN: - case GNOME_VFS_ERROR_INVALID_OPEN_MODE: - case GNOME_VFS_ERROR_NOT_SAME_FILE_SYSTEM: - errno = EINVAL; - break; - case GNOME_VFS_ERROR_CORRUPTED_DATA: /* not sure about these */ - case GNOME_VFS_ERROR_WRONG_FORMAT: - case GNOME_VFS_ERROR_BAD_FILE: - errno = EBADF; - break; - case GNOME_VFS_ERROR_TOO_BIG: - errno = E2BIG; - break; - case GNOME_VFS_ERROR_NO_SPACE: - errno = ENOSPC; - break; - case GNOME_VFS_ERROR_READ_ONLY: - case GNOME_VFS_ERROR_READ_ONLY_FILE_SYSTEM: - errno = EROFS; - break; - case GNOME_VFS_ERROR_TOO_MANY_OPEN_FILES: - errno = EMFILE; - break; - case GNOME_VFS_ERROR_NOT_A_DIRECTORY: - errno = ENOTDIR; - break; - case GNOME_VFS_ERROR_IN_PROGRESS: - errno = EINPROGRESS; - break; - case GNOME_VFS_ERROR_INTERRUPTED: - errno = EINTR; - break; - case GNOME_VFS_ERROR_FILE_EXISTS: - errno = EEXIST; - case GNOME_VFS_ERROR_LOOP: - errno = ELOOP; - break; - case GNOME_VFS_ERROR_ACCESS_DENIED: - case GNOME_VFS_ERROR_NOT_PERMITTED: - case GNOME_VFS_ERROR_LOGIN_FAILED: - errno = EPERM; - break; - case GNOME_VFS_ERROR_IS_DIRECTORY: - case GNOME_VFS_ERROR_DIRECTORY_NOT_EMPTY: /* ?? */ - errno = EISDIR; - break; - case GNOME_VFS_ERROR_NO_MEMORY: - errno = ENOMEM; - break; - case GNOME_VFS_ERROR_CANCELLED: - errno = EINTR; - break; - case GNOME_VFS_ERROR_DIRECTORY_BUSY: - errno = EBUSY; - break; - case GNOME_VFS_ERROR_TOO_MANY_LINKS: - errno = EMLINK; - break; - case GNOME_VFS_ERROR_NAME_TOO_LONG: - errno = ENAMETOOLONG; - break; - } -} - -static ssize_t -emvfs_read(CamelStream *stream, char *buffer, size_t n) -{ - EMVFSStream *emvfs = EM_VFS_STREAM (stream); - GnomeVFSFileSize count; - GnomeVFSResult res; - - if (emvfs->handle == NULL) { - errno = EINVAL; - return -1; - } - - /* TODO: handle camel cancellation? */ - - res = gnome_vfs_read(emvfs->handle, buffer, n, &count); - if (res == GNOME_VFS_OK) - return (ssize_t)count; - else if (res == GNOME_VFS_ERROR_EOF) { - stream->eos = TRUE; - return 0; - } - - emvfs_set_errno(res); - - return -1; -} - -static ssize_t -emvfs_write(CamelStream *stream, const char *buffer, size_t n) -{ - EMVFSStream *emvfs = EM_VFS_STREAM (stream); - GnomeVFSFileSize count; - GnomeVFSResult res; - - if (emvfs->handle == NULL) { - errno = EINVAL; - return -1; - } - - res = gnome_vfs_write(emvfs->handle, buffer, n, &count); - if (res == GNOME_VFS_OK) - return (ssize_t)count; - - emvfs_set_errno(res); - - return -1; -} - -static int -emvfs_close(CamelStream *stream) -{ - EMVFSStream *emvfs = EM_VFS_STREAM (stream); - GnomeVFSResult res; - - if (emvfs->handle == NULL) { - errno = EINVAL; - return -1; - } - - res = gnome_vfs_close(emvfs->handle); - emvfs->handle = NULL; - if (res == GNOME_VFS_OK) - return 0; - - emvfs_set_errno(res); - - return -1; -} - -static off_t -emvfs_seek(CamelSeekableStream *stream, off_t offset, CamelStreamSeekPolicy policy) -{ - EMVFSStream *emvfs = EM_VFS_STREAM (stream); - GnomeVFSSeekPosition vpolicy; - GnomeVFSFileSize pos; - GnomeVFSResult res; - - if (emvfs->handle == NULL) { - errno = EINVAL; - return -1; - } - - switch (policy) { - case CAMEL_STREAM_SET: - default: - vpolicy = GNOME_VFS_SEEK_START; - break; - case CAMEL_STREAM_CUR: - vpolicy = GNOME_VFS_SEEK_CURRENT; - break; - case CAMEL_STREAM_END: - vpolicy = GNOME_VFS_SEEK_END; - break; - } - - if ( (res = gnome_vfs_seek(emvfs->handle, vpolicy, offset)) == GNOME_VFS_OK - && (res = gnome_vfs_tell(emvfs->handle, &pos)) == GNOME_VFS_OK) - return pos; - - emvfs_set_errno(res); - - return -1; -} - -static off_t -emvfs_tell(CamelSeekableStream *stream) -{ - EMVFSStream *emvfs = EM_VFS_STREAM (stream); - GnomeVFSFileSize pos; - GnomeVFSResult res; - - if (emvfs->handle == NULL) { - errno = EINVAL; - return -1; - } - - if ((res = gnome_vfs_tell(emvfs->handle, &pos)) == GNOME_VFS_OK) - return pos; - - emvfs_set_errno(res); - - return -1; -} - -static void -em_vfs_stream_class_init (EMVFSStreamClass *klass) -{ - ((CamelStreamClass *)klass)->read = emvfs_read; - ((CamelStreamClass *)klass)->write = emvfs_write; - ((CamelStreamClass *)klass)->close = emvfs_close; - - ((CamelSeekableStreamClass *)klass)->seek = emvfs_seek; - ((CamelSeekableStreamClass *)klass)->tell = emvfs_tell; - /* set_bounds? */ -} - -CamelType -em_vfs_stream_get_type (void) -{ - static CamelType type = CAMEL_INVALID_TYPE; - - if (type == CAMEL_INVALID_TYPE) { - parent_class = (CamelStreamClass *)camel_seekable_stream_get_type(); - type = camel_type_register ((CamelType)parent_class, - "EMVFSStream", - sizeof (EMVFSStream), - sizeof (EMVFSStreamClass), - (CamelObjectClassInitFunc) em_vfs_stream_class_init, - NULL, - (CamelObjectInitFunc) em_vfs_stream_init, - (CamelObjectFinalizeFunc) em_vfs_stream_finalize); - } - - return type; -} - -/** - * emvfs_stream_new: - * @handle: - * - * Create a new camel stream from a GnomeVFS handle. The camel stream - * will own the handle from now on. - * - * Return value: A CamelStream that will talk to @handle. This function cannot fail. - **/ -EMVFSStream * -emvfs_stream_new(GnomeVFSHandle *handle) -{ - EMVFSStream *emvfs; - - emvfs = (EMVFSStream *)camel_object_new(em_vfs_stream_get_type()); - emvfs->handle = handle; - - return emvfs; -} |