<html>
<body>
<div id="body" style="background-color:#ffffff;" >
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head" style="border-bottom-width:1px;border-bottom-style:solid;" ><td class="headtd" style="padding:0;padding-top:.2em;" colspan="4">Commit in <b><tt>lxdream/src</tt></b></td></tr>
<tr><td><tt><a href="#file1">Makefile.am</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">e1848ca9b5b1 -> 6464d890cc9e</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">Makefile.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+38</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-21</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">e1848ca9b5b1 -> 6464d890cc9e</td></tr>
<tr><td><tt>drivers/cdrom/<a href="#file3">isofs.h</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">e1848ca9b5b1 -> 6464d890cc9e</td></tr>
<tr class="alt" style=";" ><td><tt> /<a href="#file4"><span id="addedalt" style="background-color:#ccf7cc;" >isomem.c</span></a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+178</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" align="right" nowrap="nowrap">added 6464d890cc9e</td></tr>
<tr><td><tt><a href="#file5">loader.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-1</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">e1848ca9b5b1 -> 6464d890cc9e</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+219</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-24</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >1 added + 4 modified, total 5 files</small><br />
<pre class="comment" style="white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd;" >
Clone iso_memory_stream_new() as iso_mem_stream_new(), since current
versions of libisofs have made it unlinkable on linux
</pre>
<hr /><a name="file1" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>Makefile.am</b></big> <small id="info" style="color: #888888;" >e1848ca9b5b1 -> 6464d890cc9e</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.am
+++ lxdream/src/Makefile.am
@@ -73,7 +73,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > drivers/cdrom/edc_ecc.c drivers/cdrom/ecc.h drivers/cdrom/drive.c \
drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \
drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- drivers/cdrom/isofs.h drivers/cdrom/isofs.c \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ drivers/cdrom/isofs.h drivers/cdrom/isofs.c <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >drivers/cdrom/isomem.c </span>\
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > sh4/sh4.def sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \
hotkeys.c hotkeys.h
lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@
</pre></div>
<hr /><a name="file2" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>Makefile.in</b></big> <small id="info" style="color: #888888;" >e1848ca9b5b1 -> 6464d890cc9e</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.in
+++ lxdream/src/Makefile.in
@@ -175,11 +175,12 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \
drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \
drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \
- sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \
- hotkeys.c hotkeys.h plugin.c plugin.h sh4/sh4x86.c \
- xlat/x86/x86op.h xlat/x86/ia32abi.h xlat/x86/amd64abi.h \
- sh4/sh4trans.c sh4/sh4trans.h sh4/mmux86.c x86dasm/x86dasm.c \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ drivers/cdrom/isofs.h drivers/cdrom/isofs.c \
+ drivers/cdrom/isomem.c sh4/sh4.def sh4/sh4core.in \
+ sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \
+ hotkeys.h plugin.c plugin.h sh4/sh4x86.c xlat/x86/x86op.h \
+ xlat/x86/ia32abi.h xlat/x86/amd64abi.h sh4/sh4trans.c \
+ sh4/sh4trans.h sh4/mmux86.c x86dasm/x86dasm.c \
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > x86dasm/x86dasm.h x86dasm/i386-dis.c x86dasm/dis-init.c \
x86dasm/dis-buf.c x86dasm/ansidecl.h x86dasm/bfd.h \
x86dasm/dis-asm.h x86dasm/symcat.h x86dasm/sysdep.h \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -280,13 +281,14 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream-cd_nrg.$(OBJEXT) lxdream-cd_cdi.$(OBJEXT) \
lxdream-cd_gdi.$(OBJEXT) lxdream-edc_ecc.$(OBJEXT) \
lxdream-drive.$(OBJEXT) lxdream-cd_mmc.$(OBJEXT) \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- lxdream-isofs.$(OBJEXT) lxdream-hotkeys.$(OBJEXT) \
- $(am__objects_1) $(am__objects_2) $(am__objects_3) \
- $(am__objects_4) $(am__objects_5) $(am__objects_6) \
- $(am__objects_7) $(am__objects_8) $(am__objects_9) \
- $(am__objects_10) $(am__objects_11) $(am__objects_12) \
- $(am__objects_13) $(am__objects_14) $(am__objects_15) \
- $(am__objects_16) $(am__objects_17) $(am__objects_18)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ lxdream-isofs.$(OBJEXT) lxdream-isomem.$(OBJEXT) \
+ lxdream-hotkeys.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+ $(am__objects_6) $(am__objects_7) $(am__objects_8) \
+ $(am__objects_9) $(am__objects_10) $(am__objects_11) \
+ $(am__objects_12) $(am__objects_13) $(am__objects_14) \
+ $(am__objects_15) $(am__objects_16) $(am__objects_17) \
+ $(am__objects_18)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream_OBJECTS = $(am_lxdream_OBJECTS)
lxdream_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -595,15 +597,15 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \
drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \
drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \
- sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \
- hotkeys.c hotkeys.h $(am__append_1) $(am__append_2) \
- $(am__append_4) $(am__append_5) $(am__append_6) \
- $(am__append_7) $(am__append_8) $(am__append_9) \
- $(am__append_10) $(am__append_17) $(am__append_19) \
- $(am__append_21) $(am__append_23) $(am__append_25) \
- $(am__append_27) $(am__append_28) $(am__append_29) \
- $(am__append_30)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ drivers/cdrom/isofs.h drivers/cdrom/isofs.c \
+ drivers/cdrom/isomem.c sh4/sh4.def sh4/sh4core.in \
+ sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \
+ hotkeys.h $(am__append_1) $(am__append_2) $(am__append_4) \
+ $(am__append_5) $(am__append_6) $(am__append_7) \
+ $(am__append_8) $(am__append_9) $(am__append_10) \
+ $(am__append_17) $(am__append_19) $(am__append_21) \
+ $(am__append_23) $(am__append_25) $(am__append_27) \
+ $(am__append_28) $(am__append_29) $(am__append_30)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@
@BUILD_SH4X86_TRUE@test_testsh4x86_LDADD = @LXDREAM_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @LIBPNG_LIBS@
@BUILD_SH4X86_TRUE@test_testsh4x86_CPPFLAGS = @LXDREAMCPPFLAGS@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -838,6 +840,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-io_osx.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-ioutil.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isofs.Po@am__quote@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isomem.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-joy_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-kbd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-lightgun.Po@am__quote@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -2085,6 +2088,20 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isofs.obj `if test -f 'drivers/cdrom/isofs.c'; then $(CYGPATH_W) 'drivers/cdrom/isofs.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isofs.c'; fi`
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+lxdream-isomem.o: drivers/cdrom/isomem.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isomem.o -MD -MP -MF "$(DEPDIR)/lxdream-isomem.Tpo" -c -o lxdream-isomem.o `test -f 'drivers/cdrom/isomem.c' || echo '$(srcdir)/'`drivers/cdrom/isomem.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isomem.Tpo" "$(DEPDIR)/lxdream-isomem.Po"; else rm -f "$(DEPDIR)/lxdream-isomem.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isomem.c' object='lxdream-isomem.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isomem.o `test -f 'drivers/cdrom/isomem.c' || echo '$(srcdir)/'`drivers/cdrom/isomem.c
+
+lxdream-isomem.obj: drivers/cdrom/isomem.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isomem.obj -MD -MP -MF "$(DEPDIR)/lxdream-isomem.Tpo" -c -o lxdream-isomem.obj `if test -f 'drivers/cdrom/isomem.c'; then $(CYGPATH_W) 'drivers/cdrom/isomem.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isomem.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isomem.Tpo" "$(DEPDIR)/lxdream-isomem.Po"; else rm -f "$(DEPDIR)/lxdream-isomem.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isomem.c' object='lxdream-isomem.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isomem.obj `if test -f 'drivers/cdrom/isomem.c'; then $(CYGPATH_W) 'drivers/cdrom/isomem.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isomem.c'; fi`
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream-hotkeys.o: hotkeys.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-hotkeys.o -MD -MP -MF "$(DEPDIR)/lxdream-hotkeys.Tpo" -c -o lxdream-hotkeys.o `test -f 'hotkeys.c' || echo '$(srcdir)/'`hotkeys.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-hotkeys.Tpo" "$(DEPDIR)/lxdream-hotkeys.Po"; else rm -f "$(DEPDIR)/lxdream-hotkeys.Tpo"; exit 1; fi
</pre></div>
<hr /><a name="file3" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/drivers/cdrom</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>isofs.h</b></big> <small id="info" style="color: #888888;" >e1848ca9b5b1 -> 6464d890cc9e</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/isofs.h
+++ lxdream/src/drivers/cdrom/isofs.h
@@ -57,6 +57,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >
/** Prototypes for "Internal" Libisofs functions */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-int iso_mem<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >ory</span>_stream_new(unsigned char *buf, size_t size, IsoStream **stream);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+int iso_mem_stream_new(unsigned char *buf, size_t size, IsoStream **stream);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >
#endif /* !cdrom_isofs_H */
</pre></div>
<hr /><a name="file4" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span id="added" class="pathname" style="font-family:monospace; float:right; background-color:#ddffdd;" >lxdream/src/drivers/cdrom</span><br />
<div id="added" class="fileheader" style="margin-bottom:.5em; background-color:#ddffdd;" ><big><b>isomem.c</b></big> <small id="info" style="color: #888888;" >added at 6464d890cc9e</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/isomem.c
+++ lxdream/src/drivers/cdrom/isomem.c
@@ -0,0 +1,178 @@
</small></pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/*
+ * Copyright (c) 2007 Vreixo Formoso
+ * Copyright (c) 2009 Thomas Schmitt
+ *
+ * This file is part of the libisofs project; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * or later as published by the Free Software Foundation.
+ * See COPYING file for details.
+ *
+ * Memory stream extracted for use in lxdream by Nathan Keynes 2010.
+ */
+
+#include <libisofs.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <stdio.h>
+
+#ifndef MIN
+#define MIN(a,b) ((a)<=(b) ? (a) : (b))
+#endif
+
+#define ISO_MEM_FS_ID 4
+
+ino_t mem_serial_id = (ino_t)1;
+
+typedef struct
+{
+ uint8_t *buf;
+ ssize_t offset; /* -1 if stream closed */
+ ino_t ino_id;
+ size_t size;
+} MemStreamData;
+
+static
+int mem_open(IsoStream *stream)
+{
+ MemStreamData *data;
+ if (stream == NULL) {
+ return ISO_NULL_POINTER;
+ }
+ data = (MemStreamData*)stream->data;
+ if (data->offset != -1) {
+ return ISO_FILE_ALREADY_OPENED;
+ }
+ data->offset = 0;
+ return ISO_SUCCESS;
+}
+
+static
+int mem_close(IsoStream *stream)
+{
+ MemStreamData *data;
+ if (stream == NULL) {
+ return ISO_NULL_POINTER;
+ }
+ data = (MemStreamData*)stream->data;
+ if (data->offset == -1) {
+ return ISO_FILE_NOT_OPENED;
+ }
+ data->offset = -1;
+ return ISO_SUCCESS;
+}
+
+static
+off_t mem_get_size(IsoStream *stream)
+{
+ MemStreamData *data;
+ data = (MemStreamData*)stream->data;
+
+ return (off_t)data->size;
+}
+
+static
+int mem_read(IsoStream *stream, void *buf, size_t count)
+{
+ size_t len;
+ MemStreamData *data;
+ if (stream == NULL || buf == NULL) {
+ return ISO_NULL_POINTER;
+ }
+ if (count == 0) {
+ return ISO_WRONG_ARG_VALUE;
+ }
+ data = stream->data;
+
+ if (data->offset == -1) {
+ return ISO_FILE_NOT_OPENED;
+ }
+
+ if (data->offset >= data->size) {
+ return 0; /* EOF */
+ }
+
+ len = MIN(count, data->size - data->offset);
+ memcpy(buf, data->buf + data->offset, len);
+ data->offset += len;
+ return len;
+}
+
+static
+int mem_is_repeatable(IsoStream *stream)
+{
+ return 1;
+}
+
+static
+void mem_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id,
+ ino_t *ino_id)
+{
+ MemStreamData *data;
+ data = (MemStreamData*)stream->data;
+ *fs_id = ISO_MEM_FS_ID;
+ *dev_id = 0;
+ *ino_id = data->ino_id;
+}
+
+static
+void mem_free(IsoStream *stream)
+{
+ MemStreamData *data;
+ data = (MemStreamData*)stream->data;
+ free(data->buf);
+ free(data);
+}
+
+IsoStreamIface mem_stream_class = {
+ 0,
+ "mem ",
+ mem_open,
+ mem_close,
+ mem_get_size,
+ mem_read,
+ mem_is_repeatable,
+ mem_get_id,
+ mem_free
+};
+
+/**
+ * Create a stream for reading from a arbitrary memory buffer.
+ * When the Stream refcount reach 0, the buffer is free(3).
+ *
+ * @return
+ * 1 sucess, < 0 error
+ */
+int iso_mem_stream_new(unsigned char *buf, size_t size, IsoStream **stream)
+{
+ IsoStream *str;
+ MemStreamData *data;
+
+ if (buf == NULL || stream == NULL) {
+ return ISO_NULL_POINTER;
+ }
+
+ str = malloc(sizeof(IsoStream));
+ if (str == NULL) {
+ return ISO_OUT_OF_MEM;
+ }
+ data = malloc(sizeof(MemStreamData));
+ if (data == NULL) {
+ free(str);
+ return ISO_OUT_OF_MEM;
+ }
+
+ /* fill data */
+ data->buf = buf;
+ data->size = size;
+ data->offset = -1;
+ data->ino_id = mem_serial_id++;
+
+ str->refcount = 1;
+ str->data = data;
+ str->class = &mem_stream_class;
+
+ *stream = str;
+ return ISO_SUCCESS;
+}
</pre></div>
<hr /><a name="file5" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>loader.c</b></big> <small id="info" style="color: #888888;" >e1848ca9b5b1 -> 6464d890cc9e</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/loader.c
+++ lxdream/src/loader.c
@@ -368,7 +368,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
IsoStream *stream;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >- if( iso_mem<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >ory</span>_stream_new(data, bin_size, &stream) != 1 ) {
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ if( iso_mem_stream_new(data, bin_size, &stream) != 1 ) {
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > g_free(data);
iso_image_unref(iso);
SET_ERROR( err, LX_ERR_NOMEM, "Unable to create CD image: out of memory" );
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>