/* open the file, do stuff necessary to go to PAUSED state */ static gboolean gst_gnome_vfs_src_start (GstBaseSrc * basesrc) { GnomeVFSResult res; GstGnomeVFSSrc *src; src = GST_GNOME_VFS_SRC (basesrc); gst_gnome_vfs_src_push_callbacks (src); if (src->uri != NULL) { GnomeVFSOpenMode mode = GNOME_VFS_OPEN_READ; /* this can block... */ res = gnome_vfs_open_uri (&src->handle, src->uri, mode); if (res != GNOME_VFS_OK) goto open_failed; src->own_handle = TRUE; } else if (!src->handle) { goto no_filename; } else { src->own_handle = FALSE; } if (gnome_vfs_seek (src->handle, GNOME_VFS_SEEK_CURRENT, 0) == GNOME_VFS_OK) { src->seekable = TRUE; } else { src->seekable = FALSE; } return TRUE; /* ERRORS */ open_failed: { gchar *filename = gnome_vfs_uri_to_string (src->uri, GNOME_VFS_URI_HIDE_PASSWORD); gst_gnome_vfs_src_pop_callbacks (src); if (res == GNOME_VFS_ERROR_NOT_FOUND || res == GNOME_VFS_ERROR_HOST_NOT_FOUND || res == GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE) { GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL), ("Could not open vfs file \"%s\" for reading: %s (%d)", filename, gnome_vfs_result_to_string (res), res)); } else { GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("Could not open vfs file \"%s\" for reading: %s (%d)", filename, gnome_vfs_result_to_string (res), res)); } g_free (filename); return FALSE; } no_filename: { GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL), ("No filename given")); return FALSE; } }
int main (int argc, char **argv) { GnomeVFSResult result; GnomeVFSHandle *handle; gchar buffer[1024]; GnomeVFSFileSize bytes_read; GnomeVFSURI *uri; gchar *text_uri; if (argc != 2) { printf ("Usage: %s <uri>\n", argv[0]); return 1; } if (! gnome_vfs_init ()) { fprintf (stderr, "Cannot initialize gnome-vfs.\n"); return 1; } uri = gnome_vfs_uri_new (argv[1]); if (uri == NULL) { fprintf (stderr, "URI not valid.\n"); return 1; } text_uri = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE); result = gnome_vfs_open_uri (&handle, uri, GNOME_VFS_OPEN_WRITE); show_result (result, "open", text_uri); while( result==GNOME_VFS_OK && !feof(stdin)) { GnomeVFSFileSize temp; bytes_read = fread(buffer, 1, sizeof buffer - 1, stdin); if(!bytes_read) break; buffer[bytes_read] = 0; result = gnome_vfs_write (handle, buffer, bytes_read, &temp); show_result (result, "write", text_uri); } result = gnome_vfs_close (handle); show_result (result, "close", text_uri); g_free (text_uri); return 0; }
MNMessage * mn_message_new_from_uri_full (GType type, MNMailbox *mailbox, const char *mid, GnomeVFSURI *uri, MNMessageFlags flags, gboolean handle_status, GError **err) { GnomeVFSResult result; GnomeVFSHandle *handle; g_return_val_if_fail(type != 0, NULL); g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL); g_return_val_if_fail(uri != NULL, NULL); result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM); if (result == GNOME_VFS_OK) { GMimeStream *stream; stream = mn_gmime_stream_vfs_new(handle, uri, &result); if (stream) { MNMessage *message; char *text_uri; text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE); message = mn_message_new_from_mime_stream_full(type, mailbox, stream, mid, text_uri, flags, handle_status, err); g_free(text_uri); g_object_unref(stream); return message; } } mn_vfs_result_to_g_error(result, err); return NULL; }