Commit 9cb7760c authored by Max Kellermann's avatar Max Kellermann

input_stream: added attribute "uri"

parent fb9bd533
...@@ -168,13 +168,12 @@ bz2_close(struct archive_file *file) ...@@ -168,13 +168,12 @@ bz2_close(struct archive_file *file)
/* single archive handling */ /* single archive handling */
static struct input_stream * static struct input_stream *
bz2_open_stream(struct archive_file *file, bz2_open_stream(struct archive_file *file, const char *path, GError **error_r)
G_GNUC_UNUSED const char *path, GError **error_r)
{ {
struct bz2_archive_file *context = (struct bz2_archive_file *) file; struct bz2_archive_file *context = (struct bz2_archive_file *) file;
struct bz2_input_stream *bis = g_new(struct bz2_input_stream, 1); 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; bis->archive = context;
......
...@@ -180,7 +180,7 @@ iso9660_archive_open_stream(struct archive_file *file, ...@@ -180,7 +180,7 @@ iso9660_archive_open_stream(struct archive_file *file,
struct iso9660_input_stream *iis; struct iso9660_input_stream *iis;
iis = g_new(struct iso9660_input_stream, 1); 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->archive = context;
iis->statbuf = iso9660_ifs_stat_translate(context->iso, pathname); iis->statbuf = iso9660_ifs_stat_translate(context->iso, pathname);
......
...@@ -141,7 +141,7 @@ zzip_archive_open_stream(struct archive_file *file, ...@@ -141,7 +141,7 @@ zzip_archive_open_stream(struct archive_file *file,
ZZIP_STAT z_stat; ZZIP_STAT z_stat;
zis = g_new(struct zzip_input_stream, 1); 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->archive = context;
zis->file = zzip_file_open(context->dir, pathname, 0); zis->file = zzip_file_open(context->dir, pathname, 0);
......
...@@ -801,7 +801,7 @@ input_curl_open(const char *url, GError **error_r) ...@@ -801,7 +801,7 @@ input_curl_open(const char *url, GError **error_r)
return NULL; return NULL;
c = g_new0(struct input_curl, 1); 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->url = g_strdup(url);
c->buffers = g_queue_new(); c->buffers = g_queue_new();
......
...@@ -84,7 +84,7 @@ input_file_open(const char *filename, GError **error_r) ...@@ -84,7 +84,7 @@ input_file_open(const char *filename, GError **error_r)
#endif #endif
fis = g_new(struct file_input_stream, 1); 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.size = st.st_size;
fis->base.seekable = true; fis->base.seekable = true;
......
...@@ -56,7 +56,7 @@ input_mms_open(const char *url, GError **error_r) ...@@ -56,7 +56,7 @@ input_mms_open(const char *url, GError **error_r)
return NULL; return NULL;
m = g_new(struct input_mms, 1); 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); m->mms = mmsx_connect(NULL, NULL, url, 128 * 1024);
if (m->mms == NULL) { if (m->mms == NULL) {
......
...@@ -227,7 +227,7 @@ input_rewind_open(struct input_stream *is) ...@@ -227,7 +227,7 @@ input_rewind_open(struct input_stream *is)
return is; return is;
c = g_new(struct input_rewind, 1); 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->tail = 0;
c->input = is; c->input = is;
......
...@@ -39,6 +39,12 @@ struct input_stream { ...@@ -39,6 +39,12 @@ struct input_stream {
const struct input_plugin *plugin; 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 * indicates whether the stream is ready for reading and
* whether the other attributes in this struct are valid * whether the other attributes in this struct are valid
*/ */
...@@ -66,9 +72,11 @@ struct input_stream { ...@@ -66,9 +72,11 @@ struct input_stream {
}; };
static inline void 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->plugin = plugin;
is->uri = g_strdup(uri);
is->ready = false; is->ready = false;
is->seekable = false; is->seekable = false;
is->size = -1; is->size = -1;
...@@ -79,6 +87,7 @@ input_stream_init(struct input_stream *is, const struct input_plugin *plugin) ...@@ -79,6 +87,7 @@ input_stream_init(struct input_stream *is, const struct input_plugin *plugin)
static inline void static inline void
input_stream_deinit(struct input_stream *is) input_stream_deinit(struct input_stream *is)
{ {
g_free(is->uri);
g_free(is->mime); g_free(is->mime);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment