From 9cb7760c5eb63cb6b7034ec9d2cdf9af2f198652 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 18 Jan 2010 09:26:10 +0100 Subject: input_stream: added attribute "uri" --- src/archive/bz2_archive_plugin.c | 5 ++--- src/archive/iso9660_archive_plugin.c | 2 +- src/archive/zzip_archive_plugin.c | 2 +- src/input/curl_input_plugin.c | 2 +- src/input/file_input_plugin.c | 2 +- src/input/mms_input_plugin.c | 2 +- src/input/rewind_input_plugin.c | 2 +- src/input_stream.h | 11 ++++++++++- 8 files changed, 18 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/archive/bz2_archive_plugin.c b/src/archive/bz2_archive_plugin.c index 67cc0055c..2414eb519 100644 --- a/src/archive/bz2_archive_plugin.c +++ b/src/archive/bz2_archive_plugin.c @@ -168,13 +168,12 @@ bz2_close(struct archive_file *file) /* single archive handling */ static struct input_stream * -bz2_open_stream(struct archive_file *file, - G_GNUC_UNUSED const char *path, GError **error_r) +bz2_open_stream(struct archive_file *file, const char *path, GError **error_r) { struct bz2_archive_file *context = (struct bz2_archive_file *) file; struct bz2_input_stream *bis = g_new(struct bz2_input_stream, 1); - input_stream_init(&bis->base, &bz2_inputplugin); + input_stream_init(&bis->base, &bz2_inputplugin, path); bis->archive = context; diff --git a/src/archive/iso9660_archive_plugin.c b/src/archive/iso9660_archive_plugin.c index 30f8e7f52..142fa10e0 100644 --- a/src/archive/iso9660_archive_plugin.c +++ b/src/archive/iso9660_archive_plugin.c @@ -180,7 +180,7 @@ iso9660_archive_open_stream(struct archive_file *file, struct iso9660_input_stream *iis; iis = g_new(struct iso9660_input_stream, 1); - input_stream_init(&iis->base, &iso9660_input_plugin); + input_stream_init(&iis->base, &iso9660_input_plugin, pathname); iis->archive = context; iis->statbuf = iso9660_ifs_stat_translate(context->iso, pathname); diff --git a/src/archive/zzip_archive_plugin.c b/src/archive/zzip_archive_plugin.c index fdf6b677c..3c2b80318 100644 --- a/src/archive/zzip_archive_plugin.c +++ b/src/archive/zzip_archive_plugin.c @@ -141,7 +141,7 @@ zzip_archive_open_stream(struct archive_file *file, ZZIP_STAT z_stat; zis = g_new(struct zzip_input_stream, 1); - input_stream_init(&zis->base, &zzip_input_plugin); + input_stream_init(&zis->base, &zzip_input_plugin, pathname); zis->archive = context; zis->file = zzip_file_open(context->dir, pathname, 0); diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c index 1b759b4fc..839c98074 100644 --- a/src/input/curl_input_plugin.c +++ b/src/input/curl_input_plugin.c @@ -801,7 +801,7 @@ input_curl_open(const char *url, GError **error_r) return NULL; c = g_new0(struct input_curl, 1); - input_stream_init(&c->base, &input_plugin_curl); + input_stream_init(&c->base, &input_plugin_curl, url); c->url = g_strdup(url); c->buffers = g_queue_new(); diff --git a/src/input/file_input_plugin.c b/src/input/file_input_plugin.c index 173b7c2e8..a18de67b8 100644 --- a/src/input/file_input_plugin.c +++ b/src/input/file_input_plugin.c @@ -84,7 +84,7 @@ input_file_open(const char *filename, GError **error_r) #endif fis = g_new(struct file_input_stream, 1); - input_stream_init(&fis->base, &input_plugin_file); + input_stream_init(&fis->base, &input_plugin_file, filename); fis->base.size = st.st_size; fis->base.seekable = true; diff --git a/src/input/mms_input_plugin.c b/src/input/mms_input_plugin.c index 31a75fdba..8d4f7591d 100644 --- a/src/input/mms_input_plugin.c +++ b/src/input/mms_input_plugin.c @@ -56,7 +56,7 @@ input_mms_open(const char *url, GError **error_r) return NULL; m = g_new(struct input_mms, 1); - input_stream_init(&m->base, &input_plugin_mms); + input_stream_init(&m->base, &input_plugin_mms, url); m->mms = mmsx_connect(NULL, NULL, url, 128 * 1024); if (m->mms == NULL) { diff --git a/src/input/rewind_input_plugin.c b/src/input/rewind_input_plugin.c index e82d4ecb9..eea59096b 100644 --- a/src/input/rewind_input_plugin.c +++ b/src/input/rewind_input_plugin.c @@ -227,7 +227,7 @@ input_rewind_open(struct input_stream *is) return is; c = g_new(struct input_rewind, 1); - input_stream_init(&c->base, &rewind_input_plugin); + input_stream_init(&c->base, &rewind_input_plugin, is->uri); c->tail = 0; c->input = is; diff --git a/src/input_stream.h b/src/input_stream.h index 05ef257f9..056d008a7 100644 --- a/src/input_stream.h +++ b/src/input_stream.h @@ -38,6 +38,12 @@ struct input_stream { */ const struct input_plugin *plugin; + /** + * The absolute URI which was used to open this stream. May + * be NULL if this is unknown. + */ + char *uri; + /** * indicates whether the stream is ready for reading and * whether the other attributes in this struct are valid @@ -66,9 +72,11 @@ struct input_stream { }; static inline void -input_stream_init(struct input_stream *is, const struct input_plugin *plugin) +input_stream_init(struct input_stream *is, const struct input_plugin *plugin, + const char *uri) { is->plugin = plugin; + is->uri = g_strdup(uri); is->ready = false; is->seekable = false; is->size = -1; @@ -79,6 +87,7 @@ input_stream_init(struct input_stream *is, const struct input_plugin *plugin) static inline void input_stream_deinit(struct input_stream *is) { + g_free(is->uri); g_free(is->mime); } -- cgit v1.2.3