<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>