<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</tt></b></td></tr>
<tr><td><tt><a href="#file1">configure</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+220</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">configure.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+6</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr><td><tt>src/<a href="#file3">Makefile.am</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+2</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-11</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt>   /<a href="#file4">Makefile.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+48</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-204</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr><td><tt>   /<a href="#file5">bios.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+59</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-46</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt>src/drivers/cdrom/<a href="#file6"><span id="removedalt" style="background-color:#f7cccc;" >iso_impl.h</span></a></tt></td><td></td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-128</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 removed</td></tr>
<tr><td><tt>                 /<a href="#file7"><span id="added" style="background-color:#ddffdd;" >isofs.c</span></a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+188</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" align="right" nowrap="nowrap">added 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt>                 /<a href="#file8"><span id="addedalt" style="background-color:#ccf7cc;" >isofs.h</span></a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+58</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" align="right" nowrap="nowrap">added 7b279d10f46f</td></tr>
<tr><td><tt>                 /<a href="#file9"><span id="removed" style="background-color:#ffdddd;" >isoread.c</span></a></tt></td><td></td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-392</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 removed</td></tr>
<tr class="alt" style=";" ><td><tt>                 /<a href="#file10"><span id="removedalt" style="background-color:#f7cccc;" >isoread.h</span></a></tt></td><td></td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-95</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 removed</td></tr>
<tr><td><tt>                 /<a href="#file11">sector.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+134</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt>                 /<a href="#file12">sector.h</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+27</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">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr><td><tt>src/<a href="#file13">main.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+2</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 -> 7b279d10f46f</td></tr>
<tr class="alt" style=";" ><td><tt>src/test/<a href="#file14"><span id="removedalt" style="background-color:#f7cccc;" >testisoread.c</span></a></tt></td><td></td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-63</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">1879fd49ccf6 removed</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+744</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-940</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >2 added + 4 removed + 8 modified, total 14 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;" >
Rip out my hacked-up isofs code and replace with libisofs. Much better.
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>configure</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/configure
+++ lxdream/configure
@@ -9224,6 +9224,226 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > fi
 
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for libisofs/libisofs.h" >&5
+$as_echo_n "checking for libisofs/libisofs.h... " >&6; }
+if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libisofs_libisofs_h" >&5
+$as_echo "$ac_cv_header_libisofs_libisofs_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking libisofs/libisofs.h usability" >&5
+$as_echo_n "checking libisofs/libisofs.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <libisofs/libisofs.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking libisofs/libisofs.h presence" >&5
+$as_echo_n "checking libisofs/libisofs.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libisofs/libisofs.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: libisofs/libisofs.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for libisofs/libisofs.h" >&5
+$as_echo_n "checking for libisofs/libisofs.h... " >&6; }
+if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_libisofs_libisofs_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libisofs_libisofs_h" >&5
+$as_echo "$ac_cv_header_libisofs_libisofs_h" >&6; }
+
+fi
+if test "x$ac_cv_header_libisofs_libisofs_h" = x""yes; then
+
+   { $as_echo "$as_me:$LINENO: checking for iso_data_source_new_from_file in -lisofs" >&5
+$as_echo_n "checking for iso_data_source_new_from_file in -lisofs... " >&6; }
+if test "${ac_cv_lib_isofs_iso_data_source_new_from_file+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lisofs  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char iso_data_source_new_from_file ();
+int
+main ()
+{
+return iso_data_source_new_from_file ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_isofs_iso_data_source_new_from_file=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_isofs_iso_data_source_new_from_file=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_isofs_iso_data_source_new_from_file" >&5
+$as_echo "$ac_cv_lib_isofs_iso_data_source_new_from_file" >&6; }
+if test "x$ac_cv_lib_isofs_iso_data_source_new_from_file" = x""yes; then
+
+      LIBS="$LIBS -lisofs"
+
+else
+   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: \"Libisofs library not found, but is required\"
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: \"Libisofs library not found, but is required\"
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+else
+   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: \"Libisofs headers not found, but is required\"
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: \"Libisofs headers not found, but is required\"
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > if test "x$with_osmesa" != xno; then
 
 
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>configure.in</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/configure.in
+++ lxdream/configure.in
@@ -217,6 +217,12 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 AM_CONDITIONAL(GUI_GTK, [test "$HAVE_GTK" = 'yes'])
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+AC_CHECK_HEADER([libisofs/libisofs.h], [
+   AC_CHECK_LIB(isofs, [iso_data_source_new_from_file], [
+      LIBS="$LIBS -lisofs"
+   ], [ AC_MSG_FAILURE( ["Libisofs library not found, but is required"]) ])], 
+      [ AC_MSG_FAILURE( ["Libisofs headers not found, but is required"]) ])
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > dnl ------------------ Video driver support -------------------
 AS_IF([test "x$with_osmesa" != xno], [ 
 
</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</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>Makefile.am</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.am
+++ lxdream/src/Makefile.am
@@ -13,7 +13,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > PLUGINLDFLAGS = @PLUGINLDFLAGS@
 bin_PROGRAMS = lxdream
 noinst_PROGRAMS = gendec genglsl genmach
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-check_PROGRAMS = test/testxlt test/testisoread
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+check_PROGRAMS = test/testxlt
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 pkglib_PROGRAMS=
 EXTRA_DIST=drivers/genkeymap.pl checkver.pl drivers/dummy.c
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -74,7 +74,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/isoread.h drivers/cdrom/isoread.c drivers/cdrom/iso_impl.h \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     drivers/cdrom/isofs.h drivers/cdrom/isofs.c \
</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><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -241,15 +241,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 
 test_testxlt_SOURCES = test/testxlt.c xlat/xltcache.c xlat/xltcache.h
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-test_testisoread_SOURCES = test/testisoread.c drivers/cdrom/isoread.c \
-       drivers/cdrom/isoread.h drivers/cdrom/isofs_impl.h drivers/cdrom/ecc.h \
-       drivers/cdrom/cdrom.c drivers/cdrom/cdrom.h drivers/cdrom/sector.h \
-       drivers/cdrom/sector.c drivers/cdrom/cdimpl.h drivers/cdrom/edc_ecc.c \
-       drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \
-       drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \
-       drivers/cdrom/defs.h drivers/cdrom/drive.h drivers/cdrom/drive.c \
-       drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c
-test_testisoread_LDADD = @GLIB_LIBS@ $(INTLLIBS)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 sh4/sh4core.c: gendec sh4/sh4.def sh4/sh4core.in
        $(mkdir_p) `dirname $@`
</pre></div>
<hr /><a name="file4" /><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;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/Makefile.in
+++ lxdream/src/Makefile.in
@@ -38,8 +38,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > host_triplet = @host@
 bin_PROGRAMS = lxdream$(EXEEXT)
 noinst_PROGRAMS = gendec$(EXEEXT) genglsl$(EXEEXT) genmach$(EXEEXT)
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-check_PROGRAMS = test/testxlt$(EXEEXT) test/testisoread$(EXEEXT) \
-       $(am__EXEEXT_1)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+check_PROGRAMS = test/testxlt$(EXEEXT) $(am__EXEEXT_1)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > pkglib_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \
        $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7)
 @BUILD_SHARED_TRUE@am__append_1 = plugin.c plugin.h
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -175,29 +174,28 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      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 \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   drivers/cdrom/cd_mmc.c drivers/cdrom/isoread.h \
-       drivers/cdrom/isoread.c drivers/cdrom/iso_impl.h 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 \
-       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 \
-       gtkui/gtkui.c gtkui/gtkui.h gtkui/gtk_win.c gtkui/gtkcb.c \
-       gtkui/gtk_cfg.c gtkui/gtk_mmio.c gtkui/gtk_debug.c \
-       gtkui/gtk_dump.c gtkui/gtk_ctrl.c gtkui/gtk_gd.c \
-       drivers/io_glib.c drivers/video_gtk.c cocoaui/cocoaui.m \
-       cocoaui/cocoaui.h cocoaui/cocoa_cfg.m cocoaui/cocoa_win.m \
-       cocoaui/cocoa_gd.m cocoaui/cocoa_prefs.m cocoaui/cocoa_ctrl.m \
-       cocoaui/paths_osx.m drivers/io_osx.m drivers/video_osx.m \
-       drivers/mac_keymap.h drivers/mac_keymap.txt paths_unix.c \
-       drivers/video_gdk.c drivers/video_glx.c drivers/video_glx.h \
-       drivers/video_nsgl.m drivers/video_nsgl.h drivers/audio_osx.m \
-       drivers/audio_sdl.c drivers/audio_pulse.c drivers/audio_esd.c \
-       drivers/audio_alsa.c drivers/input_lirc.c \
-       drivers/cdrom/cd_linux.c drivers/cdrom/cd_osx.c \
-       drivers/osx_iokit.m drivers/osx_iokit.h \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     drivers/cdrom/cd_mmc.c 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 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 gtkui/gtkui.c gtkui/gtkui.h gtkui/gtk_win.c \
+       gtkui/gtkcb.c gtkui/gtk_cfg.c gtkui/gtk_mmio.c \
+       gtkui/gtk_debug.c gtkui/gtk_dump.c gtkui/gtk_ctrl.c \
+       gtkui/gtk_gd.c drivers/io_glib.c drivers/video_gtk.c \
+       cocoaui/cocoaui.m cocoaui/cocoaui.h cocoaui/cocoa_cfg.m \
+       cocoaui/cocoa_win.m cocoaui/cocoa_gd.m cocoaui/cocoa_prefs.m \
+       cocoaui/cocoa_ctrl.m cocoaui/paths_osx.m drivers/io_osx.m \
+       drivers/video_osx.m drivers/mac_keymap.h \
+       drivers/mac_keymap.txt paths_unix.c drivers/video_gdk.c \
+       drivers/video_glx.c drivers/video_glx.h drivers/video_nsgl.m \
+       drivers/video_nsgl.h drivers/audio_osx.m drivers/audio_sdl.c \
+       drivers/audio_pulse.c drivers/audio_esd.c drivers/audio_alsa.c \
+       drivers/input_lirc.c drivers/cdrom/cd_linux.c \
+       drivers/cdrom/cd_osx.c drivers/osx_iokit.m drivers/osx_iokit.h \
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    drivers/cdrom/cd_none.c drivers/joy_linux.c \
        drivers/joy_linux.h
 @BUILD_SHARED_TRUE@am__objects_1 = lxdream-plugin.$(OBJEXT)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -280,7 +278,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      lxdream-sector.$(OBJEXT) lxdream-cd_nrg.$(OBJEXT) \
        lxdream-cd_cdi.$(OBJEXT) lxdream-cd_gdi.$(OBJEXT) \
        lxdream-edc_ecc.$(OBJEXT) lxdream-drive.$(OBJEXT) \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   lxdream-cd_mmc.$(OBJEXT) lxdream-iso<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >read</span>.$(OBJEXT) \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     lxdream-cd_mmc.$(OBJEXT) lxdream-iso<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >fs</span>.$(OBJEXT) \
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    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) \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -296,13 +294,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > lxdream_dummy_@SOEXT@_OBJECTS = $(am_lxdream_dummy_@SOEXT@_OBJECTS)
 @BUILD_SHARED_TRUE@lxdream_dummy_@SOEXT@_DEPENDENCIES =  \
 @BUILD_SHARED_TRUE@    lxdream_dummy.lo
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-am_test_testisoread_OBJECTS = testisoread.$(OBJEXT) isoread.$(OBJEXT) \
-       cdrom.$(OBJEXT) sector.$(OBJEXT) edc_ecc.$(OBJEXT) \
-       drive.$(OBJEXT) cd_nrg.$(OBJEXT) cd_cdi.$(OBJEXT) \
-       cd_gdi.$(OBJEXT)
-test_testisoread_OBJECTS = $(am_test_testisoread_OBJECTS)
-test_testisoread_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__dirstamp = $(am__leading_dot)dirstamp
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > am__test_testsh4x86_SOURCES_DIST = test/testsh4x86.c x86dasm/x86dasm.c \
        x86dasm/x86dasm.h x86dasm/i386-dis.c x86dasm/dis-init.c \
        x86dasm/dis-buf.c sh4/sh4trans.c sh4/sh4x86.c xlat/xltcache.c \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -322,6 +313,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @BUILD_SH4X86_TRUE@  test_testsh4x86-cpu.$(OBJEXT)
 test_testsh4x86_OBJECTS = $(am_test_testsh4x86_OBJECTS)
 test_testsh4x86_DEPENDENCIES =
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+am__dirstamp = $(am__leading_dot)dirstamp
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > am_test_testxlt_OBJECTS = testxlt.$(OBJEXT) xltcache.$(OBJEXT)
 test_testxlt_OBJECTS = $(am_test_testxlt_OBJECTS)
 test_testxlt_LDADD = $(LDADD)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -341,14 +333,14 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      $(audio_pulse_@SOEXT@_SOURCES) $(audio_sdl_@SOEXT@_SOURCES) \
        $(gendec_SOURCES) $(genglsl_SOURCES) $(genmach_SOURCES) \
        $(input_lirc_@SOEXT@_SOURCES) $(lxdream_SOURCES) \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testisoread_SOURCES) \
-       $(test_testsh4x86_SOURCES) $(test_testxlt_SOURCES)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testsh4x86_SOURCES) \
+       $(test_testxlt_SOURCES)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > DIST_SOURCES = $(audio_alsa_@SOEXT@_SOURCES) \
        $(audio_esd_@SOEXT@_SOURCES) $(audio_pulse_@SOEXT@_SOURCES) \
        $(audio_sdl_@SOEXT@_SOURCES) $(gendec_SOURCES) \
        $(genglsl_SOURCES) $(genmach_SOURCES) \
        $(input_lirc_@SOEXT@_SOURCES) $(am__lxdream_SOURCES_DIST) \
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-   $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testisoread_SOURCES) \
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+     $(lxdream_dummy_@SOEXT@_SOURCES) \
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    $(am__test_testsh4x86_SOURCES_DIST) $(test_testxlt_SOURCES)
 ETAGS = etags
 CTAGS = ctags
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -597,15 +589,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/isoread.h drivers/cdrom/isoread.c \
-       drivers/cdrom/iso_impl.h 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 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;" >@@ -637,16 +629,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > genglsl_LDADD = @GLIB_LIBS@ @GTK_LIBS@ $(INTLLIBS)
 genmach_LDADD = @GLIB_LIBS@ @GTK_LIBS@ $(INTLLIBS)
 test_testxlt_SOURCES = test/testxlt.c xlat/xltcache.c xlat/xltcache.h
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-test_testisoread_SOURCES = test/testisoread.c drivers/cdrom/isoread.c \
-       drivers/cdrom/isoread.h drivers/cdrom/isofs_impl.h drivers/cdrom/ecc.h \
-       drivers/cdrom/cdrom.c drivers/cdrom/cdrom.h drivers/cdrom/sector.h \
-       drivers/cdrom/sector.c drivers/cdrom/cdimpl.h drivers/cdrom/edc_ecc.c \
-       drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \
-       drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \
-       drivers/cdrom/defs.h drivers/cdrom/drive.h drivers/cdrom/drive.c \
-       drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c
-
-test_testisoread_LDADD = @GLIB_LIBS@ $(INTLLIBS)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -766,9 +748,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > test/$(am__dirstamp):
        @$(mkdir_p) test
        @: > test/$(am__dirstamp)
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-test/testisoread$(EXEEXT): $(test_testisoread_OBJECTS) $(test_testisoread_DEPENDENCIES) test/$(am__dirstamp)
-       @rm -f test/testisoread$(EXEEXT)
-       $(LINK) $(test_testisoread_LDFLAGS) $(test_testisoread_OBJECTS) $(test_testisoread_LDADD) $(LIBS)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > test/testsh4x86$(EXEEXT): $(test_testsh4x86_OBJECTS) $(test_testsh4x86_DEPENDENCIES) test/$(am__dirstamp)
        @rm -f test/testsh4x86$(EXEEXT)
        $(LINK) $(test_testsh4x86_LDFLAGS) $(test_testsh4x86_OBJECTS) $(test_testsh4x86_LDADD) $(LIBS)
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -783,17 +762,10 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actparse.Po@am__quote@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_cdi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_gdi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_nrg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdrom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edc_ecc.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gendec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genglsl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genmach.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insparse.Po@am__quote@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isoread.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-aica.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-armcore.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-armdasm.Po@am__quote@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -860,7 +832,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-io_glib.Po@am__quote@
 @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@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-iso<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >read</span>.Po@am__quote@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-iso<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >fs</span>.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;" >@@ -915,7 +887,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-xltcache.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-yuv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdparse.Po@am__quote@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sector.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-cpu.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-dis-buf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-dis-init.Po@am__quote@
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -928,7 +899,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-x86dasm.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-xltcache.Po@am__quote@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testisoread.Po@am__quote@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testxlt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xltcache.Po@am__quote@
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -2080,19 +2050,19 @@
</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-cd_mmc.obj `if test -f 'drivers/cdrom/cd_mmc.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_mmc.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_mmc.c'; fi`
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-lxdream-isoread.o: drivers/cdrom/isoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isoread.o -MD -MP -MF "$(DEPDIR)/lxdream-isoread.Tpo" -c -o lxdream-isoread.o `test -f 'drivers/cdrom/isoread.c' || echo '$(srcdir)/'`drivers/cdrom/isoread.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-isoread.Tpo" "$(DEPDIR)/lxdream-isoread.Po"; else rm -f "$(DEPDIR)/lxdream-isoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isoread.c' object='lxdream-isoread.o' libtool=no @AMDEPBACKSLASH@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+lxdream-isofs.o: drivers/cdrom/isofs.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isofs.o -MD -MP -MF "$(DEPDIR)/lxdream-isofs.Tpo" -c -o lxdream-isofs.o `test -f 'drivers/cdrom/isofs.c' || echo '$(srcdir)/'`drivers/cdrom/isofs.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-isofs.Tpo" "$(DEPDIR)/lxdream-isofs.Po"; else rm -f "$(DEPDIR)/lxdream-isofs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isofs.c' object='lxdream-isofs.o' libtool=no @AMDEPBACKSLASH@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__fastdepCC_FALSE@  DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@am__fastdepCC_FALSE@      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isoread.o `test -f 'drivers/cdrom/isoread.c' || echo '$(srcdir)/'`drivers/cdrom/isoread.c
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+@am__fastdepCC_FALSE@        $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isofs.o `test -f 'drivers/cdrom/isofs.c' || echo '$(srcdir)/'`drivers/cdrom/isofs.c
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-lxdream-isoread.obj: drivers/cdrom/isoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isoread.obj -MD -MP -MF "$(DEPDIR)/lxdream-isoread.Tpo" -c -o lxdream-isoread.obj `if test -f 'drivers/cdrom/isoread.c'; then $(CYGPATH_W) 'drivers/cdrom/isoread.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isoread.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-isoread.Tpo" "$(DEPDIR)/lxdream-isoread.Po"; else rm -f "$(DEPDIR)/lxdream-isoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isoread.c' object='lxdream-isoread.obj' libtool=no @AMDEPBACKSLASH@
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+lxdream-isofs.obj: drivers/cdrom/isofs.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isofs.obj -MD -MP -MF "$(DEPDIR)/lxdream-isofs.Tpo" -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`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/lxdream-isofs.Tpo" "$(DEPDIR)/lxdream-isofs.Po"; else rm -f "$(DEPDIR)/lxdream-isofs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isofs.c' object='lxdream-isofs.obj' libtool=no @AMDEPBACKSLASH@
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > @AMDEP_TRUE@@am__fastdepCC_FALSE@  DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-@am__fastdepCC_FALSE@      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isoread.obj `if test -f 'drivers/cdrom/isoread.c'; then $(CYGPATH_W) 'drivers/cdrom/isoread.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isoread.c'; fi`
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+@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="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; \
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -2542,132 +2512,6 @@
</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-joy_linux.obj `if test -f 'drivers/joy_linux.c'; then $(CYGPATH_W) 'drivers/joy_linux.c'; else $(CYGPATH_W) '$(srcdir)/drivers/joy_linux.c'; fi`
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-testisoread.o: test/testisoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testisoread.o -MD -MP -MF "$(DEPDIR)/testisoread.Tpo" -c -o testisoread.o `test -f 'test/testisoread.c' || echo '$(srcdir)/'`test/testisoread.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/testisoread.Tpo" "$(DEPDIR)/testisoread.Po"; else rm -f "$(DEPDIR)/testisoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test/testisoread.c' object='testisoread.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testisoread.o `test -f 'test/testisoread.c' || echo '$(srcdir)/'`test/testisoread.c
-
-testisoread.obj: test/testisoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testisoread.obj -MD -MP -MF "$(DEPDIR)/testisoread.Tpo" -c -o testisoread.obj `if test -f 'test/testisoread.c'; then $(CYGPATH_W) 'test/testisoread.c'; else $(CYGPATH_W) '$(srcdir)/test/testisoread.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/testisoread.Tpo" "$(DEPDIR)/testisoread.Po"; else rm -f "$(DEPDIR)/testisoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='test/testisoread.c' object='testisoread.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testisoread.obj `if test -f 'test/testisoread.c'; then $(CYGPATH_W) 'test/testisoread.c'; else $(CYGPATH_W) '$(srcdir)/test/testisoread.c'; fi`
-
-isoread.o: drivers/cdrom/isoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isoread.o -MD -MP -MF "$(DEPDIR)/isoread.Tpo" -c -o isoread.o `test -f 'drivers/cdrom/isoread.c' || echo '$(srcdir)/'`drivers/cdrom/isoread.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/isoread.Tpo" "$(DEPDIR)/isoread.Po"; else rm -f "$(DEPDIR)/isoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isoread.c' object='isoread.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isoread.o `test -f 'drivers/cdrom/isoread.c' || echo '$(srcdir)/'`drivers/cdrom/isoread.c
-
-isoread.obj: drivers/cdrom/isoread.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isoread.obj -MD -MP -MF "$(DEPDIR)/isoread.Tpo" -c -o isoread.obj `if test -f 'drivers/cdrom/isoread.c'; then $(CYGPATH_W) 'drivers/cdrom/isoread.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isoread.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/isoread.Tpo" "$(DEPDIR)/isoread.Po"; else rm -f "$(DEPDIR)/isoread.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/isoread.c' object='isoread.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isoread.obj `if test -f 'drivers/cdrom/isoread.c'; then $(CYGPATH_W) 'drivers/cdrom/isoread.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isoread.c'; fi`
-
-cdrom.o: drivers/cdrom/cdrom.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdrom.o -MD -MP -MF "$(DEPDIR)/cdrom.Tpo" -c -o cdrom.o `test -f 'drivers/cdrom/cdrom.c' || echo '$(srcdir)/'`drivers/cdrom/cdrom.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cdrom.Tpo" "$(DEPDIR)/cdrom.Po"; else rm -f "$(DEPDIR)/cdrom.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cdrom.c' object='cdrom.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdrom.o `test -f 'drivers/cdrom/cdrom.c' || echo '$(srcdir)/'`drivers/cdrom/cdrom.c
-
-cdrom.obj: drivers/cdrom/cdrom.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdrom.obj -MD -MP -MF "$(DEPDIR)/cdrom.Tpo" -c -o cdrom.obj `if test -f 'drivers/cdrom/cdrom.c'; then $(CYGPATH_W) 'drivers/cdrom/cdrom.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cdrom.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cdrom.Tpo" "$(DEPDIR)/cdrom.Po"; else rm -f "$(DEPDIR)/cdrom.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cdrom.c' object='cdrom.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdrom.obj `if test -f 'drivers/cdrom/cdrom.c'; then $(CYGPATH_W) 'drivers/cdrom/cdrom.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cdrom.c'; fi`
-
-sector.o: drivers/cdrom/sector.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sector.o -MD -MP -MF "$(DEPDIR)/sector.Tpo" -c -o sector.o `test -f 'drivers/cdrom/sector.c' || echo '$(srcdir)/'`drivers/cdrom/sector.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/sector.Tpo" "$(DEPDIR)/sector.Po"; else rm -f "$(DEPDIR)/sector.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/sector.c' object='sector.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sector.o `test -f 'drivers/cdrom/sector.c' || echo '$(srcdir)/'`drivers/cdrom/sector.c
-
-sector.obj: drivers/cdrom/sector.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sector.obj -MD -MP -MF "$(DEPDIR)/sector.Tpo" -c -o sector.obj `if test -f 'drivers/cdrom/sector.c'; then $(CYGPATH_W) 'drivers/cdrom/sector.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/sector.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/sector.Tpo" "$(DEPDIR)/sector.Po"; else rm -f "$(DEPDIR)/sector.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/sector.c' object='sector.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sector.obj `if test -f 'drivers/cdrom/sector.c'; then $(CYGPATH_W) 'drivers/cdrom/sector.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/sector.c'; fi`
-
-edc_ecc.o: drivers/cdrom/edc_ecc.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT edc_ecc.o -MD -MP -MF "$(DEPDIR)/edc_ecc.Tpo" -c -o edc_ecc.o `test -f 'drivers/cdrom/edc_ecc.c' || echo '$(srcdir)/'`drivers/cdrom/edc_ecc.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/edc_ecc.Tpo" "$(DEPDIR)/edc_ecc.Po"; else rm -f "$(DEPDIR)/edc_ecc.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/edc_ecc.c' object='edc_ecc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o edc_ecc.o `test -f 'drivers/cdrom/edc_ecc.c' || echo '$(srcdir)/'`drivers/cdrom/edc_ecc.c
-
-edc_ecc.obj: drivers/cdrom/edc_ecc.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT edc_ecc.obj -MD -MP -MF "$(DEPDIR)/edc_ecc.Tpo" -c -o edc_ecc.obj `if test -f 'drivers/cdrom/edc_ecc.c'; then $(CYGPATH_W) 'drivers/cdrom/edc_ecc.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/edc_ecc.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/edc_ecc.Tpo" "$(DEPDIR)/edc_ecc.Po"; else rm -f "$(DEPDIR)/edc_ecc.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/edc_ecc.c' object='edc_ecc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o edc_ecc.obj `if test -f 'drivers/cdrom/edc_ecc.c'; then $(CYGPATH_W) 'drivers/cdrom/edc_ecc.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/edc_ecc.c'; fi`
-
-drive.o: drivers/cdrom/drive.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT drive.o -MD -MP -MF "$(DEPDIR)/drive.Tpo" -c -o drive.o `test -f 'drivers/cdrom/drive.c' || echo '$(srcdir)/'`drivers/cdrom/drive.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/drive.Tpo" "$(DEPDIR)/drive.Po"; else rm -f "$(DEPDIR)/drive.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/drive.c' object='drive.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drive.o `test -f 'drivers/cdrom/drive.c' || echo '$(srcdir)/'`drivers/cdrom/drive.c
-
-drive.obj: drivers/cdrom/drive.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT drive.obj -MD -MP -MF "$(DEPDIR)/drive.Tpo" -c -o drive.obj `if test -f 'drivers/cdrom/drive.c'; then $(CYGPATH_W) 'drivers/cdrom/drive.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/drive.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/drive.Tpo" "$(DEPDIR)/drive.Po"; else rm -f "$(DEPDIR)/drive.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/drive.c' object='drive.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drive.obj `if test -f 'drivers/cdrom/drive.c'; then $(CYGPATH_W) 'drivers/cdrom/drive.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/drive.c'; fi`
-
-cd_nrg.o: drivers/cdrom/cd_nrg.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_nrg.o -MD -MP -MF "$(DEPDIR)/cd_nrg.Tpo" -c -o cd_nrg.o `test -f 'drivers/cdrom/cd_nrg.c' || echo '$(srcdir)/'`drivers/cdrom/cd_nrg.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_nrg.Tpo" "$(DEPDIR)/cd_nrg.Po"; else rm -f "$(DEPDIR)/cd_nrg.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_nrg.c' object='cd_nrg.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_nrg.o `test -f 'drivers/cdrom/cd_nrg.c' || echo '$(srcdir)/'`drivers/cdrom/cd_nrg.c
-
-cd_nrg.obj: drivers/cdrom/cd_nrg.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_nrg.obj -MD -MP -MF "$(DEPDIR)/cd_nrg.Tpo" -c -o cd_nrg.obj `if test -f 'drivers/cdrom/cd_nrg.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_nrg.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_nrg.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_nrg.Tpo" "$(DEPDIR)/cd_nrg.Po"; else rm -f "$(DEPDIR)/cd_nrg.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_nrg.c' object='cd_nrg.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_nrg.obj `if test -f 'drivers/cdrom/cd_nrg.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_nrg.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_nrg.c'; fi`
-
-cd_cdi.o: drivers/cdrom/cd_cdi.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_cdi.o -MD -MP -MF "$(DEPDIR)/cd_cdi.Tpo" -c -o cd_cdi.o `test -f 'drivers/cdrom/cd_cdi.c' || echo '$(srcdir)/'`drivers/cdrom/cd_cdi.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_cdi.Tpo" "$(DEPDIR)/cd_cdi.Po"; else rm -f "$(DEPDIR)/cd_cdi.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_cdi.c' object='cd_cdi.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_cdi.o `test -f 'drivers/cdrom/cd_cdi.c' || echo '$(srcdir)/'`drivers/cdrom/cd_cdi.c
-
-cd_cdi.obj: drivers/cdrom/cd_cdi.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_cdi.obj -MD -MP -MF "$(DEPDIR)/cd_cdi.Tpo" -c -o cd_cdi.obj `if test -f 'drivers/cdrom/cd_cdi.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_cdi.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_cdi.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_cdi.Tpo" "$(DEPDIR)/cd_cdi.Po"; else rm -f "$(DEPDIR)/cd_cdi.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_cdi.c' object='cd_cdi.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_cdi.obj `if test -f 'drivers/cdrom/cd_cdi.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_cdi.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_cdi.c'; fi`
-
-cd_gdi.o: drivers/cdrom/cd_gdi.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_gdi.o -MD -MP -MF "$(DEPDIR)/cd_gdi.Tpo" -c -o cd_gdi.o `test -f 'drivers/cdrom/cd_gdi.c' || echo '$(srcdir)/'`drivers/cdrom/cd_gdi.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_gdi.Tpo" "$(DEPDIR)/cd_gdi.Po"; else rm -f "$(DEPDIR)/cd_gdi.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_gdi.c' object='cd_gdi.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_gdi.o `test -f 'drivers/cdrom/cd_gdi.c' || echo '$(srcdir)/'`drivers/cdrom/cd_gdi.c
-
-cd_gdi.obj: drivers/cdrom/cd_gdi.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cd_gdi.obj -MD -MP -MF "$(DEPDIR)/cd_gdi.Tpo" -c -o cd_gdi.obj `if test -f 'drivers/cdrom/cd_gdi.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_gdi.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_gdi.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/cd_gdi.Tpo" "$(DEPDIR)/cd_gdi.Po"; else rm -f "$(DEPDIR)/cd_gdi.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='drivers/cdrom/cd_gdi.c' object='cd_gdi.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cd_gdi.obj `if test -f 'drivers/cdrom/cd_gdi.c'; then $(CYGPATH_W) 'drivers/cdrom/cd_gdi.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/cd_gdi.c'; fi`
-
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > test_testsh4x86-testsh4x86.o: test/testsh4x86.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_testsh4x86_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_testsh4x86-testsh4x86.o -MD -MP -MF "$(DEPDIR)/test_testsh4x86-testsh4x86.Tpo" -c -o test_testsh4x86-testsh4x86.o `test -f 'test/testsh4x86.c' || echo '$(srcdir)/'`test/testsh4x86.c; \
 @am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/test_testsh4x86-testsh4x86.Tpo" "$(DEPDIR)/test_testsh4x86-testsh4x86.Po"; else rm -f "$(DEPDIR)/test_testsh4x86-testsh4x86.Tpo"; exit 1; fi
</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>bios.c</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/bios.c
+++ lxdream/src/bios.c
@@ -24,7 +24,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "bootstrap.h"
 #include "sh4/sh4.h"
 #include "drivers/cdrom/cdrom.h"
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-#include "drivers/cdrom/iso<span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >read</span>.h"
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include "drivers/cdrom/iso<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >fs</span>.h"
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "gdrom/gdrom.h"
 
 gboolean bios_boot_gdrom_disc( void );
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -387,6 +387,56 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 #define MIN_ISO_SECTORS 32
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static gboolean bios_load_ipl( cdrom_disc_t disc, cdrom_track_t track, const char *program_name,
+                               unsigned char *buffer, gboolean unscramble )
+{
+    gboolean rv = TRUE;
+
+    IsoImageFilesystem *iso = iso_filesystem_new_from_track( disc, track, NULL );
+    if( iso == NULL ) {
+        ERROR( "Disc is not bootable (invalid ISO9660 filesystem)" );
+        return FALSE;
+    }
+    IsoFileSource *file = NULL;
+    int status = iso->get_by_path(iso, program_name, &file );
+    if( status != 1 ) {
+        ERROR( "Disc is not bootable (initial program '%s' not found)", program_name );
+        iso_filesystem_unref(iso);
+        return FALSE;
+    }
+
+    struct stat st;
+    if( iso_file_source_stat(file, &st) == 1 ) {
+        if( st.st_size > (0x8D000000 - BINARY_LOAD_ADDR) ) {
+            ERROR( "Disc is not bootable (Initial program is too large to fit into memory)" );
+            rv = FALSE;
+        } else if( iso_file_source_open(file) == 1 ) {
+            size_t len;
+            if( unscramble ) {
+                char *tmp = g_malloc(st.st_size);
+                len = iso_file_source_read(file, tmp, st.st_size);
+                bootprogram_unscramble(buffer, tmp, st.st_size);
+                g_free(tmp);
+            } else {
+                len = iso_file_source_read(file, buffer, st.st_size);
+            }
+
+            if( len != st.st_size ) {
+                ERROR( "Disc is not bootable (Unable to read initial program '%s')", program_name );
+                rv = FALSE;
+            }
+            iso_file_source_close(file);
+        }
+    } else {
+        ERROR( "Disc is not bootable (Unable to get size of initial program '%s')", program_name );
+        rv = FALSE;
+    }
+
+    iso_file_source_unref(file);
+    iso_filesystem_unref(iso);
+    return rv;
+}
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > gboolean bios_boot_gdrom_disc( void )
 {
     cdrom_disc_t disc = gdrom_get_current_disc();
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -427,56 +477,19 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     }
 
     /* Get the initial program from the bootstrap (usually 1ST_READ.BIN) */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    char program_name[17];
-    memcpy(program_name, metadata->boot_file, 16);
-    program_name[16] = '\0';
-    for( int i=15; i >= 0 && program_name[i] == ' '; i-- ) {
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    char program_name[18] = "/";
+    memcpy(program_name+1, metadata->boot_file, 16);
+    program_name[17] = '\0';
+    for( int i=16; i >= 0 && program_name[i] == ' '; i-- ) {
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         program_name[i] = '\0';
     }
 
     /* Bootstrap is good. Now find the program in the actual filesystem... */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    isofs_reader_t iso = isofs_reader_new_from_track( disc, track, NULL );
-    if( iso == NULL ) {
-        ERROR( "Disc is not bootable" );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    unsigned char *program = mem_get_region(BINARY_LOAD_ADDR);
+    gboolean isGDROM = (disc->disc_type == CDROM_DISC_GDROM );
+    if( !bios_load_ipl( disc, track, program_name, program, !isGDROM ) )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         return FALSE;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    }
-    isofs_reader_dirent_t ent = isofs_reader_get_file( iso, program_name );
-    if( ent == NULL ) {
-        ERROR( "Disc is not bootable (initial program '%s' not found)", program_name );
-        isofs_reader_destroy(iso);
-        return FALSE;
-    }
-
-    if( ent->size > (0x8D000000 - BINARY_LOAD_ADDR) ) {
-        /* Bootstrap isn't going to fit in memory. Complain and abort */
-        ERROR( "Disc is not bootable (initial program too large)" );
-        isofs_reader_destroy(iso);
-        return FALSE;
-    }
-    unsigned char *program = mem_get_region(BINARY_LOAD_ADDR);
-    int program_sectors = (ent->size+2047)/2048;
-    if( disc->disc_type == CDROM_DISC_GDROM ) {
-        /* Load the binary directly into RAM */
-        if( isofs_reader_read_file( iso, ent, 0, ent->size, program ) !=
-                CDROM_ERROR_OK ) {
-            ERROR( "Disc is not bootable (failed to read initial program)\n" );
-            isofs_reader_destroy(iso);
-            return FALSE;
-        }
-        asic_enable_ide_interface(TRUE);
-    } else {
-        /* Load the binary into a temp buffer */
-        unsigned char tmp[program_sectors*2048];
-        if( isofs_reader_read_file( iso, ent, 0, ent->size, tmp ) !=
-                CDROM_ERROR_OK ) {
-            ERROR( "Disc is not bootable (failed to read initial program)\n" );
-            isofs_reader_destroy(iso);
-            return FALSE;
-        }
-        bootprogram_unscramble(program, tmp, ent->size);
-        asic_enable_ide_interface(FALSE);
-    }
-    isofs_reader_destroy(iso);
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    asic_enable_ide_interface(isGDROM);
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     dreamcast_program_loaded( "", BOOTSTRAP_ENTRY_ADDR );
     return TRUE;
 }
</pre></div>
<hr /><a name="file6" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span id="removed" class="pathname" style="font-family:monospace; float:right; background-color:#ffdddd;" >lxdream/src/drivers/cdrom</span><br />
<div id="removed" class="fileheader" style="margin-bottom:.5em; background-color:#ffdddd;" ><big><b>iso_impl.h</b></big> <small id="info" style="color: #888888;" >removed after 1879fd49ccf6</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/iso_impl.h
+++ lxdream/src/drivers/cdrom/iso_impl.h
@@ -1,128 +0,0 @@
</small></pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-/**
- * $Id$
- *
- * ISO9660 filesystem support
- *
- * Copyright (c) 2009 Nathan Keynes.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#define ISO_SUPERBLOCK_OFFSET 16
-#define ISO_BOOT_DESCRIPTOR 0
-#define ISO_PRIMARY_DESCRIPTOR 1
-#define ISO_SECONDARY_DESCRIPTOR 2
-#define ISO_PARTITION_DESCRIPTOR 3
-#define ISO_TERMINAL_DESCRIPTOR 0xFF
-
-typedef struct iso_timestamp_full { /* 17 bytes */
-    char year[4];
-    char month[2];
-    char day[2];
-    char hour[2];
-    char minute[2];
-    char second[2];
-    char hundredths[2];
-    int8_t utc_offset; /* 15 min intervals from -48 to +52 7.1.2 */
-} *iso_timestamp_full_t;
-
-typedef struct iso_timestamp { /* 7 bytes */
-    uint8_t year; /* Since 1900 */
-    uint8_t month; /* 1 .. 12 */
-    uint8_t day; /* 1 ..  31 */
-    uint8_t hour; /* 0 .. 23 */
-    uint8_t minute; /* 0 .. 59 */
-    uint8_t second; /* 0 .. 59 */
-    uint8_t utc_offset; /* 15 min intervals from -48 to +52 7.1.2 */
-} *iso_timestamp_t;
-
-#define ISO_FILE_EXISTS   0x01
-#define ISO_FILE_DIR      0x02
-#define ISO_FILE_ASSOC    0x04 /* Associated file */
-#define ISO_FILE_RECORD   0x08 /* Structure specified by XA record */
-#define ISO_FILE_PROTECT  0x10 /* Permissions specified */
-#define ISO_FILE_MULTIEXT 0x80 /* Multiple extents */
-
-typedef struct iso_dirent { /* 34+ bytes 9.1 */
-    uint8_t record_len;
-    uint8_t xa_record_len;
-    uint32_t file_lba_le, file_lba_be;
-    uint32_t file_size_le, file_size_be;
-    struct iso_timestamp timestamp;
-    uint8_t flags;
-    uint8_t unit_size;
-    uint8_t gap_size;
-    uint16_t volume_seq_le, volume_seq_be;
-    uint8_t file_id_len;
-    char file_id[1];
-} __attribute__((packed)) *iso_dirent_t;
-
-typedef struct iso_pathtabrec { /* 8+ bytes 9.4 */
-    uint8_t record_len;
-    uint8_t xa_record_len;
-    uint32_t file_lba;
-    uint16_t parent_dir_no;
-    char file_id[];
-} *iso_pathtabrec_t;
-
-typedef struct iso_xattrrec {
-    uint16_t uid_le, uid_be;
-    uint16_t gid_le, gid_be;
-    uint16_t permissions;
-    struct iso_timestamp_full create_time;
-    struct iso_timestamp_full modify_time;
-    struct iso_timestamp_full expiry_time;
-    struct iso_timestamp_full effective_time;
-    uint8_t record_format;
-    uint8_t record_attrs;
-    uint16_t record_len_le, record_len_be;
-    char system_id[32];
-    char system_use[64];
-    uint8_t record_version; /* Should be 1 */
-    uint8_t escape_len;
-    char reserved[64];
-    uint16_t app_use_len_le, app_use_len_be;
-    char app_use[];
-} *iso_xattrrec_t;
-
-/** Primary Volume Descriptor */
-typedef struct iso_pvd {
-    uint8_t desc_type;
-    char tag[5];
-    uint8_t desc_version;
-    char pad0;
-    char system_id[32];
-    char volume_id[32];
-    char pad1[8];
-    uint32_t volume_size_le, volume_size_be;
-    char pad2[32];
-    uint16_t volume_sets_le, volume_sets_be;
-    uint16_t volume_seq_le, volume_seq_be;
-    uint16_t block_size_le, block_size_be;
-    uint32_t pathtab_size_le, pathtab_size_be;
-    uint32_t pathtab_offset_le, pathtab2_offset_le;
-    uint32_t pathtab_offset_be, pathtab2_offset_be;
-    struct iso_dirent root_dirent;
-    char volume_set_id[128];
-    char publisher_id[128];
-    char preparer_id[128];
-    char app_id[128];
-    char copyright_file_id[37];
-    char abstract_file_id[37];
-    char biblio_file_id[37];
-    struct iso_timestamp_full create_time;
-    struct iso_timestamp_full modify_time;
-    struct iso_timestamp_full expiry_time;
-    struct iso_timestamp_full effective_time;
-    uint8_t fs_version; /* must be 1 */
-    char pad3[1166];
-} *iso_pvd_t;
-
</pre></div>
<hr /><a name="file7" /><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>isofs.c</b></big> <small id="info" style="color: #888888;" >added at 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/isofs.c
+++ lxdream/src/drivers/cdrom/isofs.c
@@ -0,0 +1,188 @@
</small></pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/**
+ * $Id$
+ *
+ * libisofs adapter
+ *
+ * Copyright (c) 2010 Nathan Keynes.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <assert.h>
+#include <glib/gmem.h>
+
+#define LIBISOFS_WITHOUT_LIBBURN 1
+
+#include "drivers/cdrom/cdrom.h"
+#include "drivers/cdrom/isofs.h"
+
+static int isofs_dummy_fn(IsoDataSource *src)
+{
+    return 1;
+}
+
+static int isofs_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
+{
+    sector_source_t source = (sector_source_t)src->data;
+    cdrom_error_t err = sector_source_read_sectors(source, lba, 1,
+            CDROM_READ_MODE2_FORM1|CDROM_READ_DATA, buffer, NULL );
+    if( err != CDROM_ERROR_OK ) {
+        return ISO_DATA_SOURCE_FAILURE;
+    }
+    return 1;
+}
+
+static void isofs_release(IsoDataSource *src)
+{
+    sector_source_unref((sector_source_t)src->data);
+}
+
+static IsoDataSource *iso_data_source_new( sector_source_t source )
+{
+    IsoDataSource *src = g_malloc0(sizeof(IsoDataSource));
+    src->refcount = 1;
+    src->open = isofs_dummy_fn;
+    src->close = isofs_dummy_fn;
+    src->read_block = isofs_read_block;
+    src->free_data = isofs_release;
+    src->data = source;
+    sector_source_ref(source);
+    return src;
+}
+
+/**
+ * Construct an isofs image from an existing sector source.
+ */
+IsoImage *iso_image_new_from_source( sector_source_t source, cdrom_lba_t start, ERROR *err )
+{
+    IsoImage *iso = NULL;
+    IsoReadOpts *opts;
+    IsoDataSource *src;
+
+    int status = iso_image_new(NULL, &iso);
+    if( status != 1 )
+        return NULL;
+
+    status = iso_read_opts_new(&opts,0);
+    if( status != 1 ) {
+        iso_image_unref( iso );
+        return NULL;
+    }
+
+    iso_read_opts_set_start_block(opts, start);
+    src = iso_data_source_new(source);
+    status = iso_image_import(iso, src, opts, NULL);
+    iso_data_source_unref(src);
+    iso_read_opts_free(opts);
+    if( status != 1 ) {
+        iso_image_unref(iso);
+        return NULL;
+    }
+    return iso;
+}
+
+IsoImage *iso_image_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err )
+{
+    return iso_image_new_from_source( &disc->source, start_sector, err );
+}
+
+IsoImage *iso_image_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )
+{
+    return iso_image_new_from_source( &disc->source, track->lba, err );
+}
+
+
+IsoImageFilesystem *iso_filesystem_new_from_source( sector_source_t source, cdrom_lba_t start, ERROR *err )
+{
+    IsoImageFilesystem *iso = NULL;
+    IsoReadOpts *opts;
+    IsoDataSource *src;
+
+    int status = iso_read_opts_new(&opts,0);
+    if( status != 1 ) {
+        return NULL;
+    }
+
+    iso_read_opts_set_start_block(opts, start);
+    src = iso_data_source_new(source);
+    status = iso_image_filesystem_new(src, opts, 0x1FFFFF, &iso);
+    iso_data_source_unref(src);
+    iso_read_opts_free(opts);
+    if( status != 1 ) {
+        return NULL;
+    }
+    return iso;
+
+}
+
+IsoImageFilesystem *iso_filesystem_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err )
+{
+    return iso_filesystem_new_from_source( &disc->source, start_sector, err );
+}
+
+IsoImageFilesystem *iso_filesystem_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )
+{
+    return iso_filesystem_new_from_source( &disc->source, track->lba, err );
+}
+
+
+/**
+ * Construct a sector source from a given IsoImage.
+ */
+sector_source_t iso_sector_source_new( IsoImage *image, sector_mode_t mode, cdrom_lba_t start_sector,
+                                       const char *bootstrap, ERROR *err )
+{
+    assert( mode == SECTOR_MODE1 || mode == SECTOR_MODE2_FORM1 );
+
+    IsoWriteOpts *opts;
+    struct burn_source *burn;
+
+    int status = iso_write_opts_new(&opts, 0);
+    if( status != 1 )
+        return NULL;
+    iso_write_opts_set_appendable(opts,0);
+    iso_write_opts_set_ms_block(opts, start_sector);
+    iso_write_opts_set_system_area(opts, (char *)bootstrap, 0, 0);
+
+    status = iso_image_create_burn_source(image, opts, &burn);
+    iso_write_opts_free(opts);
+    if( status != 1 ) {
+        return NULL;
+    }
+
+    off_t size = burn->get_size(burn);
+    sector_source_t source = tmpfile_sector_source_new(mode);
+    if( source == NULL ) {
+        burn->free_data(burn);
+        free(burn);
+        return NULL;
+    }
+
+    char buf[2048];
+    cdrom_count_t expect = size/2048;
+    cdrom_count_t count = 0;
+    for( cdrom_count_t count = 0; count < expect; count++ ) {
+        status = burn->read(burn, buf, 2048);
+        if( status == 0 ) {
+            /* EOF */
+            break;
+        } else if( status != 2048 ) {
+            /* Error */
+            sector_source_unref(source);
+            source = NULL;
+            break;
+        }
+    }
+    burn->free_data(burn);
+    free(burn);
+    return source;
+}
+
</pre></div>
<hr /><a name="file8" /><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>isofs.h</b></big> <small id="info" style="color: #888888;" >added at 7b279d10f46f</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
@@ -0,0 +1,58 @@
</small></pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/**
+ * $Id$
+ *
+ * libisofs adapter
+ *
+ * Copyright (c) 2010 Nathan Keynes.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef cdrom_isofs_H
+#define cdrom_isofs_H 1
+
+#include <libisofs/libisofs.h>
+#include "drivers/cdrom/sector.h"
+
+/**
+ * Construct an IsoFilesystem from an existing sector source
+ */
+IsoImageFilesystem *iso_filesystem_new_from_source( sector_source_t track, cdrom_lba_t start, ERROR *err );
+IsoImageFilesystem *iso_filesystem_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start, ERROR *err );
+IsoImageFilesystem *iso_filesystem_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );
+
+
+/**
+ * Convenience function to read an entire IsoFileSource
+ */
+int iso_source_file_read_all( IsoFileSource *file, unsigned char *buf, size_t max_size );
+
+/**
+ * Construct an IsoImage image from an existing sector source, for use in
+ * creating a modified image
+ */
+IsoImage *iso_image_new_from_source( sector_source_t track, cdrom_lba_t start, ERROR *err );
+
+/**
+ * Construct an IsoImage from a cdrom disc and sector position.
+ * @return a new isofs_reader, or NULL on an error.
+ */
+IsoImage *iso_image_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err );
+
+IsoImage *iso_image_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );
+
+/**
+ * Construct a sector source from a given IsoImage.
+ */
+sector_source_t iso_sector_source_new( IsoImage *image, sector_mode_t mode, cdrom_lba_t start_sector,
+                                       const char *bootstrap, ERROR *err );
+
+#endif /* !cdrom_isofs_H */
</pre></div>
<hr /><a name="file9" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span id="removed" class="pathname" style="font-family:monospace; float:right; background-color:#ffdddd;" >lxdream/src/drivers/cdrom</span><br />
<div id="removed" class="fileheader" style="margin-bottom:.5em; background-color:#ffdddd;" ><big><b>isoread.c</b></big> <small id="info" style="color: #888888;" >removed after 1879fd49ccf6</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/isoread.c
+++ lxdream/src/drivers/cdrom/isoread.c
@@ -1,392 +0,0 @@
</small></pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-/**
- * $Id$
- *
- * ISO9660 filesystem reading support
- *
- * Copyright (c) 2010 Nathan Keynes.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#include "drivers/cdrom/cdrom.h"
-#include "drivers/cdrom/isoread.h"
-#include "drivers/cdrom/iso_impl.h"
-
-#include <string.h>
-#include <errno.h>
-
-static char isofs_magic[5] = { 'C', 'D', '0', '0', '1' };
-
-#define ISO_DIR_TAG 0x52494449
-
-struct isofs_reader_dir {
-    uint32_t tag;
-    isofs_reader_dir_t parent;
-    size_t num_entries;
-    struct isofs_reader_dirent entries[];
-};
-
-struct isofs_reader {
-    /**
-     * Base sector source to read the filesystem from (must support Mode 1 reads)
-     */
-    sector_source_t source;
-
-    /**
-     * Offset of the source relative to the start of the (notional) disc -
-     * this is subtracted from all source lba addresses.
-     */
-    cdrom_lba_t source_offset;
-
-    /**
-     * Start of the ISO9660 filesystem relative to the start of the disc.
-     * (The actual superblock is at fs_start+16)
-     */
-    cdrom_lba_t fs_start;
-
-    /**
-     * If TRUE, read the little-endian side of the FS, otherwise the big-endian
-     * side. (They should normally give the same result, but in case it matters...)
-     */
-    gboolean little_endian;
-
-    /**
-     * The volume sequence number, for multi-volume sets.
-     */
-    uint16_t volume_seq_no;
-
-    char volume_label[33];
-
-    /**
-     * Filesystem root directory
-     */
-    isofs_reader_dir_t root_dir;
-};
-
-/**
- * Read a 16-bit dual-endian field using the defined endianness of the reader
- */
-#define ISO_GET_DE16( iso, field ) \
-    ( ((iso)->little_endian) ? GINT16_FROM_LE(field) : GINT16_FROM_BE(*((&field)+1)) )
-
-/**
- * Read a 32-bit dual-endian field using the defined endianness of the reader
- */
-#define ISO_GET_DE32( iso, field ) \
-    ( ((iso)->little_endian) ? GINT32_FROM_LE(field) : GINT32_FROM_BE(*((&field)+1)) )
-
-
-static void isofs_reader_convert_dirent( isofs_reader_t iso, isofs_reader_dirent_t dest, iso_dirent_t src,
-                                         char **strp )
-{
-    dest->start_lba = ISO_GET_DE32(iso, src->file_lba_le);
-    dest->size = ISO_GET_DE32(iso, src->file_size_le);
-    dest->is_dir = (src->flags & ISO_FILE_DIR) ? TRUE : FALSE;
-    dest->interleave_gap = src->gap_size;
-    dest->interleave_size = src->unit_size;
-    dest->name = *strp;
-    memcpy( *strp, src->file_id, src->file_id_len );
-    (*strp)[src->file_id_len] = '\0';
-    *strp += src->file_id_len + 1;
-}
-
-/**
- * Read a directory from the disc into memory.
- */
-isofs_reader_dir_t isofs_reader_read_dir( isofs_reader_t iso, cdrom_lba_t lba, size_t size )
-{
-    cdrom_count_t count = (size+2047)/2048;
-
-    char buf[count*2048];
-
-    if( isofs_reader_read_sectors( iso, lba, count, buf ) != CDROM_ERROR_OK )
-        return NULL;
-
-    size_t len = 0;
-    unsigned num_entries = 0, i=0, offset=0;
-    /* Compute number of entries and total string length */
-    while( offset < size ) {
-        struct iso_dirent *p = (struct iso_dirent *)&buf[offset];
-        offset += p->record_len;
-        if( offset > size || p->record_len < sizeof(struct iso_dirent) )
-            break; // Bad record length
-        if( p->file_id_len + sizeof(struct iso_dirent)-1 > p->record_len )
-            break; // Bad fileid length
-        if( p->file_id_len == 1 && (p->file_id[0] == 0 || p->file_id[0] == 1 ) )
-            continue; /* self and parent-dir references */
-        num_entries++;
-        len += p->file_id_len + 1;
-    }
-
-    size_t table_len = num_entries * sizeof(struct isofs_reader_dirent);
-    isofs_reader_dir_t dir = g_malloc0( sizeof(struct isofs_reader_dir) + table_len + len );
-    dir->tag = ISO_DIR_TAG;
-    dir->num_entries = num_entries;
-
-    char *strp = (char *)&dir->entries[num_entries];
-    offset = 0;
-    for( i=0; i < num_entries; i++ ) {
-        struct iso_dirent *p;
-        do {
-            p = (struct iso_dirent *)&buf[offset];
-            offset += p->record_len;
-            /* Skip over self and parent-dir references */
-        } while( p->file_id_len == 1 && (p->file_id[0] == 0 || p->file_id[0] == 1 ) );
-
-        isofs_reader_convert_dirent( iso, &dir->entries[i], p, &strp );
-
-    }
-    return dir;
-}
-
-static gboolean isofs_reader_dirent_match_exact( const char *file, const char *find )
-{
-    return strcasecmp( file, find ) == 0;
-}
-
-static gboolean isofs_reader_dirent_match_unversioned( const char *file, const char *find )
-{
-    char *semi = strchr(file, ';');
-    if( semi == NULL ) {
-        /* Unversioned ISO file */
-        return strcasecmp( file, find ) == 0;
-    } else {
-        int len = semi - file;
-        return strncasecmp( file, find, len ) == 0 && strlen(find) == len;
-    }
-}
-
-/**
- * Search a directory for a given filename. If found, return the corresponding
- * dirent structure, otherwise NULL. Comparison is case-insensitive, and returns
- * the most recent (highest numbered) version of a file in case of multiple
- * versions unless the requested component is also explicitly versioned.
- *
- * For now just do a linear search, although we could do a binary search given
- * that the directory should be sorted.
- */
-static isofs_reader_dirent_t isofs_reader_get_file_component( isofs_reader_dir_t dir, const char *component )
-{
-
-    if( strchr( component, ';' ) != NULL ) {
-        for( unsigned i=0; i<dir->num_entries; i++ ) {
-            if( isofs_reader_dirent_match_exact(dir->entries[i].name,component) ) {
-                return &dir->entries[i];
-            }
-        }
-    } else {
-        for( unsigned i=0; i<dir->num_entries; i++ ) {
-            if( isofs_reader_dirent_match_unversioned(dir->entries[i].name,component) ) {
-                return &dir->entries[i];
-            }
-        }
-    }
-    return NULL;
-}
-
-isofs_reader_dirent_t isofs_reader_get_file( isofs_reader_t iso, const char *pathname )
-{
-    int pathlen = strlen(pathname);
-    char tmp[pathlen+1];
-    char *p = tmp;
-    isofs_reader_dir_t dir = iso->root_dir;
-
-    memcpy( tmp, pathname, pathlen+1 );
-    char *q = strchr(p, '/');
-    while( q != NULL ) {
-        *q = '\0';
-        isofs_reader_dirent_t ent = isofs_reader_get_file_component( dir, p );
-        if( ent == NULL || !ent->is_dir ) {
-            return NULL;
-        }
-        if( ent->subdir == NULL ) {
-            ent->subdir = dir = isofs_reader_read_dir( iso, ent->start_lba, ent->size );
-            if( dir == NULL ) {
-                return NULL;
-            }
-        }
-
-        p = q+1;
-        q = strchr(p, '/');
-
-    }
-    return isofs_reader_get_file_component( dir, p );
-}
-
-cdrom_error_t isofs_reader_read_file( isofs_reader_t iso, isofs_reader_dirent_t file,
-                                      size_t offset, size_t byte_count, unsigned char *buf )
-{
-    char tmp[2048];
-
-    if( offset + byte_count > file->size )
-        return CDROM_ERROR_BADREAD;
-
-    if( file->interleave_gap == 0 ) {
-        cdrom_lba_t lba = file->start_lba + (offset>>11);
-        lba += ((file->xa_size+2047)>>11); /* Skip XA record if present */
-
-        if( (offset & 2047) != 0 ) {
-            /* Read an unaligned start block */
-            cdrom_error_t status = isofs_reader_read_sectors( iso, lba, 1, tmp );
-            if( status != CDROM_ERROR_OK )
-                return status;
-            unsigned align = offset & 2047;
-            size_t length = 2048 - align;
-            if( length >= byte_count ) {
-                memcpy( buf, &tmp[align], byte_count );
-                return CDROM_ERROR_OK;
-            } else {
-                memcpy( buf, &tmp[align], length );
-                byte_count -= length;
-                buf += length;
-                lba++;
-            }
-        }
-        /* Read the bulk of the data */
-        cdrom_count_t sector_count = byte_count >> 11;
-        if( sector_count > 0 ) {
-            cdrom_error_t status = isofs_reader_read_sectors( iso, lba, sector_count, buf );
-            if( status != CDROM_ERROR_OK )
-                return status;
-            buf += (sector_count << 11);
-            lba += sector_count;
-        }
-        /* Finally read a partial final block */
-        if( (byte_count & 2047) != 0 ) {
-            cdrom_error_t status = isofs_reader_read_sectors( iso, lba, 1, tmp );
-            if( status != CDROM_ERROR_OK )
-                return status;
-            memcpy( buf, tmp, byte_count & 2047 );
-        }
-        return CDROM_ERROR_OK;
-    } else {
-        // ERROR("Interleaved files not supported");
-        return CDROM_ERROR_BADREAD;
-    }
-}
-
-void isofs_reader_destroy_dir( isofs_reader_dir_t dir )
-{
-    dir->tag = 0;
-    for( unsigned i=0; i<dir->num_entries; i++ ) {
-        if( dir->entries[i].subdir != NULL ) {
-            isofs_reader_dir_t subdir = dir->entries[i].subdir;
-            dir->entries[i].subdir = NULL;
-            isofs_reader_destroy_dir(dir);
-        }
-    }
-    g_free(dir);
-}
-
-cdrom_error_t isofs_reader_read_sectors( isofs_reader_t iso, cdrom_lba_t lba, cdrom_count_t count,
-                                         unsigned char *buf )
-{
-    if( lba < iso->source_offset )
-        return CDROM_ERROR_BADREAD;
-    return sector_source_read_sectors( iso->source, lba - iso->source_offset, count,
-           CDROM_READ_MODE2_FORM1|CDROM_READ_DATA, buf, NULL );
-}
-
-
-isofs_reader_t isofs_reader_new( sector_source_t source, cdrom_lba_t offset, cdrom_lba_t start, ERROR *err )
-{
-    char buf[2048];
-    iso_pvd_t pvd = (iso_pvd_t)&buf;
-    unsigned i = 0;
-
-    isofs_reader_t iso = g_malloc0( sizeof(struct isofs_reader) );
-    if( iso == NULL ) {
-        SET_ERROR( err, ENOMEM, "Unable to allocate memory" );
-        return NULL;
-    }
-    iso->source = source;
-    iso->source_offset = offset;
-    iso->fs_start = start;
-    iso->little_endian = TRUE;
-
-    do {
-        /* Find the primary volume descriptor */
-        cdrom_error_t status = isofs_reader_read_sectors( iso, iso->fs_start + ISO_SUPERBLOCK_OFFSET + i, 1, buf );
-        if( status != CDROM_ERROR_OK ) {
-            SET_ERROR( err, EBADF, "Unable to read superblock from ISO9660 filesystem" );
-            g_free(iso);
-            return NULL;
-        }
-        if( memcmp(pvd->tag, isofs_magic, 5) != 0 || /* Not an ISO volume descriptor */
-                pvd->desc_type == ISO_TERMINAL_DESCRIPTOR ) { /* Reached the end of the descriptor list */
-            SET_ERROR( err, EINVAL, "ISO9660 filesystem not found" );
-            g_free(iso);
-            return NULL;
-        }
-        i++;
-    } while( pvd->desc_type != ISO_PRIMARY_DESCRIPTOR );
-
-    if( pvd->desc_version != 1 ) {
-        SET_ERROR( err, EINVAL, "Incompatible ISO9660 filesystem" );
-        g_free(iso);
-        return NULL;
-    }
-
-    iso->volume_seq_no = ISO_GET_DE16(iso, pvd->volume_seq_le);
-    memcpy( iso->volume_label, pvd->volume_id, 32 );
-    for( i=32; i>0 && iso->volume_label[i-1] == ' '; i-- );
-    iso->volume_label[i] = '\0';
-
-    iso->root_dir = isofs_reader_read_dir( iso,
-            ISO_GET_DE32(iso, pvd->root_dirent.file_lba_le),
-            ISO_GET_DE32(iso, pvd->root_dirent.file_size_le) );
-    if( iso->root_dir == NULL ) {
-        SET_ERROR( err, EINVAL, "Unable to read root directory from ISO9660 filesystem" );
-        g_free(iso);
-        return NULL;
-    }
-
-    sector_source_ref( source );
-    return iso;
-}
-
-isofs_reader_t isofs_reader_new_from_disc( cdrom_disc_t disc, cdrom_lba_t lba, ERROR *err )
-{
-    return isofs_reader_new( &disc->source, 0, lba, err );
-}
-
-isofs_reader_t isofs_reader_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )
-{
-    return isofs_reader_new( &disc->source, 0, track->lba, err );
-}
-
-isofs_reader_t isofs_reader_new_from_source( sector_source_t source, ERROR *err )
-{
-    return isofs_reader_new( source, 0, 0, err );
-}
-
-void isofs_reader_destroy( isofs_reader_t iso )
-{
-    isofs_reader_destroy_dir( iso->root_dir );
-    iso->root_dir = NULL;
-    sector_source_unref( iso->source );
-    iso->source = NULL;
-    g_free( iso );
-}
-
-isofs_reader_dir_t isofs_reader_get_root_dir( isofs_reader_t iso )
-{
-    return iso->root_dir;
-}
-
-void isofs_reader_print_dir( FILE *f, isofs_reader_dir_t dir )
-{
-    fprintf( f, "Total %d files\n", dir->num_entries );
-    for( unsigned i=0; i<dir->num_entries; i++ ) {
-        fprintf( f, "%7d %s\n", dir->entries[i].size, dir->entries[i].name );
-    }
-
-}
</pre></div>
<hr /><a name="file10" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span id="removed" class="pathname" style="font-family:monospace; float:right; background-color:#ffdddd;" >lxdream/src/drivers/cdrom</span><br />
<div id="removed" class="fileheader" style="margin-bottom:.5em; background-color:#ffdddd;" ><big><b>isoread.h</b></big> <small id="info" style="color: #888888;" >removed after 1879fd49ccf6</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/isoread.h
+++ lxdream/src/drivers/cdrom/isoread.h
@@ -1,95 +0,0 @@
</small></pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-/**
- * $Id$
- *
- * ISO9660 filesystem reading support
- *
- * Copyright (c) 2010 Nathan Keynes.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-
-#ifndef cdrom_isoread_H
-#define cdrom_isoread_H 1
-
-#include "drivers/cdrom/defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct isofs_reader_dir *isofs_reader_dir_t;
-
-typedef struct isofs_reader_dirent {
-    const char *name;
-    size_t size;
-    gboolean is_dir;
-
-    cdrom_lba_t start_lba;
-    size_t xa_size;
-    unsigned interleave_gap;
-    unsigned interleave_size;
-    isofs_reader_dir_t subdir;
-} *isofs_reader_dirent_t;
-
-/**
- * ISO9600 filesystem reader.
- */
-typedef struct isofs_reader *isofs_reader_t;
-
-/**
- * Construct an isofs reader from an existing sector source. On error, returns
- * NULL.
- */
-isofs_reader_t isofs_reader_new_from_source( sector_source_t track, ERROR *err );
-
-/**
- * Construct an isofs from a cdrom disc and sector position.
- * @return a new isofs_reader, or NULL on an error (and sets err).
- */
-isofs_reader_t isofs_reader_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err );
-
-isofs_reader_t isofs_reader_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );
-
-/**
- * Destroy an isofs reader.
- */
-void isofs_reader_destroy( isofs_reader_t reader );
-
-/**
- * Read 0 or more 2048-byte sectors from the filesystem.
- */
-cdrom_error_t isofs_reader_read_sectors( isofs_reader_t iso, cdrom_lba_t sector, cdrom_count_t count,
-                                         unsigned char *buf );
-
-
-/**
- * Search the filesystem for the specific fully-qualified file.
- * @return FALSE if the file could not be found, otherwise TRUE and the iterator
- * is updated to point to the requested file.
- */
-isofs_reader_dirent_t isofs_reader_get_file( isofs_reader_t iso, const char *filename );
-
-cdrom_error_t isofs_reader_read_file( isofs_reader_t iso, isofs_reader_dirent_t file,
-                                      size_t offset, size_t byte_count, unsigned char *buf );
-
-/**
- * Print an isofs directory to the given stream (mostly for debugging purposes)
- */
-void isofs_reader_print_dir( FILE *f, isofs_reader_dir_t dir );
-
-isofs_reader_dir_t isofs_reader_get_root_dir( isofs_reader_t iso );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !cdrom_isoread_H */
</pre></div>
<hr /><a name="file11" /><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>sector.c</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/sector.c
+++ lxdream/src/drivers/cdrom/sector.c
@@ -25,6 +25,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include <unistd.h>
 #include <fcntl.h>
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include "lxpaths.h"
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "drivers/cdrom/sector.h"
 #include "drivers/cdrom/cdrom.h"
 #include "drivers/cdrom/ecc.h"
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -534,6 +535,139 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     fref->closeOnDestroy = closeOnDestroy;
 }
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/********************** Temporary file implementation ************************/
+/**
+ * The tmpfile source behaves exactly like a regular file source, except that
+ * it creates a new temporary file, which is deleted on destruction or program
+ * exit. The file is initially empty, so the user will need to get the fd and
+ * write something to it before use.
+ */
+
+typedef struct tmpfile_sector_source {
+    struct file_sector_source file;
+    const char *filename;
+} *tmpfile_sector_source_t;
+
+static GList *tmpfile_open_list = NULL;
+static gboolean tmpfile_atexit_installed = 0; /* TRUE to indicate atexit hook is registered */
+
+/**
+ * atexit hook to destroy any open tmpfiles - make sure they're deleted.
+ */
+static void tmpfile_atexit_hook(void)
+{
+    GList *ptr;
+    while( tmpfile_open_list != NULL ) {
+        sector_source_t source = (sector_source_t)tmpfile_open_list->data;
+        source->destroy(source);
+        assert( tmpfile_open_list == NULL || tmpfile_open_list->data != source );
+    }
+}
+
+
+static void tmpfile_sector_source_destroy( sector_source_t dev )
+{
+    assert( IS_SECTOR_SOURCE_TYPE(dev,FILE_SECTOR_SOURCE) );
+    tmpfile_sector_source_t fdev = (tmpfile_sector_source_t)dev;
+
+    fclose( fdev->file.file );
+    fdev->file.file = NULL;
+    unlink(fdev->filename);
+    g_free((char *)fdev->filename);
+    tmpfile_open_list = g_list_remove(tmpfile_open_list, fdev);
+    default_sector_source_destroy(dev);
+}
+
+sector_source_t tmpfile_sector_source_new( sector_mode_t mode )
+{
+    if( !tmpfile_atexit_installed ) {
+        atexit(tmpfile_atexit_hook);
+    }
+
+    gchar *tmpdir = getenv("TMPDIR");
+    if( tmpdir == NULL ) {
+        tmpdir = "/tmp";
+    }
+    gchar *tempfile = get_filename_at(tmpdir, "cd.XXXXXXX");
+    int fd = mkstemp( tempfile );
+    if( fd == -1 ) {
+        g_free(tempfile);
+        return FALSE;
+    }
+
+    FILE *f = fdopen( fd, "w+" );
+    if( f == NULL ) {
+        close(fd);
+        unlink(tempfile);
+        g_free(tempfile);
+        return NULL;
+    }
+
+    tmpfile_sector_source_t dev = g_malloc0(sizeof(struct tmpfile_sector_source));
+    dev->file.file = f;
+    dev->filename = tempfile;
+    sector_source_t source = sector_source_init( &dev->file.dev, FILE_SECTOR_SOURCE, mode, 0, file_sector_source_read, tmpfile_sector_source_destroy );
+    tmpfile_open_list = g_list_append(tmpfile_open_list, source);
+}
+
+/************************ Memory device implementation *************************/
+typedef struct mem_sector_source {
+    struct sector_source dev;
+    unsigned char *buffer;
+    gboolean freeOnDestroy;
+} *mem_sector_source_t;
+
+static void mem_sector_source_destroy( sector_source_t dev )
+{
+    assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );
+    mem_sector_source_t mdev = (mem_sector_source_t)dev;
+
+    if( mdev->freeOnDestroy ) {
+        free(mdev->buffer);
+    }
+    mdev->buffer = NULL;
+    default_sector_source_destroy(dev);
+}
+
+static cdrom_error_t mem_sector_source_read( sector_source_t dev, cdrom_lba_t lba, cdrom_count_t block_count, unsigned char *buf )
+{
+    assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );
+    mem_sector_source_t mdev = (mem_sector_source_t)dev;
+
+    if( (lba + block_count) >= dev->size )
+        return CDROM_ERROR_BADREAD;
+    uint32_t off = lba * CDROM_SECTOR_SIZE(dev->mode);
+    uint32_t size = block_count * CDROM_SECTOR_SIZE(dev->mode);
+
+    memcpy( buf, mdev->buffer + off, size );
+    return CDROM_ERROR_OK;
+}
+
+sector_source_t mem_sector_source_new_buffer( unsigned char *buffer, sector_mode_t mode,
+                                       cdrom_count_t sector_count, gboolean freeOnDestroy )
+{
+    assert( mode != SECTOR_UNKNOWN );
+    assert( buffer != NULL );
+    mem_sector_source_t dev = g_malloc(sizeof(struct mem_sector_source));
+    dev->buffer = buffer;
+    dev->freeOnDestroy = freeOnDestroy;
+    return sector_source_init( &dev->dev, MEM_SECTOR_SOURCE, mode, sector_count, mem_sector_source_read, mem_sector_source_destroy );
+}
+
+sector_source_t mem_sector_source_new( sector_mode_t mode, cdrom_count_t sector_count )
+{
+    return mem_sector_source_new_buffer( g_malloc( sector_count * CDROM_SECTOR_SIZE(mode) ), mode,
+                                         sector_count, TRUE );
+}
+
+unsigned char *mem_sector_source_get_buffer( sector_source_t dev )
+{
+    assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );
+    mem_sector_source_t mdev = (mem_sector_source_t)dev;
+    return mdev->buffer;
+}
+
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /************************ Track device implementation *************************/
 typedef struct track_sector_source {
     struct sector_source dev;
</pre></div>
<hr /><a name="file12" /><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>sector.h</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/drivers/cdrom/sector.h
+++ lxdream/src/drivers/cdrom/sector.h
@@ -33,6 +33,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > typedef enum {
     NULL_SECTOR_SOURCE,
     FILE_SECTOR_SOURCE,
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    MEM_SECTOR_SOURCE,
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     DISC_SECTOR_SOURCE,
     TRACK_SECTOR_SOURCE
 } sector_source_type_t;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -56,7 +57,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     sector_source_type_t type;
 
     sector_mode_t mode; /* Implies sector size. */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >uint32</span>_t size; /* Block count */
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >cdrom_count</span>_t size; /* Block count */
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
     /**
      * Read blocks from the device using the native block size.
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -98,6 +99,12 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > sector_source_t file_sector_source_new_full( FILE *f, sector_mode_t mode, gboolean closeOnDestroy );
 
 /**
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+ * Temp-file creator - initially empty. Creates a file in the system temp dir,
+ * unlinked on destruction or program exit.
+ */
+sector_source_t tmpfile_sector_source_new(  sector_mode_t mode );
+
+/**
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * Construct a file source that shares its file descriptor with another
  * file source.
  */
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -119,6 +126,25 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  */
 int file_sector_source_get_fd( sector_source_t ref );
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/** Construct a memory source with the given mode and size */
+sector_source_t mem_sector_source_new( sector_mode_t mode, cdrom_count_t size );
+
+/**
+ * Construct a memory source using the supplied buffer for data.
+ * @param buffer The buffer to read from, which must be at least size * sector_size in length
+ * @param mode The sector mode of the data in the buffer, which cannot be SECTOR_UNKNOWN
+ * @param size Number of sectors in the buffer
+ * @param freeOnDestroy If true, the source owns the buffer and will release it when the
+ *   source is destroyed.
+ */
+sector_source_t mem_sector_source_new_buffer( unsigned char *buffer, sector_mode_t mode, cdrom_count_t size,
+                                       gboolean freeOnDestroy );
+
+/**
+ * Retrieve the underlying buffer for a memory source
+ */
+unsigned char *mem_sector_source_get_buffer( sector_source_t source );
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Increment the reference count for a block device.
  */
</pre></div>
<hr /><a name="file13" /><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>main.c</b></big> <small id="info" style="color: #888888;" >1879fd49ccf6 -> 7b279d10f46f</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/main.c
+++ lxdream/src/main.c
@@ -20,6 +20,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include <stdlib.h>
 #include <unistd.h>
 #include <getopt.h>
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#include <libisofs/libisofs.h>
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #include "lxdream.h"
 #include "lxpaths.h"
 #include "gettext.h"
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -224,6 +225,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         exit(0);
     }
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    iso_init();
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     gdrom_list_init();
     vmulist_init();
 
</pre></div>
<hr /><a name="file14" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span id="removed" class="pathname" style="font-family:monospace; float:right; background-color:#ffdddd;" >lxdream/src/test</span><br />
<div id="removed" class="fileheader" style="margin-bottom:.5em; background-color:#ffdddd;" ><big><b>testisoread.c</b></big> <small id="info" style="color: #888888;" >removed after 1879fd49ccf6</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/test/testisoread.c
+++ lxdream/src/test/testisoread.c
@@ -1,63 +0,0 @@
</small></pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-/**
- * $Id$
- *
- * Unit tests for the ISO9660 filesystem reader
- *
- * Copyright (c) 2010 Nathan Keynes.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-#include "drivers/cdrom/cdrom.h"
-#include "drivers/cdrom/isoread.h"
-#include <stdio.h>
-
-int main( int argc, char *argv[] )
-{
-    if( argc < 2 ) {
-        fprintf( stderr, "Usage: testisoread <disc image>\n" );
-        return 1;
-    }
-
-    ERROR err;
-    cdrom_disc_t disc = cdrom_disc_open(argv[1], &err);
-
-    if( disc == NULL ) {
-        fprintf( stderr, "Unable to open disc image '%s': %s\n", argv[1], err.msg );
-        return 2;
-    }
-    cdrom_track_t track = cdrom_disc_get_last_data_track(disc);
-    if( track == NULL ) {
-        fprintf( stderr, "Disc has no data tracks\n" );
-        return 3;
-    }
-
-    isofs_reader_t iso = isofs_reader_new_from_track( disc, track, &err );
-    if( iso == NULL ) {
-        fprintf( stderr, "Unable to open ISO filesystem: %s\n", err.msg );
-        return 4;
-    }
-    isofs_reader_print_dir( stdout, isofs_reader_get_root_dir(iso) );
-
-    isofs_reader_dirent_t boot = isofs_reader_get_file( iso, "1st_read.bin" );
-    if( boot == NULL ) {
-        fprintf( stderr, "Unable to find 1st_read.bin" );
-        return 5;
-    }
-
-    printf( "Bootstrap: %s (%d)\n", boot->name, boot->size );
-    char tmp[boot->size];
-    if( isofs_reader_read_file( iso, boot, 0, boot->size, tmp ) != CDROM_ERROR_OK ) {
-        fprintf( stderr, "Unable to read 1st_read.bin" );
-        return 6;
-    }
-    return 0;
-}
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>