archive/iso: renamed plugin to "iso9660"
Based on libiso9660.
This commit is contained in:
parent
c3e0fbd9e4
commit
bd97586cc4
|
@ -358,8 +358,8 @@ if HAVE_ZZIP
|
||||||
ARCHIVE_SRC += src/archive/zzip_archive_plugin.c
|
ARCHIVE_SRC += src/archive/zzip_archive_plugin.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_ISO
|
if HAVE_ISO9660
|
||||||
ARCHIVE_SRC += src/archive/iso_plugin.c
|
ARCHIVE_SRC += src/archive/iso9660_archive_plugin.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ENABLE_ARCHIVE
|
if ENABLE_ARCHIVE
|
||||||
|
|
1
NEWS
1
NEWS
|
@ -11,6 +11,7 @@ ver 0.16 (20??/??/??)
|
||||||
- allow changing replay gain mode on-the-fly
|
- allow changing replay gain mode on-the-fly
|
||||||
- omitting the range end is possible
|
- omitting the range end is possible
|
||||||
* archive:
|
* archive:
|
||||||
|
- iso: renamed plugin to "iso9660"
|
||||||
- zip: renamed plugin to "zzip"
|
- zip: renamed plugin to "zzip"
|
||||||
* input:
|
* input:
|
||||||
- lastfm: obsolete plugin removed
|
- lastfm: obsolete plugin removed
|
||||||
|
|
|
@ -378,9 +378,9 @@ AC_ARG_ENABLE(iso9660,
|
||||||
MPD_AUTO_PKG(iso9660, ISO9660, [libiso9660],
|
MPD_AUTO_PKG(iso9660, ISO9660, [libiso9660],
|
||||||
[libiso9660 archive library], [libiso9660 not found])
|
[libiso9660 archive library], [libiso9660 not found])
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_ISO, test x$enable_iso9660 = xyes)
|
AM_CONDITIONAL(HAVE_ISO9660, test x$enable_iso9660 = xyes)
|
||||||
if test x$enable_iso9660 = xyes; then
|
if test x$enable_iso9660 = xyes; then
|
||||||
AC_DEFINE(HAVE_ISO, 1, [Define to have iso archive support])
|
AC_DEFINE(HAVE_ISO9660, 1, [Define to have ISO9660 archive support])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl archive API
|
dnl archive API
|
||||||
|
|
|
@ -33,16 +33,16 @@
|
||||||
|
|
||||||
#define CEILING(x, y) ((x+(y-1))/y)
|
#define CEILING(x, y) ((x+(y-1))/y)
|
||||||
|
|
||||||
typedef struct {
|
struct iso9660_archive_file {
|
||||||
iso9660_t *iso;
|
iso9660_t *iso;
|
||||||
iso9660_stat_t *statbuf;
|
iso9660_stat_t *statbuf;
|
||||||
size_t cur_ofs;
|
size_t cur_ofs;
|
||||||
size_t max_blocks;
|
size_t max_blocks;
|
||||||
GSList *list;
|
GSList *list;
|
||||||
GSList *iter;
|
GSList *iter;
|
||||||
} iso_context;
|
};
|
||||||
|
|
||||||
static const struct input_plugin iso_inputplugin;
|
static const struct input_plugin iso9660_input_plugin;
|
||||||
|
|
||||||
static inline GQuark
|
static inline GQuark
|
||||||
iso9660_quark(void)
|
iso9660_quark(void)
|
||||||
|
@ -53,7 +53,7 @@ iso9660_quark(void)
|
||||||
/* archive open && listing routine */
|
/* archive open && listing routine */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
listdir_recur(const char *psz_path, iso_context *context)
|
listdir_recur(const char *psz_path, struct iso9660_archive_file *context)
|
||||||
{
|
{
|
||||||
iso9660_t *iso = context->iso;
|
iso9660_t *iso = context->iso;
|
||||||
CdioList_t *entlist;
|
CdioList_t *entlist;
|
||||||
|
@ -87,9 +87,10 @@ listdir_recur(const char *psz_path, iso_context *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct archive_file *
|
static struct archive_file *
|
||||||
iso_open(char * pathname)
|
iso9660_archive_open(char * pathname)
|
||||||
{
|
{
|
||||||
iso_context *context = g_malloc(sizeof(iso_context));
|
struct iso9660_archive_file *context =
|
||||||
|
g_new(struct iso9660_archive_file, 1);
|
||||||
|
|
||||||
context->list = NULL;
|
context->list = NULL;
|
||||||
|
|
||||||
|
@ -106,17 +107,21 @@ iso_open(char * pathname)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iso_scan_reset(struct archive_file *file)
|
iso9660_archive_scan_reset(struct archive_file *file)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) file;
|
struct iso9660_archive_file *context =
|
||||||
|
(struct iso9660_archive_file *)file;
|
||||||
|
|
||||||
//reset iterator
|
//reset iterator
|
||||||
context->iter = context->list;
|
context->iter = context->list;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
iso_scan_next(struct archive_file *file)
|
iso9660_archive_scan_next(struct archive_file *file)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) file;
|
struct iso9660_archive_file *context =
|
||||||
|
(struct iso9660_archive_file *)file;
|
||||||
|
|
||||||
char *data = NULL;
|
char *data = NULL;
|
||||||
if (context->iter != NULL) {
|
if (context->iter != NULL) {
|
||||||
///fetch data and goto next
|
///fetch data and goto next
|
||||||
|
@ -127,9 +132,11 @@ iso_scan_next(struct archive_file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iso_close(struct archive_file *file)
|
iso9660_archive_close(struct archive_file *file)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) file;
|
struct iso9660_archive_file *context =
|
||||||
|
(struct iso9660_archive_file *)file;
|
||||||
|
|
||||||
GSList *tmp;
|
GSList *tmp;
|
||||||
if (context->list) {
|
if (context->list) {
|
||||||
//free list
|
//free list
|
||||||
|
@ -146,12 +153,14 @@ iso_close(struct archive_file *file)
|
||||||
/* single archive handling */
|
/* single archive handling */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
iso_open_stream(struct archive_file *file, struct input_stream *is,
|
iso9660_archive_open_stream(struct archive_file *file, struct input_stream *is,
|
||||||
const char *pathname, GError **error_r)
|
const char *pathname, GError **error_r)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) file;
|
struct iso9660_archive_file *context =
|
||||||
|
(struct iso9660_archive_file *)file;
|
||||||
|
|
||||||
//setup file ops
|
//setup file ops
|
||||||
is->plugin = &iso_inputplugin;
|
is->plugin = &iso9660_input_plugin;
|
||||||
//insert back reference
|
//insert back reference
|
||||||
is->data = context;
|
is->data = context;
|
||||||
//we are not seekable
|
//we are not seekable
|
||||||
|
@ -170,19 +179,19 @@ iso_open_stream(struct archive_file *file, struct input_stream *is,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iso_is_close(struct input_stream *is)
|
iso9660_input_close(struct input_stream *is)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) is->data;
|
struct iso9660_archive_file *context = is->data;
|
||||||
g_free(context->statbuf);
|
g_free(context->statbuf);
|
||||||
|
|
||||||
iso_close((struct archive_file *)context);
|
iso9660_archive_close((struct archive_file *)context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
iso_is_read(struct input_stream *is, void *ptr, size_t size, GError **error_r)
|
iso9660_input_read(struct input_stream *is, void *ptr, size_t size, GError **error_r)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) is->data;
|
struct iso9660_archive_file *context = (struct iso9660_archive_file *) is->data;
|
||||||
int toread, readed = 0;
|
int toread, readed = 0;
|
||||||
int no_blocks, cur_block;
|
int no_blocks, cur_block;
|
||||||
size_t left_bytes = context->statbuf->size - context->cur_ofs;
|
size_t left_bytes = context->statbuf->size - context->cur_ofs;
|
||||||
|
@ -218,31 +227,32 @@ iso_is_read(struct input_stream *is, void *ptr, size_t size, GError **error_r)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
iso_is_eof(struct input_stream *is)
|
iso9660_input_eof(struct input_stream *is)
|
||||||
{
|
{
|
||||||
iso_context *context = (iso_context *) is->data;
|
struct iso9660_archive_file *context = is->data;
|
||||||
|
|
||||||
return (context->cur_ofs == context->statbuf->size);
|
return (context->cur_ofs == context->statbuf->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* exported structures */
|
/* exported structures */
|
||||||
|
|
||||||
static const char *const iso_extensions[] = {
|
static const char *const iso9660_archive_extensions[] = {
|
||||||
"iso",
|
"iso",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct input_plugin iso_inputplugin = {
|
static const struct input_plugin iso9660_input_plugin = {
|
||||||
.close = iso_is_close,
|
.close = iso9660_input_close,
|
||||||
.read = iso_is_read,
|
.read = iso9660_input_read,
|
||||||
.eof = iso_is_eof,
|
.eof = iso9660_input_eof,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct archive_plugin iso_plugin = {
|
const struct archive_plugin iso9660_archive_plugin = {
|
||||||
.name = "iso",
|
.name = "iso",
|
||||||
.open = iso_open,
|
.open = iso9660_archive_open,
|
||||||
.scan_reset = iso_scan_reset,
|
.scan_reset = iso9660_archive_scan_reset,
|
||||||
.scan_next = iso_scan_next,
|
.scan_next = iso9660_archive_scan_next,
|
||||||
.open_stream = iso_open_stream,
|
.open_stream = iso9660_archive_open_stream,
|
||||||
.close = iso_close,
|
.close = iso9660_archive_close,
|
||||||
.suffixes = iso_extensions
|
.suffixes = iso9660_archive_extensions
|
||||||
};
|
};
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
extern const struct archive_plugin bz2_plugin;
|
extern const struct archive_plugin bz2_plugin;
|
||||||
extern const struct archive_plugin zzip_archive_plugin;
|
extern const struct archive_plugin zzip_archive_plugin;
|
||||||
extern const struct archive_plugin iso_plugin;
|
extern const struct archive_plugin iso9660_archive_plugin;
|
||||||
|
|
||||||
static const struct archive_plugin *const archive_plugins[] = {
|
static const struct archive_plugin *const archive_plugins[] = {
|
||||||
#ifdef HAVE_BZ2
|
#ifdef HAVE_BZ2
|
||||||
|
@ -36,8 +36,8 @@ static const struct archive_plugin *const archive_plugins[] = {
|
||||||
#ifdef HAVE_ZZIP
|
#ifdef HAVE_ZZIP
|
||||||
&zzip_archive_plugin,
|
&zzip_archive_plugin,
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_ISO
|
#ifdef HAVE_ISO9660
|
||||||
&iso_plugin,
|
&iso9660_archive_plugin,
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue