aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-01-30 00:58:03 +0100
committerMax Kellermann <max@duempel.org>2009-01-30 00:58:03 +0100
commit32d6d4499e315a5a2f224beaa54faad03ff80a16 (patch)
tree069be90398bd1eb284c60f40731a8c8100afccab /src
parent82cfce76eb5787f1a24151f6a3840a999ed82659 (diff)
downloadmpd-32d6d4499e315a5a2f224beaa54faad03ff80a16.tar.gz
mpd-32d6d4499e315a5a2f224beaa54faad03ff80a16.tar.xz
mpd-32d6d4499e315a5a2f224beaa54faad03ff80a16.zip
input_stream: make seek(), buffer() optional
Make those two methods optional to implement, and let input_stream.c provide fallbacks. The buffer() method will be removed one day, and there is now only one implementation left (input_curl.c).
Diffstat (limited to 'src')
-rw-r--r--src/archive/bz2_plugin.c15
-rw-r--r--src/archive/iso_plugin.c15
-rw-r--r--src/archive/zip_plugin.c7
-rw-r--r--src/input_file.c7
-rw-r--r--src/input_stream.c7
5 files changed, 7 insertions, 44 deletions
diff --git a/src/archive/bz2_plugin.c b/src/archive/bz2_plugin.c
index 6067d2acc..d7f33e383 100644
--- a/src/archive/bz2_plugin.c
+++ b/src/archive/bz2_plugin.c
@@ -256,19 +256,6 @@ bz2_is_eof(struct input_stream *is)
return false;
}
-static bool
-bz2_is_seek(G_GNUC_UNUSED struct input_stream *is,
- G_GNUC_UNUSED off_t offset, G_GNUC_UNUSED int whence)
-{
- return false;
-}
-
-static int
-bz2_is_buffer(G_GNUC_UNUSED struct input_stream *is)
-{
- return 0;
-}
-
/* exported structures */
static const char *const bz2_extensions[] = {
@@ -280,8 +267,6 @@ static const struct input_plugin bz2_inputplugin = {
.close = bz2_is_close,
.read = bz2_is_read,
.eof = bz2_is_eof,
- .seek = bz2_is_seek,
- .buffer = bz2_is_buffer
};
const struct archive_plugin bz2_plugin = {
diff --git a/src/archive/iso_plugin.c b/src/archive/iso_plugin.c
index de5582e2c..b5ac7f6ca 100644
--- a/src/archive/iso_plugin.c
+++ b/src/archive/iso_plugin.c
@@ -211,19 +211,6 @@ iso_is_eof(struct input_stream *is)
return (context->cur_ofs == context->statbuf->size);
}
-static bool
-iso_is_seek(G_GNUC_UNUSED struct input_stream *is,
- G_GNUC_UNUSED off_t offset, G_GNUC_UNUSED int whence)
-{
- return false;
-}
-
-static int
-iso_is_buffer(G_GNUC_UNUSED struct input_stream *is)
-{
- return 0;
-}
-
/* exported structures */
static const char *const iso_extensions[] = {
@@ -235,8 +222,6 @@ static const struct input_plugin iso_inputplugin = {
.close = iso_is_close,
.read = iso_is_read,
.eof = iso_is_eof,
- .seek = iso_is_seek,
- .buffer = iso_is_buffer
};
const struct archive_plugin iso_plugin = {
diff --git a/src/archive/zip_plugin.c b/src/archive/zip_plugin.c
index 9df449ab5..7231d4904 100644
--- a/src/archive/zip_plugin.c
+++ b/src/archive/zip_plugin.c
@@ -167,12 +167,6 @@ zip_is_seek(G_GNUC_UNUSED struct input_stream *is,
return false;
}
-static int
-zip_is_buffer(G_GNUC_UNUSED struct input_stream *is)
-{
- return 0;
-}
-
/* exported structures */
static const char *const zip_extensions[] = {
@@ -185,7 +179,6 @@ static const struct input_plugin zip_inputplugin = {
.read = zip_is_read,
.eof = zip_is_eof,
.seek = zip_is_seek,
- .buffer = zip_is_buffer
};
const struct archive_plugin zip_plugin = {
diff --git a/src/input_file.c b/src/input_file.c
index 1b6d82f9d..cf5c080f5 100644
--- a/src/input_file.c
+++ b/src/input_file.c
@@ -116,16 +116,9 @@ input_file_eof(struct input_stream *is)
return is->offset >= is->size;
}
-static int
-input_file_buffer(G_GNUC_UNUSED struct input_stream *is)
-{
- return 0;
-}
-
const struct input_plugin input_plugin_file = {
.open = input_file_open,
.close = input_file_close,
- .buffer = input_file_buffer,
.read = input_file_read,
.eof = input_file_eof,
.seek = input_file_seek,
diff --git a/src/input_stream.c b/src/input_stream.c
index b25f3bf40..4375db948 100644
--- a/src/input_stream.c
+++ b/src/input_stream.c
@@ -86,6 +86,7 @@ input_stream_open(struct input_stream *is, const char *url)
assert(is->plugin->close != NULL);
assert(is->plugin->read != NULL);
assert(is->plugin->eof != NULL);
+ assert(!is->seekable || is->plugin->seek != NULL);
return true;
}
@@ -97,6 +98,9 @@ input_stream_open(struct input_stream *is, const char *url)
bool
input_stream_seek(struct input_stream *is, off_t offset, int whence)
{
+ if (is->plugin->seek == NULL)
+ return false;
+
return is->plugin->seek(is, offset, whence);
}
@@ -133,5 +137,8 @@ bool input_stream_eof(struct input_stream *is)
int input_stream_buffer(struct input_stream *is)
{
+ if (is->plugin->buffer == NULL)
+ return 0;
+
return is->plugin->buffer(is);
}