revision 1107:7b279d10f46f
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 1107:7b279d10f46f |
parent | 1106:1879fd49ccf6 |
child | 1108:305ef2082079 |
author | nkeynes |
date | Mon May 17 22:01:23 2010 +1000 (13 years ago) |
Rip out my hacked-up isofs code and replace with libisofs. Much better.
configure | view | annotate | diff | log | ||
configure.in | view | annotate | diff | log | ||
src/Makefile.am | view | annotate | diff | log | ||
src/Makefile.in | view | annotate | diff | log | ||
src/bios.c | view | annotate | diff | log | ||
src/drivers/cdrom/iso_impl.h | view | annotate | diff | log | ||
src/drivers/cdrom/isofs.c | view | annotate | diff | log | ||
src/drivers/cdrom/isofs.h | view | annotate | diff | log | ||
src/drivers/cdrom/isoread.c | view | annotate | diff | log | ||
src/drivers/cdrom/isoread.h | view | annotate | diff | log | ||
src/drivers/cdrom/sector.c | view | annotate | diff | log | ||
src/drivers/cdrom/sector.h | view | annotate | diff | log | ||
src/main.c | view | annotate | diff | log | ||
src/test/testisoread.c | view | annotate | diff | log |
1.1 --- a/configure Tue Mar 23 19:48:03 2010 +10001.2 +++ b/configure Mon May 17 22:01:23 2010 +10001.3 @@ -9224,6 +9224,226 @@1.4 fi1.7 +if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then1.8 + { $as_echo "$as_me:$LINENO: checking for libisofs/libisofs.h" >&51.9 +$as_echo_n "checking for libisofs/libisofs.h... " >&6; }1.10 +if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then1.11 + $as_echo_n "(cached) " >&61.12 +fi1.13 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libisofs_libisofs_h" >&51.14 +$as_echo "$ac_cv_header_libisofs_libisofs_h" >&6; }1.15 +else1.16 + # Is the header compilable?1.17 +{ $as_echo "$as_me:$LINENO: checking libisofs/libisofs.h usability" >&51.18 +$as_echo_n "checking libisofs/libisofs.h usability... " >&6; }1.19 +cat >conftest.$ac_ext <<_ACEOF1.20 +/* confdefs.h. */1.21 +_ACEOF1.22 +cat confdefs.h >>conftest.$ac_ext1.23 +cat >>conftest.$ac_ext <<_ACEOF1.24 +/* end confdefs.h. */1.25 +$ac_includes_default1.26 +#include <libisofs/libisofs.h>1.27 +_ACEOF1.28 +rm -f conftest.$ac_objext1.29 +if { (ac_try="$ac_compile"1.30 +case "(($ac_try" in1.31 + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;1.32 + *) ac_try_echo=$ac_try;;1.33 +esac1.34 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""1.35 +$as_echo "$ac_try_echo") >&51.36 + (eval "$ac_compile") 2>conftest.er11.37 + ac_status=$?1.38 + grep -v '^ *+' conftest.er1 >conftest.err1.39 + rm -f conftest.er11.40 + cat conftest.err >&51.41 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&51.42 + (exit $ac_status); } && {1.43 + test -z "$ac_c_werror_flag" ||1.44 + test ! -s conftest.err1.45 + } && test -s conftest.$ac_objext; then1.46 + ac_header_compiler=yes1.47 +else1.48 + $as_echo "$as_me: failed program was:" >&51.49 +sed 's/^/| /' conftest.$ac_ext >&51.50 +1.51 + ac_header_compiler=no1.52 +fi1.53 +1.54 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext1.55 +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&51.56 +$as_echo "$ac_header_compiler" >&6; }1.57 +1.58 +# Is the header present?1.59 +{ $as_echo "$as_me:$LINENO: checking libisofs/libisofs.h presence" >&51.60 +$as_echo_n "checking libisofs/libisofs.h presence... " >&6; }1.61 +cat >conftest.$ac_ext <<_ACEOF1.62 +/* confdefs.h. */1.63 +_ACEOF1.64 +cat confdefs.h >>conftest.$ac_ext1.65 +cat >>conftest.$ac_ext <<_ACEOF1.66 +/* end confdefs.h. */1.67 +#include <libisofs/libisofs.h>1.68 +_ACEOF1.69 +if { (ac_try="$ac_cpp conftest.$ac_ext"1.70 +case "(($ac_try" in1.71 + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;1.72 + *) ac_try_echo=$ac_try;;1.73 +esac1.74 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""1.75 +$as_echo "$ac_try_echo") >&51.76 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er11.77 + ac_status=$?1.78 + grep -v '^ *+' conftest.er1 >conftest.err1.79 + rm -f conftest.er11.80 + cat conftest.err >&51.81 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&51.82 + (exit $ac_status); } >/dev/null && {1.83 + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||1.84 + test ! -s conftest.err1.85 + }; then1.86 + ac_header_preproc=yes1.87 +else1.88 + $as_echo "$as_me: failed program was:" >&51.89 +sed 's/^/| /' conftest.$ac_ext >&51.90 +1.91 + ac_header_preproc=no1.92 +fi1.93 +1.94 +rm -f conftest.err conftest.$ac_ext1.95 +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&51.96 +$as_echo "$ac_header_preproc" >&6; }1.97 +1.98 +# So? What about this header?1.99 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in1.100 + yes:no: )1.101 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: accepted by the compiler, rejected by the preprocessor!" >&51.102 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}1.103 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: proceeding with the compiler's result" >&51.104 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: proceeding with the compiler's result" >&2;}1.105 + ac_header_preproc=yes1.106 + ;;1.107 + no:yes:* )1.108 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: present but cannot be compiled" >&51.109 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: present but cannot be compiled" >&2;}1.110 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: check for missing prerequisite headers?" >&51.111 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: check for missing prerequisite headers?" >&2;}1.112 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: see the Autoconf documentation" >&51.113 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: see the Autoconf documentation" >&2;}1.114 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: section \"Present But Cannot Be Compiled\"" >&51.115 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: section \"Present But Cannot Be Compiled\"" >&2;}1.116 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: proceeding with the preprocessor's result" >&51.117 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: proceeding with the preprocessor's result" >&2;}1.118 + { $as_echo "$as_me:$LINENO: WARNING: libisofs/libisofs.h: in the future, the compiler will take precedence" >&51.119 +$as_echo "$as_me: WARNING: libisofs/libisofs.h: in the future, the compiler will take precedence" >&2;}1.120 +1.121 + ;;1.122 +esac1.123 +{ $as_echo "$as_me:$LINENO: checking for libisofs/libisofs.h" >&51.124 +$as_echo_n "checking for libisofs/libisofs.h... " >&6; }1.125 +if test "${ac_cv_header_libisofs_libisofs_h+set}" = set; then1.126 + $as_echo_n "(cached) " >&61.127 +else1.128 + ac_cv_header_libisofs_libisofs_h=$ac_header_preproc1.129 +fi1.130 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_libisofs_libisofs_h" >&51.131 +$as_echo "$ac_cv_header_libisofs_libisofs_h" >&6; }1.132 +1.133 +fi1.134 +if test "x$ac_cv_header_libisofs_libisofs_h" = x""yes; then1.135 +1.136 + { $as_echo "$as_me:$LINENO: checking for iso_data_source_new_from_file in -lisofs" >&51.137 +$as_echo_n "checking for iso_data_source_new_from_file in -lisofs... " >&6; }1.138 +if test "${ac_cv_lib_isofs_iso_data_source_new_from_file+set}" = set; then1.139 + $as_echo_n "(cached) " >&61.140 +else1.141 + ac_check_lib_save_LIBS=$LIBS1.142 +LIBS="-lisofs $LIBS"1.143 +cat >conftest.$ac_ext <<_ACEOF1.144 +/* confdefs.h. */1.145 +_ACEOF1.146 +cat confdefs.h >>conftest.$ac_ext1.147 +cat >>conftest.$ac_ext <<_ACEOF1.148 +/* end confdefs.h. */1.149 +1.150 +/* Override any GCC internal prototype to avoid an error.1.151 + Use char because int might match the return type of a GCC1.152 + builtin and then its argument prototype would still apply. */1.153 +#ifdef __cplusplus1.154 +extern "C"1.155 +#endif1.156 +char iso_data_source_new_from_file ();1.157 +int1.158 +main ()1.159 +{1.160 +return iso_data_source_new_from_file ();1.161 + ;1.162 + return 0;1.163 +}1.164 +_ACEOF1.165 +rm -f conftest.$ac_objext conftest$ac_exeext1.166 +if { (ac_try="$ac_link"1.167 +case "(($ac_try" in1.168 + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;1.169 + *) ac_try_echo=$ac_try;;1.170 +esac1.171 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""1.172 +$as_echo "$ac_try_echo") >&51.173 + (eval "$ac_link") 2>conftest.er11.174 + ac_status=$?1.175 + grep -v '^ *+' conftest.er1 >conftest.err1.176 + rm -f conftest.er11.177 + cat conftest.err >&51.178 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&51.179 + (exit $ac_status); } && {1.180 + test -z "$ac_c_werror_flag" ||1.181 + test ! -s conftest.err1.182 + } && test -s conftest$ac_exeext && {1.183 + test "$cross_compiling" = yes ||1.184 + $as_test_x conftest$ac_exeext1.185 + }; then1.186 + ac_cv_lib_isofs_iso_data_source_new_from_file=yes1.187 +else1.188 + $as_echo "$as_me: failed program was:" >&51.189 +sed 's/^/| /' conftest.$ac_ext >&51.190 +1.191 + ac_cv_lib_isofs_iso_data_source_new_from_file=no1.192 +fi1.193 +1.194 +rm -rf conftest.dSYM1.195 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \1.196 + conftest$ac_exeext conftest.$ac_ext1.197 +LIBS=$ac_check_lib_save_LIBS1.198 +fi1.199 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_isofs_iso_data_source_new_from_file" >&51.200 +$as_echo "$ac_cv_lib_isofs_iso_data_source_new_from_file" >&6; }1.201 +if test "x$ac_cv_lib_isofs_iso_data_source_new_from_file" = x""yes; then1.202 +1.203 + LIBS="$LIBS -lisofs"1.204 +1.205 +else1.206 + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&51.207 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}1.208 +{ { $as_echo "$as_me:$LINENO: error: \"Libisofs library not found, but is required\"1.209 +See \`config.log' for more details." >&51.210 +$as_echo "$as_me: error: \"Libisofs library not found, but is required\"1.211 +See \`config.log' for more details." >&2;}1.212 + { (exit 1); exit 1; }; }; }1.213 +fi1.214 +1.215 +else1.216 + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&51.217 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}1.218 +{ { $as_echo "$as_me:$LINENO: error: \"Libisofs headers not found, but is required\"1.219 +See \`config.log' for more details." >&51.220 +$as_echo "$as_me: error: \"Libisofs headers not found, but is required\"1.221 +See \`config.log' for more details." >&2;}1.222 + { (exit 1); exit 1; }; }; }1.223 +fi1.224 +1.225 +1.226 +1.227 if test "x$with_osmesa" != xno; then
2.1 --- a/configure.in Tue Mar 23 19:48:03 2010 +10002.2 +++ b/configure.in Mon May 17 22:01:23 2010 +10002.3 @@ -217,6 +217,12 @@2.5 AM_CONDITIONAL(GUI_GTK, [test "$HAVE_GTK" = 'yes'])2.7 +AC_CHECK_HEADER([libisofs/libisofs.h], [2.8 + AC_CHECK_LIB(isofs, [iso_data_source_new_from_file], [2.9 + LIBS="$LIBS -lisofs"2.10 + ], [ AC_MSG_FAILURE( ["Libisofs library not found, but is required"]) ])],2.11 + [ AC_MSG_FAILURE( ["Libisofs headers not found, but is required"]) ])2.12 +2.13 dnl ------------------ Video driver support -------------------2.14 AS_IF([test "x$with_osmesa" != xno], [
3.1 --- a/src/Makefile.am Tue Mar 23 19:48:03 2010 +10003.2 +++ b/src/Makefile.am Mon May 17 22:01:23 2010 +10003.3 @@ -13,7 +13,7 @@3.4 PLUGINLDFLAGS = @PLUGINLDFLAGS@3.5 bin_PROGRAMS = lxdream3.6 noinst_PROGRAMS = gendec genglsl genmach3.7 -check_PROGRAMS = test/testxlt test/testisoread3.8 +check_PROGRAMS = test/testxlt3.10 pkglib_PROGRAMS=3.11 EXTRA_DIST=drivers/genkeymap.pl checkver.pl drivers/dummy.c3.12 @@ -74,7 +74,7 @@3.13 drivers/cdrom/edc_ecc.c drivers/cdrom/ecc.h drivers/cdrom/drive.c \3.14 drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \3.15 drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \3.16 - drivers/cdrom/isoread.h drivers/cdrom/isoread.c drivers/cdrom/iso_impl.h \3.17 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c \3.18 sh4/sh4.def sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \3.19 hotkeys.c hotkeys.h3.20 lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@3.21 @@ -241,15 +241,6 @@3.24 test_testxlt_SOURCES = test/testxlt.c xlat/xltcache.c xlat/xltcache.h3.25 -test_testisoread_SOURCES = test/testisoread.c drivers/cdrom/isoread.c \3.26 - drivers/cdrom/isoread.h drivers/cdrom/isofs_impl.h drivers/cdrom/ecc.h \3.27 - drivers/cdrom/cdrom.c drivers/cdrom/cdrom.h drivers/cdrom/sector.h \3.28 - drivers/cdrom/sector.c drivers/cdrom/cdimpl.h drivers/cdrom/edc_ecc.c \3.29 - drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \3.30 - drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \3.31 - drivers/cdrom/defs.h drivers/cdrom/drive.h drivers/cdrom/drive.c \3.32 - drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c3.33 -test_testisoread_LDADD = @GLIB_LIBS@ $(INTLLIBS)3.35 sh4/sh4core.c: gendec sh4/sh4.def sh4/sh4core.in3.36 $(mkdir_p) `dirname $@`
4.1 --- a/src/Makefile.in Tue Mar 23 19:48:03 2010 +10004.2 +++ b/src/Makefile.in Mon May 17 22:01:23 2010 +10004.3 @@ -38,8 +38,7 @@4.4 host_triplet = @host@4.5 bin_PROGRAMS = lxdream$(EXEEXT)4.6 noinst_PROGRAMS = gendec$(EXEEXT) genglsl$(EXEEXT) genmach$(EXEEXT)4.7 -check_PROGRAMS = test/testxlt$(EXEEXT) test/testisoread$(EXEEXT) \4.8 - $(am__EXEEXT_1)4.9 +check_PROGRAMS = test/testxlt$(EXEEXT) $(am__EXEEXT_1)4.10 pkglib_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \4.11 $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7)4.12 @BUILD_SHARED_TRUE@am__append_1 = plugin.c plugin.h4.13 @@ -175,29 +174,28 @@4.14 drivers/cdrom/ecc.h drivers/cdrom/drive.c \4.15 drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \4.16 drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \4.17 - drivers/cdrom/cd_mmc.c drivers/cdrom/isoread.h \4.18 - drivers/cdrom/isoread.c drivers/cdrom/iso_impl.h sh4/sh4.def \4.19 - sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \4.20 - hotkeys.c hotkeys.h plugin.c plugin.h sh4/sh4x86.c \4.21 - xlat/x86/x86op.h xlat/x86/ia32abi.h xlat/x86/amd64abi.h \4.22 - sh4/sh4trans.c sh4/sh4trans.h sh4/mmux86.c x86dasm/x86dasm.c \4.23 - x86dasm/x86dasm.h x86dasm/i386-dis.c x86dasm/dis-init.c \4.24 - x86dasm/dis-buf.c x86dasm/ansidecl.h x86dasm/bfd.h \4.25 - x86dasm/dis-asm.h x86dasm/symcat.h x86dasm/sysdep.h \4.26 - gtkui/gtkui.c gtkui/gtkui.h gtkui/gtk_win.c gtkui/gtkcb.c \4.27 - gtkui/gtk_cfg.c gtkui/gtk_mmio.c gtkui/gtk_debug.c \4.28 - gtkui/gtk_dump.c gtkui/gtk_ctrl.c gtkui/gtk_gd.c \4.29 - drivers/io_glib.c drivers/video_gtk.c cocoaui/cocoaui.m \4.30 - cocoaui/cocoaui.h cocoaui/cocoa_cfg.m cocoaui/cocoa_win.m \4.31 - cocoaui/cocoa_gd.m cocoaui/cocoa_prefs.m cocoaui/cocoa_ctrl.m \4.32 - cocoaui/paths_osx.m drivers/io_osx.m drivers/video_osx.m \4.33 - drivers/mac_keymap.h drivers/mac_keymap.txt paths_unix.c \4.34 - drivers/video_gdk.c drivers/video_glx.c drivers/video_glx.h \4.35 - drivers/video_nsgl.m drivers/video_nsgl.h drivers/audio_osx.m \4.36 - drivers/audio_sdl.c drivers/audio_pulse.c drivers/audio_esd.c \4.37 - drivers/audio_alsa.c drivers/input_lirc.c \4.38 - drivers/cdrom/cd_linux.c drivers/cdrom/cd_osx.c \4.39 - drivers/osx_iokit.m drivers/osx_iokit.h \4.40 + drivers/cdrom/cd_mmc.c drivers/cdrom/isofs.h \4.41 + drivers/cdrom/isofs.c sh4/sh4.def sh4/sh4core.in sh4/sh4x86.in \4.42 + sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c hotkeys.h plugin.c \4.43 + plugin.h sh4/sh4x86.c xlat/x86/x86op.h xlat/x86/ia32abi.h \4.44 + xlat/x86/amd64abi.h sh4/sh4trans.c sh4/sh4trans.h sh4/mmux86.c \4.45 + x86dasm/x86dasm.c x86dasm/x86dasm.h x86dasm/i386-dis.c \4.46 + x86dasm/dis-init.c x86dasm/dis-buf.c x86dasm/ansidecl.h \4.47 + x86dasm/bfd.h x86dasm/dis-asm.h x86dasm/symcat.h \4.48 + x86dasm/sysdep.h gtkui/gtkui.c gtkui/gtkui.h gtkui/gtk_win.c \4.49 + gtkui/gtkcb.c gtkui/gtk_cfg.c gtkui/gtk_mmio.c \4.50 + gtkui/gtk_debug.c gtkui/gtk_dump.c gtkui/gtk_ctrl.c \4.51 + gtkui/gtk_gd.c drivers/io_glib.c drivers/video_gtk.c \4.52 + cocoaui/cocoaui.m cocoaui/cocoaui.h cocoaui/cocoa_cfg.m \4.53 + cocoaui/cocoa_win.m cocoaui/cocoa_gd.m cocoaui/cocoa_prefs.m \4.54 + cocoaui/cocoa_ctrl.m cocoaui/paths_osx.m drivers/io_osx.m \4.55 + drivers/video_osx.m drivers/mac_keymap.h \4.56 + drivers/mac_keymap.txt paths_unix.c drivers/video_gdk.c \4.57 + drivers/video_glx.c drivers/video_glx.h drivers/video_nsgl.m \4.58 + drivers/video_nsgl.h drivers/audio_osx.m drivers/audio_sdl.c \4.59 + drivers/audio_pulse.c drivers/audio_esd.c drivers/audio_alsa.c \4.60 + drivers/input_lirc.c drivers/cdrom/cd_linux.c \4.61 + drivers/cdrom/cd_osx.c drivers/osx_iokit.m drivers/osx_iokit.h \4.62 drivers/cdrom/cd_none.c drivers/joy_linux.c \4.63 drivers/joy_linux.h4.64 @BUILD_SHARED_TRUE@am__objects_1 = lxdream-plugin.$(OBJEXT)4.65 @@ -280,7 +278,7 @@4.66 lxdream-sector.$(OBJEXT) lxdream-cd_nrg.$(OBJEXT) \4.67 lxdream-cd_cdi.$(OBJEXT) lxdream-cd_gdi.$(OBJEXT) \4.68 lxdream-edc_ecc.$(OBJEXT) lxdream-drive.$(OBJEXT) \4.69 - lxdream-cd_mmc.$(OBJEXT) lxdream-isoread.$(OBJEXT) \4.70 + lxdream-cd_mmc.$(OBJEXT) lxdream-isofs.$(OBJEXT) \4.71 lxdream-hotkeys.$(OBJEXT) $(am__objects_1) $(am__objects_2) \4.72 $(am__objects_3) $(am__objects_4) $(am__objects_5) \4.73 $(am__objects_6) $(am__objects_7) $(am__objects_8) \4.74 @@ -296,13 +294,6 @@4.75 lxdream_dummy_@SOEXT@_OBJECTS = $(am_lxdream_dummy_@SOEXT@_OBJECTS)4.76 @BUILD_SHARED_TRUE@lxdream_dummy_@SOEXT@_DEPENDENCIES = \4.77 @BUILD_SHARED_TRUE@ lxdream_dummy.lo4.78 -am_test_testisoread_OBJECTS = testisoread.$(OBJEXT) isoread.$(OBJEXT) \4.79 - cdrom.$(OBJEXT) sector.$(OBJEXT) edc_ecc.$(OBJEXT) \4.80 - drive.$(OBJEXT) cd_nrg.$(OBJEXT) cd_cdi.$(OBJEXT) \4.81 - cd_gdi.$(OBJEXT)4.82 -test_testisoread_OBJECTS = $(am_test_testisoread_OBJECTS)4.83 -test_testisoread_DEPENDENCIES = $(am__DEPENDENCIES_1)4.84 -am__dirstamp = $(am__leading_dot)dirstamp4.85 am__test_testsh4x86_SOURCES_DIST = test/testsh4x86.c x86dasm/x86dasm.c \4.86 x86dasm/x86dasm.h x86dasm/i386-dis.c x86dasm/dis-init.c \4.87 x86dasm/dis-buf.c sh4/sh4trans.c sh4/sh4x86.c xlat/xltcache.c \4.88 @@ -322,6 +313,7 @@4.89 @BUILD_SH4X86_TRUE@ test_testsh4x86-cpu.$(OBJEXT)4.90 test_testsh4x86_OBJECTS = $(am_test_testsh4x86_OBJECTS)4.91 test_testsh4x86_DEPENDENCIES =4.92 +am__dirstamp = $(am__leading_dot)dirstamp4.93 am_test_testxlt_OBJECTS = testxlt.$(OBJEXT) xltcache.$(OBJEXT)4.94 test_testxlt_OBJECTS = $(am_test_testxlt_OBJECTS)4.95 test_testxlt_LDADD = $(LDADD)4.96 @@ -341,14 +333,14 @@4.97 $(audio_pulse_@SOEXT@_SOURCES) $(audio_sdl_@SOEXT@_SOURCES) \4.98 $(gendec_SOURCES) $(genglsl_SOURCES) $(genmach_SOURCES) \4.99 $(input_lirc_@SOEXT@_SOURCES) $(lxdream_SOURCES) \4.100 - $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testisoread_SOURCES) \4.101 - $(test_testsh4x86_SOURCES) $(test_testxlt_SOURCES)4.102 + $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testsh4x86_SOURCES) \4.103 + $(test_testxlt_SOURCES)4.104 DIST_SOURCES = $(audio_alsa_@SOEXT@_SOURCES) \4.105 $(audio_esd_@SOEXT@_SOURCES) $(audio_pulse_@SOEXT@_SOURCES) \4.106 $(audio_sdl_@SOEXT@_SOURCES) $(gendec_SOURCES) \4.107 $(genglsl_SOURCES) $(genmach_SOURCES) \4.108 $(input_lirc_@SOEXT@_SOURCES) $(am__lxdream_SOURCES_DIST) \4.109 - $(lxdream_dummy_@SOEXT@_SOURCES) $(test_testisoread_SOURCES) \4.110 + $(lxdream_dummy_@SOEXT@_SOURCES) \4.111 $(am__test_testsh4x86_SOURCES_DIST) $(test_testxlt_SOURCES)4.112 ETAGS = etags4.113 CTAGS = ctags4.114 @@ -597,15 +589,15 @@4.115 drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \4.116 drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \4.117 drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \4.118 - drivers/cdrom/isoread.h drivers/cdrom/isoread.c \4.119 - drivers/cdrom/iso_impl.h sh4/sh4.def sh4/sh4core.in \4.120 - sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \4.121 - hotkeys.h $(am__append_1) $(am__append_2) $(am__append_4) \4.122 - $(am__append_5) $(am__append_6) $(am__append_7) \4.123 - $(am__append_8) $(am__append_9) $(am__append_10) \4.124 - $(am__append_17) $(am__append_19) $(am__append_21) \4.125 - $(am__append_23) $(am__append_25) $(am__append_27) \4.126 - $(am__append_28) $(am__append_29) $(am__append_30)4.127 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \4.128 + sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \4.129 + hotkeys.c hotkeys.h $(am__append_1) $(am__append_2) \4.130 + $(am__append_4) $(am__append_5) $(am__append_6) \4.131 + $(am__append_7) $(am__append_8) $(am__append_9) \4.132 + $(am__append_10) $(am__append_17) $(am__append_19) \4.133 + $(am__append_21) $(am__append_23) $(am__append_25) \4.134 + $(am__append_27) $(am__append_28) $(am__append_29) \4.135 + $(am__append_30)4.136 lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@4.137 @BUILD_SH4X86_TRUE@test_testsh4x86_LDADD = @LXDREAM_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @LIBPNG_LIBS@4.138 @BUILD_SH4X86_TRUE@test_testsh4x86_CPPFLAGS = @LXDREAMCPPFLAGS@4.139 @@ -637,16 +629,6 @@4.140 genglsl_LDADD = @GLIB_LIBS@ @GTK_LIBS@ $(INTLLIBS)4.141 genmach_LDADD = @GLIB_LIBS@ @GTK_LIBS@ $(INTLLIBS)4.142 test_testxlt_SOURCES = test/testxlt.c xlat/xltcache.c xlat/xltcache.h4.143 -test_testisoread_SOURCES = test/testisoread.c drivers/cdrom/isoread.c \4.144 - drivers/cdrom/isoread.h drivers/cdrom/isofs_impl.h drivers/cdrom/ecc.h \4.145 - drivers/cdrom/cdrom.c drivers/cdrom/cdrom.h drivers/cdrom/sector.h \4.146 - drivers/cdrom/sector.c drivers/cdrom/cdimpl.h drivers/cdrom/edc_ecc.c \4.147 - drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \4.148 - drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \4.149 - drivers/cdrom/defs.h drivers/cdrom/drive.h drivers/cdrom/drive.c \4.150 - drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c4.151 -4.152 -test_testisoread_LDADD = @GLIB_LIBS@ $(INTLLIBS)4.153 all: $(BUILT_SOURCES)4.154 $(MAKE) $(AM_MAKEFLAGS) all-am4.156 @@ -766,9 +748,6 @@4.157 test/$(am__dirstamp):4.158 @$(mkdir_p) test4.159 @: > test/$(am__dirstamp)4.160 -test/testisoread$(EXEEXT): $(test_testisoread_OBJECTS) $(test_testisoread_DEPENDENCIES) test/$(am__dirstamp)4.161 - @rm -f test/testisoread$(EXEEXT)4.162 - $(LINK) $(test_testisoread_LDFLAGS) $(test_testisoread_OBJECTS) $(test_testisoread_LDADD) $(LIBS)4.163 test/testsh4x86$(EXEEXT): $(test_testsh4x86_OBJECTS) $(test_testsh4x86_DEPENDENCIES) test/$(am__dirstamp)4.164 @rm -f test/testsh4x86$(EXEEXT)4.165 $(LINK) $(test_testsh4x86_LDFLAGS) $(test_testsh4x86_OBJECTS) $(test_testsh4x86_LDADD) $(LIBS)4.166 @@ -783,17 +762,10 @@4.167 -rm -f *.tab.c4.169 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actparse.Po@am__quote@4.170 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_cdi.Po@am__quote@4.171 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_gdi.Po@am__quote@4.172 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cd_nrg.Po@am__quote@4.173 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdrom.Po@am__quote@4.174 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drive.Po@am__quote@4.175 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edc_ecc.Po@am__quote@4.176 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gendec.Po@am__quote@4.177 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genglsl.Po@am__quote@4.178 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genmach.Po@am__quote@4.179 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insparse.Po@am__quote@4.180 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isoread.Po@am__quote@4.181 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-aica.Po@am__quote@4.182 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-armcore.Po@am__quote@4.183 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-armdasm.Po@am__quote@4.184 @@ -860,7 +832,7 @@4.185 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-io_glib.Po@am__quote@4.186 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-io_osx.Po@am__quote@4.187 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-ioutil.Po@am__quote@4.188 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isoread.Po@am__quote@4.189 +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isofs.Po@am__quote@4.190 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-joy_linux.Po@am__quote@4.191 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-kbd.Po@am__quote@4.192 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-lightgun.Po@am__quote@4.193 @@ -915,7 +887,6 @@4.194 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-xltcache.Po@am__quote@4.195 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-yuv.Po@am__quote@4.196 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdparse.Po@am__quote@4.197 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sector.Po@am__quote@4.198 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-cpu.Po@am__quote@4.199 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-dis-buf.Po@am__quote@4.200 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-dis-init.Po@am__quote@4.201 @@ -928,7 +899,6 @@4.202 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-util.Po@am__quote@4.203 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-x86dasm.Po@am__quote@4.204 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_testsh4x86-xltcache.Po@am__quote@4.205 -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testisoread.Po@am__quote@4.206 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testxlt.Po@am__quote@4.207 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xltcache.Po@am__quote@4.209 @@ -2080,19 +2050,19 @@4.210 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.211 @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`4.213 -lxdream-isoread.o: drivers/cdrom/isoread.c4.214 -@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; \4.215 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isoread.Tpo" "$(DEPDIR)/lxdream-isoread.Po"; else rm -f "$(DEPDIR)/lxdream-isoread.Tpo"; exit 1; fi4.216 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isoread.c' object='lxdream-isoread.o' libtool=no @AMDEPBACKSLASH@4.217 +lxdream-isofs.o: drivers/cdrom/isofs.c4.218 +@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; \4.219 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isofs.Tpo" "$(DEPDIR)/lxdream-isofs.Po"; else rm -f "$(DEPDIR)/lxdream-isofs.Tpo"; exit 1; fi4.220 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isofs.c' object='lxdream-isofs.o' libtool=no @AMDEPBACKSLASH@4.221 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.222 -@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.c4.223 +@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.c4.225 -lxdream-isoread.obj: drivers/cdrom/isoread.c4.226 -@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`; \4.227 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isoread.Tpo" "$(DEPDIR)/lxdream-isoread.Po"; else rm -f "$(DEPDIR)/lxdream-isoread.Tpo"; exit 1; fi4.228 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isoread.c' object='lxdream-isoread.obj' libtool=no @AMDEPBACKSLASH@4.229 +lxdream-isofs.obj: drivers/cdrom/isofs.c4.230 +@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`; \4.231 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isofs.Tpo" "$(DEPDIR)/lxdream-isofs.Po"; else rm -f "$(DEPDIR)/lxdream-isofs.Tpo"; exit 1; fi4.232 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isofs.c' object='lxdream-isofs.obj' libtool=no @AMDEPBACKSLASH@4.233 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.234 -@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`4.235 +@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`4.237 lxdream-hotkeys.o: hotkeys.c4.238 @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; \4.239 @@ -2542,132 +2512,6 @@4.240 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.241 @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`4.243 -testisoread.o: test/testisoread.c4.244 -@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; \4.245 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testisoread.Tpo" "$(DEPDIR)/testisoread.Po"; else rm -f "$(DEPDIR)/testisoread.Tpo"; exit 1; fi4.246 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test/testisoread.c' object='testisoread.o' libtool=no @AMDEPBACKSLASH@4.247 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.248 -@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.c4.249 -4.250 -testisoread.obj: test/testisoread.c4.251 -@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`; \4.252 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/testisoread.Tpo" "$(DEPDIR)/testisoread.Po"; else rm -f "$(DEPDIR)/testisoread.Tpo"; exit 1; fi4.253 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test/testisoread.c' object='testisoread.obj' libtool=no @AMDEPBACKSLASH@4.254 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.255 -@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`4.256 -4.257 -isoread.o: drivers/cdrom/isoread.c4.258 -@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; \4.259 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isoread.Tpo" "$(DEPDIR)/isoread.Po"; else rm -f "$(DEPDIR)/isoread.Tpo"; exit 1; fi4.260 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isoread.c' object='isoread.o' libtool=no @AMDEPBACKSLASH@4.261 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.262 -@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.c4.263 -4.264 -isoread.obj: drivers/cdrom/isoread.c4.265 -@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`; \4.266 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isoread.Tpo" "$(DEPDIR)/isoread.Po"; else rm -f "$(DEPDIR)/isoread.Tpo"; exit 1; fi4.267 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isoread.c' object='isoread.obj' libtool=no @AMDEPBACKSLASH@4.268 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.269 -@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`4.270 -4.271 -cdrom.o: drivers/cdrom/cdrom.c4.272 -@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; \4.273 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cdrom.Tpo" "$(DEPDIR)/cdrom.Po"; else rm -f "$(DEPDIR)/cdrom.Tpo"; exit 1; fi4.274 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cdrom.c' object='cdrom.o' libtool=no @AMDEPBACKSLASH@4.275 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.276 -@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.c4.277 -4.278 -cdrom.obj: drivers/cdrom/cdrom.c4.279 -@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`; \4.280 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cdrom.Tpo" "$(DEPDIR)/cdrom.Po"; else rm -f "$(DEPDIR)/cdrom.Tpo"; exit 1; fi4.281 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cdrom.c' object='cdrom.obj' libtool=no @AMDEPBACKSLASH@4.282 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.283 -@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`4.284 -4.285 -sector.o: drivers/cdrom/sector.c4.286 -@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; \4.287 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sector.Tpo" "$(DEPDIR)/sector.Po"; else rm -f "$(DEPDIR)/sector.Tpo"; exit 1; fi4.288 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/sector.c' object='sector.o' libtool=no @AMDEPBACKSLASH@4.289 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.290 -@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.c4.291 -4.292 -sector.obj: drivers/cdrom/sector.c4.293 -@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`; \4.294 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sector.Tpo" "$(DEPDIR)/sector.Po"; else rm -f "$(DEPDIR)/sector.Tpo"; exit 1; fi4.295 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/sector.c' object='sector.obj' libtool=no @AMDEPBACKSLASH@4.296 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.297 -@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`4.298 -4.299 -edc_ecc.o: drivers/cdrom/edc_ecc.c4.300 -@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; \4.301 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/edc_ecc.Tpo" "$(DEPDIR)/edc_ecc.Po"; else rm -f "$(DEPDIR)/edc_ecc.Tpo"; exit 1; fi4.302 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/edc_ecc.c' object='edc_ecc.o' libtool=no @AMDEPBACKSLASH@4.303 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.304 -@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.c4.305 -4.306 -edc_ecc.obj: drivers/cdrom/edc_ecc.c4.307 -@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`; \4.308 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/edc_ecc.Tpo" "$(DEPDIR)/edc_ecc.Po"; else rm -f "$(DEPDIR)/edc_ecc.Tpo"; exit 1; fi4.309 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/edc_ecc.c' object='edc_ecc.obj' libtool=no @AMDEPBACKSLASH@4.310 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.311 -@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`4.312 -4.313 -drive.o: drivers/cdrom/drive.c4.314 -@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; \4.315 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/drive.Tpo" "$(DEPDIR)/drive.Po"; else rm -f "$(DEPDIR)/drive.Tpo"; exit 1; fi4.316 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/drive.c' object='drive.o' libtool=no @AMDEPBACKSLASH@4.317 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.318 -@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.c4.319 -4.320 -drive.obj: drivers/cdrom/drive.c4.321 -@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`; \4.322 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/drive.Tpo" "$(DEPDIR)/drive.Po"; else rm -f "$(DEPDIR)/drive.Tpo"; exit 1; fi4.323 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/drive.c' object='drive.obj' libtool=no @AMDEPBACKSLASH@4.324 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.325 -@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`4.326 -4.327 -cd_nrg.o: drivers/cdrom/cd_nrg.c4.328 -@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; \4.329 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_nrg.Tpo" "$(DEPDIR)/cd_nrg.Po"; else rm -f "$(DEPDIR)/cd_nrg.Tpo"; exit 1; fi4.330 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_nrg.c' object='cd_nrg.o' libtool=no @AMDEPBACKSLASH@4.331 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.332 -@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.c4.333 -4.334 -cd_nrg.obj: drivers/cdrom/cd_nrg.c4.335 -@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`; \4.336 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_nrg.Tpo" "$(DEPDIR)/cd_nrg.Po"; else rm -f "$(DEPDIR)/cd_nrg.Tpo"; exit 1; fi4.337 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_nrg.c' object='cd_nrg.obj' libtool=no @AMDEPBACKSLASH@4.338 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.339 -@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`4.340 -4.341 -cd_cdi.o: drivers/cdrom/cd_cdi.c4.342 -@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; \4.343 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_cdi.Tpo" "$(DEPDIR)/cd_cdi.Po"; else rm -f "$(DEPDIR)/cd_cdi.Tpo"; exit 1; fi4.344 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_cdi.c' object='cd_cdi.o' libtool=no @AMDEPBACKSLASH@4.345 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.346 -@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.c4.347 -4.348 -cd_cdi.obj: drivers/cdrom/cd_cdi.c4.349 -@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`; \4.350 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_cdi.Tpo" "$(DEPDIR)/cd_cdi.Po"; else rm -f "$(DEPDIR)/cd_cdi.Tpo"; exit 1; fi4.351 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_cdi.c' object='cd_cdi.obj' libtool=no @AMDEPBACKSLASH@4.352 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.353 -@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`4.354 -4.355 -cd_gdi.o: drivers/cdrom/cd_gdi.c4.356 -@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; \4.357 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_gdi.Tpo" "$(DEPDIR)/cd_gdi.Po"; else rm -f "$(DEPDIR)/cd_gdi.Tpo"; exit 1; fi4.358 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_gdi.c' object='cd_gdi.o' libtool=no @AMDEPBACKSLASH@4.359 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.360 -@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.c4.361 -4.362 -cd_gdi.obj: drivers/cdrom/cd_gdi.c4.363 -@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`; \4.364 -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/cd_gdi.Tpo" "$(DEPDIR)/cd_gdi.Po"; else rm -f "$(DEPDIR)/cd_gdi.Tpo"; exit 1; fi4.365 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/cd_gdi.c' object='cd_gdi.obj' libtool=no @AMDEPBACKSLASH@4.366 -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@4.367 -@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`4.368 -4.369 test_testsh4x86-testsh4x86.o: test/testsh4x86.c4.370 @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; \4.371 @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
5.1 --- a/src/bios.c Tue Mar 23 19:48:03 2010 +10005.2 +++ b/src/bios.c Mon May 17 22:01:23 2010 +10005.3 @@ -24,7 +24,7 @@5.4 #include "bootstrap.h"5.5 #include "sh4/sh4.h"5.6 #include "drivers/cdrom/cdrom.h"5.7 -#include "drivers/cdrom/isoread.h"5.8 +#include "drivers/cdrom/isofs.h"5.9 #include "gdrom/gdrom.h"5.11 gboolean bios_boot_gdrom_disc( void );5.12 @@ -387,6 +387,56 @@5.14 #define MIN_ISO_SECTORS 325.16 +static gboolean bios_load_ipl( cdrom_disc_t disc, cdrom_track_t track, const char *program_name,5.17 + unsigned char *buffer, gboolean unscramble )5.18 +{5.19 + gboolean rv = TRUE;5.20 +5.21 + IsoImageFilesystem *iso = iso_filesystem_new_from_track( disc, track, NULL );5.22 + if( iso == NULL ) {5.23 + ERROR( "Disc is not bootable (invalid ISO9660 filesystem)" );5.24 + return FALSE;5.25 + }5.26 + IsoFileSource *file = NULL;5.27 + int status = iso->get_by_path(iso, program_name, &file );5.28 + if( status != 1 ) {5.29 + ERROR( "Disc is not bootable (initial program '%s' not found)", program_name );5.30 + iso_filesystem_unref(iso);5.31 + return FALSE;5.32 + }5.33 +5.34 + struct stat st;5.35 + if( iso_file_source_stat(file, &st) == 1 ) {5.36 + if( st.st_size > (0x8D000000 - BINARY_LOAD_ADDR) ) {5.37 + ERROR( "Disc is not bootable (Initial program is too large to fit into memory)" );5.38 + rv = FALSE;5.39 + } else if( iso_file_source_open(file) == 1 ) {5.40 + size_t len;5.41 + if( unscramble ) {5.42 + char *tmp = g_malloc(st.st_size);5.43 + len = iso_file_source_read(file, tmp, st.st_size);5.44 + bootprogram_unscramble(buffer, tmp, st.st_size);5.45 + g_free(tmp);5.46 + } else {5.47 + len = iso_file_source_read(file, buffer, st.st_size);5.48 + }5.49 +5.50 + if( len != st.st_size ) {5.51 + ERROR( "Disc is not bootable (Unable to read initial program '%s')", program_name );5.52 + rv = FALSE;5.53 + }5.54 + iso_file_source_close(file);5.55 + }5.56 + } else {5.57 + ERROR( "Disc is not bootable (Unable to get size of initial program '%s')", program_name );5.58 + rv = FALSE;5.59 + }5.60 +5.61 + iso_file_source_unref(file);5.62 + iso_filesystem_unref(iso);5.63 + return rv;5.64 +}5.65 +5.66 gboolean bios_boot_gdrom_disc( void )5.67 {5.68 cdrom_disc_t disc = gdrom_get_current_disc();5.69 @@ -427,56 +477,19 @@5.70 }5.72 /* Get the initial program from the bootstrap (usually 1ST_READ.BIN) */5.73 - char program_name[17];5.74 - memcpy(program_name, metadata->boot_file, 16);5.75 - program_name[16] = '\0';5.76 - for( int i=15; i >= 0 && program_name[i] == ' '; i-- ) {5.77 + char program_name[18] = "/";5.78 + memcpy(program_name+1, metadata->boot_file, 16);5.79 + program_name[17] = '\0';5.80 + for( int i=16; i >= 0 && program_name[i] == ' '; i-- ) {5.81 program_name[i] = '\0';5.82 }5.84 /* Bootstrap is good. Now find the program in the actual filesystem... */5.85 - isofs_reader_t iso = isofs_reader_new_from_track( disc, track, NULL );5.86 - if( iso == NULL ) {5.87 - ERROR( "Disc is not bootable" );5.88 + unsigned char *program = mem_get_region(BINARY_LOAD_ADDR);5.89 + gboolean isGDROM = (disc->disc_type == CDROM_DISC_GDROM );5.90 + if( !bios_load_ipl( disc, track, program_name, program, !isGDROM ) )5.91 return FALSE;5.92 - }5.93 - isofs_reader_dirent_t ent = isofs_reader_get_file( iso, program_name );5.94 - if( ent == NULL ) {5.95 - ERROR( "Disc is not bootable (initial program '%s' not found)", program_name );5.96 - isofs_reader_destroy(iso);5.97 - return FALSE;5.98 - }5.99 -5.100 - if( ent->size > (0x8D000000 - BINARY_LOAD_ADDR) ) {5.101 - /* Bootstrap isn't going to fit in memory. Complain and abort */5.102 - ERROR( "Disc is not bootable (initial program too large)" );5.103 - isofs_reader_destroy(iso);5.104 - return FALSE;5.105 - }5.106 - unsigned char *program = mem_get_region(BINARY_LOAD_ADDR);5.107 - int program_sectors = (ent->size+2047)/2048;5.108 - if( disc->disc_type == CDROM_DISC_GDROM ) {5.109 - /* Load the binary directly into RAM */5.110 - if( isofs_reader_read_file( iso, ent, 0, ent->size, program ) !=5.111 - CDROM_ERROR_OK ) {5.112 - ERROR( "Disc is not bootable (failed to read initial program)\n" );5.113 - isofs_reader_destroy(iso);5.114 - return FALSE;5.115 - }5.116 - asic_enable_ide_interface(TRUE);5.117 - } else {5.118 - /* Load the binary into a temp buffer */5.119 - unsigned char tmp[program_sectors*2048];5.120 - if( isofs_reader_read_file( iso, ent, 0, ent->size, tmp ) !=5.121 - CDROM_ERROR_OK ) {5.122 - ERROR( "Disc is not bootable (failed to read initial program)\n" );5.123 - isofs_reader_destroy(iso);5.124 - return FALSE;5.125 - }5.126 - bootprogram_unscramble(program, tmp, ent->size);5.127 - asic_enable_ide_interface(FALSE);5.128 - }5.129 - isofs_reader_destroy(iso);5.130 + asic_enable_ide_interface(isGDROM);5.131 dreamcast_program_loaded( "", BOOTSTRAP_ENTRY_ADDR );5.132 return TRUE;5.133 }
6.1 --- a/src/drivers/cdrom/iso_impl.h Tue Mar 23 19:48:03 2010 +10006.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +00006.3 @@ -1,128 +0,0 @@6.4 -/**6.5 - * $Id$6.6 - *6.7 - * ISO9660 filesystem support6.8 - *6.9 - * Copyright (c) 2009 Nathan Keynes.6.10 - *6.11 - * This program is free software; you can redistribute it and/or modify6.12 - * it under the terms of the GNU General Public License as published by6.13 - * the Free Software Foundation; either version 2 of the License, or6.14 - * (at your option) any later version.6.15 - *6.16 - * This program is distributed in the hope that it will be useful,6.17 - * but WITHOUT ANY WARRANTY; without even the implied warranty of6.18 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the6.19 - * GNU General Public License for more details.6.20 - */6.21 -6.22 -#define ISO_SUPERBLOCK_OFFSET 166.23 -#define ISO_BOOT_DESCRIPTOR 06.24 -#define ISO_PRIMARY_DESCRIPTOR 16.25 -#define ISO_SECONDARY_DESCRIPTOR 26.26 -#define ISO_PARTITION_DESCRIPTOR 36.27 -#define ISO_TERMINAL_DESCRIPTOR 0xFF6.28 -6.29 -typedef struct iso_timestamp_full { /* 17 bytes */6.30 - char year[4];6.31 - char month[2];6.32 - char day[2];6.33 - char hour[2];6.34 - char minute[2];6.35 - char second[2];6.36 - char hundredths[2];6.37 - int8_t utc_offset; /* 15 min intervals from -48 to +52 7.1.2 */6.38 -} *iso_timestamp_full_t;6.39 -6.40 -typedef struct iso_timestamp { /* 7 bytes */6.41 - uint8_t year; /* Since 1900 */6.42 - uint8_t month; /* 1 .. 12 */6.43 - uint8_t day; /* 1 .. 31 */6.44 - uint8_t hour; /* 0 .. 23 */6.45 - uint8_t minute; /* 0 .. 59 */6.46 - uint8_t second; /* 0 .. 59 */6.47 - uint8_t utc_offset; /* 15 min intervals from -48 to +52 7.1.2 */6.48 -} *iso_timestamp_t;6.49 -6.50 -#define ISO_FILE_EXISTS 0x016.51 -#define ISO_FILE_DIR 0x026.52 -#define ISO_FILE_ASSOC 0x04 /* Associated file */6.53 -#define ISO_FILE_RECORD 0x08 /* Structure specified by XA record */6.54 -#define ISO_FILE_PROTECT 0x10 /* Permissions specified */6.55 -#define ISO_FILE_MULTIEXT 0x80 /* Multiple extents */6.56 -6.57 -typedef struct iso_dirent { /* 34+ bytes 9.1 */6.58 - uint8_t record_len;6.59 - uint8_t xa_record_len;6.60 - uint32_t file_lba_le, file_lba_be;6.61 - uint32_t file_size_le, file_size_be;6.62 - struct iso_timestamp timestamp;6.63 - uint8_t flags;6.64 - uint8_t unit_size;6.65 - uint8_t gap_size;6.66 - uint16_t volume_seq_le, volume_seq_be;6.67 - uint8_t file_id_len;6.68 - char file_id[1];6.69 -} __attribute__((packed)) *iso_dirent_t;6.70 -6.71 -typedef struct iso_pathtabrec { /* 8+ bytes 9.4 */6.72 - uint8_t record_len;6.73 - uint8_t xa_record_len;6.74 - uint32_t file_lba;6.75 - uint16_t parent_dir_no;6.76 - char file_id[];6.77 -} *iso_pathtabrec_t;6.78 -6.79 -typedef struct iso_xattrrec {6.80 - uint16_t uid_le, uid_be;6.81 - uint16_t gid_le, gid_be;6.82 - uint16_t permissions;6.83 - struct iso_timestamp_full create_time;6.84 - struct iso_timestamp_full modify_time;6.85 - struct iso_timestamp_full expiry_time;6.86 - struct iso_timestamp_full effective_time;6.87 - uint8_t record_format;6.88 - uint8_t record_attrs;6.89 - uint16_t record_len_le, record_len_be;6.90 - char system_id[32];6.91 - char system_use[64];6.92 - uint8_t record_version; /* Should be 1 */6.93 - uint8_t escape_len;6.94 - char reserved[64];6.95 - uint16_t app_use_len_le, app_use_len_be;6.96 - char app_use[];6.97 -} *iso_xattrrec_t;6.98 -6.99 -/** Primary Volume Descriptor */6.100 -typedef struct iso_pvd {6.101 - uint8_t desc_type;6.102 - char tag[5];6.103 - uint8_t desc_version;6.104 - char pad0;6.105 - char system_id[32];6.106 - char volume_id[32];6.107 - char pad1[8];6.108 - uint32_t volume_size_le, volume_size_be;6.109 - char pad2[32];6.110 - uint16_t volume_sets_le, volume_sets_be;6.111 - uint16_t volume_seq_le, volume_seq_be;6.112 - uint16_t block_size_le, block_size_be;6.113 - uint32_t pathtab_size_le, pathtab_size_be;6.114 - uint32_t pathtab_offset_le, pathtab2_offset_le;6.115 - uint32_t pathtab_offset_be, pathtab2_offset_be;6.116 - struct iso_dirent root_dirent;6.117 - char volume_set_id[128];6.118 - char publisher_id[128];6.119 - char preparer_id[128];6.120 - char app_id[128];6.121 - char copyright_file_id[37];6.122 - char abstract_file_id[37];6.123 - char biblio_file_id[37];6.124 - struct iso_timestamp_full create_time;6.125 - struct iso_timestamp_full modify_time;6.126 - struct iso_timestamp_full expiry_time;6.127 - struct iso_timestamp_full effective_time;6.128 - uint8_t fs_version; /* must be 1 */6.129 - char pad3[1166];6.130 -} *iso_pvd_t;6.131 -
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00007.2 +++ b/src/drivers/cdrom/isofs.c Mon May 17 22:01:23 2010 +10007.3 @@ -0,0 +1,188 @@7.4 +/**7.5 + * $Id$7.6 + *7.7 + * libisofs adapter7.8 + *7.9 + * Copyright (c) 2010 Nathan Keynes.7.10 + *7.11 + * This program is free software; you can redistribute it and/or modify7.12 + * it under the terms of the GNU General Public License as published by7.13 + * the Free Software Foundation; either version 2 of the License, or7.14 + * (at your option) any later version.7.15 + *7.16 + * This program is distributed in the hope that it will be useful,7.17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of7.18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the7.19 + * GNU General Public License for more details.7.20 + */7.21 +7.22 +#include <assert.h>7.23 +#include <glib/gmem.h>7.24 +7.25 +#define LIBISOFS_WITHOUT_LIBBURN 17.26 +7.27 +#include "drivers/cdrom/cdrom.h"7.28 +#include "drivers/cdrom/isofs.h"7.29 +7.30 +static int isofs_dummy_fn(IsoDataSource *src)7.31 +{7.32 + return 1;7.33 +}7.34 +7.35 +static int isofs_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)7.36 +{7.37 + sector_source_t source = (sector_source_t)src->data;7.38 + cdrom_error_t err = sector_source_read_sectors(source, lba, 1,7.39 + CDROM_READ_MODE2_FORM1|CDROM_READ_DATA, buffer, NULL );7.40 + if( err != CDROM_ERROR_OK ) {7.41 + return ISO_DATA_SOURCE_FAILURE;7.42 + }7.43 + return 1;7.44 +}7.45 +7.46 +static void isofs_release(IsoDataSource *src)7.47 +{7.48 + sector_source_unref((sector_source_t)src->data);7.49 +}7.50 +7.51 +static IsoDataSource *iso_data_source_new( sector_source_t source )7.52 +{7.53 + IsoDataSource *src = g_malloc0(sizeof(IsoDataSource));7.54 + src->refcount = 1;7.55 + src->open = isofs_dummy_fn;7.56 + src->close = isofs_dummy_fn;7.57 + src->read_block = isofs_read_block;7.58 + src->free_data = isofs_release;7.59 + src->data = source;7.60 + sector_source_ref(source);7.61 + return src;7.62 +}7.63 +7.64 +/**7.65 + * Construct an isofs image from an existing sector source.7.66 + */7.67 +IsoImage *iso_image_new_from_source( sector_source_t source, cdrom_lba_t start, ERROR *err )7.68 +{7.69 + IsoImage *iso = NULL;7.70 + IsoReadOpts *opts;7.71 + IsoDataSource *src;7.72 +7.73 + int status = iso_image_new(NULL, &iso);7.74 + if( status != 1 )7.75 + return NULL;7.76 +7.77 + status = iso_read_opts_new(&opts,0);7.78 + if( status != 1 ) {7.79 + iso_image_unref( iso );7.80 + return NULL;7.81 + }7.82 +7.83 + iso_read_opts_set_start_block(opts, start);7.84 + src = iso_data_source_new(source);7.85 + status = iso_image_import(iso, src, opts, NULL);7.86 + iso_data_source_unref(src);7.87 + iso_read_opts_free(opts);7.88 + if( status != 1 ) {7.89 + iso_image_unref(iso);7.90 + return NULL;7.91 + }7.92 + return iso;7.93 +}7.94 +7.95 +IsoImage *iso_image_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err )7.96 +{7.97 + return iso_image_new_from_source( &disc->source, start_sector, err );7.98 +}7.99 +7.100 +IsoImage *iso_image_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )7.101 +{7.102 + return iso_image_new_from_source( &disc->source, track->lba, err );7.103 +}7.104 +7.105 +7.106 +IsoImageFilesystem *iso_filesystem_new_from_source( sector_source_t source, cdrom_lba_t start, ERROR *err )7.107 +{7.108 + IsoImageFilesystem *iso = NULL;7.109 + IsoReadOpts *opts;7.110 + IsoDataSource *src;7.111 +7.112 + int status = iso_read_opts_new(&opts,0);7.113 + if( status != 1 ) {7.114 + return NULL;7.115 + }7.116 +7.117 + iso_read_opts_set_start_block(opts, start);7.118 + src = iso_data_source_new(source);7.119 + status = iso_image_filesystem_new(src, opts, 0x1FFFFF, &iso);7.120 + iso_data_source_unref(src);7.121 + iso_read_opts_free(opts);7.122 + if( status != 1 ) {7.123 + return NULL;7.124 + }7.125 + return iso;7.126 +7.127 +}7.128 +7.129 +IsoImageFilesystem *iso_filesystem_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err )7.130 +{7.131 + return iso_filesystem_new_from_source( &disc->source, start_sector, err );7.132 +}7.133 +7.134 +IsoImageFilesystem *iso_filesystem_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )7.135 +{7.136 + return iso_filesystem_new_from_source( &disc->source, track->lba, err );7.137 +}7.138 +7.139 +7.140 +/**7.141 + * Construct a sector source from a given IsoImage.7.142 + */7.143 +sector_source_t iso_sector_source_new( IsoImage *image, sector_mode_t mode, cdrom_lba_t start_sector,7.144 + const char *bootstrap, ERROR *err )7.145 +{7.146 + assert( mode == SECTOR_MODE1 || mode == SECTOR_MODE2_FORM1 );7.147 +7.148 + IsoWriteOpts *opts;7.149 + struct burn_source *burn;7.150 +7.151 + int status = iso_write_opts_new(&opts, 0);7.152 + if( status != 1 )7.153 + return NULL;7.154 + iso_write_opts_set_appendable(opts,0);7.155 + iso_write_opts_set_ms_block(opts, start_sector);7.156 + iso_write_opts_set_system_area(opts, (char *)bootstrap, 0, 0);7.157 +7.158 + status = iso_image_create_burn_source(image, opts, &burn);7.159 + iso_write_opts_free(opts);7.160 + if( status != 1 ) {7.161 + return NULL;7.162 + }7.163 +7.164 + off_t size = burn->get_size(burn);7.165 + sector_source_t source = tmpfile_sector_source_new(mode);7.166 + if( source == NULL ) {7.167 + burn->free_data(burn);7.168 + free(burn);7.169 + return NULL;7.170 + }7.171 +7.172 + char buf[2048];7.173 + cdrom_count_t expect = size/2048;7.174 + cdrom_count_t count = 0;7.175 + for( cdrom_count_t count = 0; count < expect; count++ ) {7.176 + status = burn->read(burn, buf, 2048);7.177 + if( status == 0 ) {7.178 + /* EOF */7.179 + break;7.180 + } else if( status != 2048 ) {7.181 + /* Error */7.182 + sector_source_unref(source);7.183 + source = NULL;7.184 + break;7.185 + }7.186 + }7.187 + burn->free_data(burn);7.188 + free(burn);7.189 + return source;7.190 +}7.191 +
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00008.2 +++ b/src/drivers/cdrom/isofs.h Mon May 17 22:01:23 2010 +10008.3 @@ -0,0 +1,58 @@8.4 +/**8.5 + * $Id$8.6 + *8.7 + * libisofs adapter8.8 + *8.9 + * Copyright (c) 2010 Nathan Keynes.8.10 + *8.11 + * This program is free software; you can redistribute it and/or modify8.12 + * it under the terms of the GNU General Public License as published by8.13 + * the Free Software Foundation; either version 2 of the License, or8.14 + * (at your option) any later version.8.15 + *8.16 + * This program is distributed in the hope that it will be useful,8.17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of8.18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the8.19 + * GNU General Public License for more details.8.20 + */8.21 +8.22 +#ifndef cdrom_isofs_H8.23 +#define cdrom_isofs_H 18.24 +8.25 +#include <libisofs/libisofs.h>8.26 +#include "drivers/cdrom/sector.h"8.27 +8.28 +/**8.29 + * Construct an IsoFilesystem from an existing sector source8.30 + */8.31 +IsoImageFilesystem *iso_filesystem_new_from_source( sector_source_t track, cdrom_lba_t start, ERROR *err );8.32 +IsoImageFilesystem *iso_filesystem_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start, ERROR *err );8.33 +IsoImageFilesystem *iso_filesystem_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );8.34 +8.35 +8.36 +/**8.37 + * Convenience function to read an entire IsoFileSource8.38 + */8.39 +int iso_source_file_read_all( IsoFileSource *file, unsigned char *buf, size_t max_size );8.40 +8.41 +/**8.42 + * Construct an IsoImage image from an existing sector source, for use in8.43 + * creating a modified image8.44 + */8.45 +IsoImage *iso_image_new_from_source( sector_source_t track, cdrom_lba_t start, ERROR *err );8.46 +8.47 +/**8.48 + * Construct an IsoImage from a cdrom disc and sector position.8.49 + * @return a new isofs_reader, or NULL on an error.8.50 + */8.51 +IsoImage *iso_image_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err );8.52 +8.53 +IsoImage *iso_image_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );8.54 +8.55 +/**8.56 + * Construct a sector source from a given IsoImage.8.57 + */8.58 +sector_source_t iso_sector_source_new( IsoImage *image, sector_mode_t mode, cdrom_lba_t start_sector,8.59 + const char *bootstrap, ERROR *err );8.60 +8.61 +#endif /* !cdrom_isofs_H */
9.1 --- a/src/drivers/cdrom/isoread.c Tue Mar 23 19:48:03 2010 +10009.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +00009.3 @@ -1,392 +0,0 @@9.4 -/**9.5 - * $Id$9.6 - *9.7 - * ISO9660 filesystem reading support9.8 - *9.9 - * Copyright (c) 2010 Nathan Keynes.9.10 - *9.11 - * This program is free software; you can redistribute it and/or modify9.12 - * it under the terms of the GNU General Public License as published by9.13 - * the Free Software Foundation; either version 2 of the License, or9.14 - * (at your option) any later version.9.15 - *9.16 - * This program is distributed in the hope that it will be useful,9.17 - * but WITHOUT ANY WARRANTY; without even the implied warranty of9.18 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the9.19 - * GNU General Public License for more details.9.20 - */9.21 -9.22 -#include "drivers/cdrom/cdrom.h"9.23 -#include "drivers/cdrom/isoread.h"9.24 -#include "drivers/cdrom/iso_impl.h"9.25 -9.26 -#include <string.h>9.27 -#include <errno.h>9.28 -9.29 -static char isofs_magic[5] = { 'C', 'D', '0', '0', '1' };9.30 -9.31 -#define ISO_DIR_TAG 0x524944499.32 -9.33 -struct isofs_reader_dir {9.34 - uint32_t tag;9.35 - isofs_reader_dir_t parent;9.36 - size_t num_entries;9.37 - struct isofs_reader_dirent entries[];9.38 -};9.39 -9.40 -struct isofs_reader {9.41 - /**9.42 - * Base sector source to read the filesystem from (must support Mode 1 reads)9.43 - */9.44 - sector_source_t source;9.45 -9.46 - /**9.47 - * Offset of the source relative to the start of the (notional) disc -9.48 - * this is subtracted from all source lba addresses.9.49 - */9.50 - cdrom_lba_t source_offset;9.51 -9.52 - /**9.53 - * Start of the ISO9660 filesystem relative to the start of the disc.9.54 - * (The actual superblock is at fs_start+16)9.55 - */9.56 - cdrom_lba_t fs_start;9.57 -9.58 - /**9.59 - * If TRUE, read the little-endian side of the FS, otherwise the big-endian9.60 - * side. (They should normally give the same result, but in case it matters...)9.61 - */9.62 - gboolean little_endian;9.63 -9.64 - /**9.65 - * The volume sequence number, for multi-volume sets.9.66 - */9.67 - uint16_t volume_seq_no;9.68 -9.69 - char volume_label[33];9.70 -9.71 - /**9.72 - * Filesystem root directory9.73 - */9.74 - isofs_reader_dir_t root_dir;9.75 -};9.76 -9.77 -/**9.78 - * Read a 16-bit dual-endian field using the defined endianness of the reader9.79 - */9.80 -#define ISO_GET_DE16( iso, field ) \9.81 - ( ((iso)->little_endian) ? GINT16_FROM_LE(field) : GINT16_FROM_BE(*((&field)+1)) )9.82 -9.83 -/**9.84 - * Read a 32-bit dual-endian field using the defined endianness of the reader9.85 - */9.86 -#define ISO_GET_DE32( iso, field ) \9.87 - ( ((iso)->little_endian) ? GINT32_FROM_LE(field) : GINT32_FROM_BE(*((&field)+1)) )9.88 -9.89 -9.90 -static void isofs_reader_convert_dirent( isofs_reader_t iso, isofs_reader_dirent_t dest, iso_dirent_t src,9.91 - char **strp )9.92 -{9.93 - dest->start_lba = ISO_GET_DE32(iso, src->file_lba_le);9.94 - dest->size = ISO_GET_DE32(iso, src->file_size_le);9.95 - dest->is_dir = (src->flags & ISO_FILE_DIR) ? TRUE : FALSE;9.96 - dest->interleave_gap = src->gap_size;9.97 - dest->interleave_size = src->unit_size;9.98 - dest->name = *strp;9.99 - memcpy( *strp, src->file_id, src->file_id_len );9.100 - (*strp)[src->file_id_len] = '\0';9.101 - *strp += src->file_id_len + 1;9.102 -}9.103 -9.104 -/**9.105 - * Read a directory from the disc into memory.9.106 - */9.107 -isofs_reader_dir_t isofs_reader_read_dir( isofs_reader_t iso, cdrom_lba_t lba, size_t size )9.108 -{9.109 - cdrom_count_t count = (size+2047)/2048;9.110 -9.111 - char buf[count*2048];9.112 -9.113 - if( isofs_reader_read_sectors( iso, lba, count, buf ) != CDROM_ERROR_OK )9.114 - return NULL;9.115 -9.116 - size_t len = 0;9.117 - unsigned num_entries = 0, i=0, offset=0;9.118 - /* Compute number of entries and total string length */9.119 - while( offset < size ) {9.120 - struct iso_dirent *p = (struct iso_dirent *)&buf[offset];9.121 - offset += p->record_len;9.122 - if( offset > size || p->record_len < sizeof(struct iso_dirent) )9.123 - break; // Bad record length9.124 - if( p->file_id_len + sizeof(struct iso_dirent)-1 > p->record_len )9.125 - break; // Bad fileid length9.126 - if( p->file_id_len == 1 && (p->file_id[0] == 0 || p->file_id[0] == 1 ) )9.127 - continue; /* self and parent-dir references */9.128 - num_entries++;9.129 - len += p->file_id_len + 1;9.130 - }9.131 -9.132 - size_t table_len = num_entries * sizeof(struct isofs_reader_dirent);9.133 - isofs_reader_dir_t dir = g_malloc0( sizeof(struct isofs_reader_dir) + table_len + len );9.134 - dir->tag = ISO_DIR_TAG;9.135 - dir->num_entries = num_entries;9.136 -9.137 - char *strp = (char *)&dir->entries[num_entries];9.138 - offset = 0;9.139 - for( i=0; i < num_entries; i++ ) {9.140 - struct iso_dirent *p;9.141 - do {9.142 - p = (struct iso_dirent *)&buf[offset];9.143 - offset += p->record_len;9.144 - /* Skip over self and parent-dir references */9.145 - } while( p->file_id_len == 1 && (p->file_id[0] == 0 || p->file_id[0] == 1 ) );9.146 -9.147 - isofs_reader_convert_dirent( iso, &dir->entries[i], p, &strp );9.148 -9.149 - }9.150 - return dir;9.151 -}9.152 -9.153 -static gboolean isofs_reader_dirent_match_exact( const char *file, const char *find )9.154 -{9.155 - return strcasecmp( file, find ) == 0;9.156 -}9.157 -9.158 -static gboolean isofs_reader_dirent_match_unversioned( const char *file, const char *find )9.159 -{9.160 - char *semi = strchr(file, ';');9.161 - if( semi == NULL ) {9.162 - /* Unversioned ISO file */9.163 - return strcasecmp( file, find ) == 0;9.164 - } else {9.165 - int len = semi - file;9.166 - return strncasecmp( file, find, len ) == 0 && strlen(find) == len;9.167 - }9.168 -}9.169 -9.170 -/**9.171 - * Search a directory for a given filename. If found, return the corresponding9.172 - * dirent structure, otherwise NULL. Comparison is case-insensitive, and returns9.173 - * the most recent (highest numbered) version of a file in case of multiple9.174 - * versions unless the requested component is also explicitly versioned.9.175 - *9.176 - * For now just do a linear search, although we could do a binary search given9.177 - * that the directory should be sorted.9.178 - */9.179 -static isofs_reader_dirent_t isofs_reader_get_file_component( isofs_reader_dir_t dir, const char *component )9.180 -{9.181 -9.182 - if( strchr( component, ';' ) != NULL ) {9.183 - for( unsigned i=0; i<dir->num_entries; i++ ) {9.184 - if( isofs_reader_dirent_match_exact(dir->entries[i].name,component) ) {9.185 - return &dir->entries[i];9.186 - }9.187 - }9.188 - } else {9.189 - for( unsigned i=0; i<dir->num_entries; i++ ) {9.190 - if( isofs_reader_dirent_match_unversioned(dir->entries[i].name,component) ) {9.191 - return &dir->entries[i];9.192 - }9.193 - }9.194 - }9.195 - return NULL;9.196 -}9.197 -9.198 -isofs_reader_dirent_t isofs_reader_get_file( isofs_reader_t iso, const char *pathname )9.199 -{9.200 - int pathlen = strlen(pathname);9.201 - char tmp[pathlen+1];9.202 - char *p = tmp;9.203 - isofs_reader_dir_t dir = iso->root_dir;9.204 -9.205 - memcpy( tmp, pathname, pathlen+1 );9.206 - char *q = strchr(p, '/');9.207 - while( q != NULL ) {9.208 - *q = '\0';9.209 - isofs_reader_dirent_t ent = isofs_reader_get_file_component( dir, p );9.210 - if( ent == NULL || !ent->is_dir ) {9.211 - return NULL;9.212 - }9.213 - if( ent->subdir == NULL ) {9.214 - ent->subdir = dir = isofs_reader_read_dir( iso, ent->start_lba, ent->size );9.215 - if( dir == NULL ) {9.216 - return NULL;9.217 - }9.218 - }9.219 -9.220 - p = q+1;9.221 - q = strchr(p, '/');9.222 -9.223 - }9.224 - return isofs_reader_get_file_component( dir, p );9.225 -}9.226 -9.227 -cdrom_error_t isofs_reader_read_file( isofs_reader_t iso, isofs_reader_dirent_t file,9.228 - size_t offset, size_t byte_count, unsigned char *buf )9.229 -{9.230 - char tmp[2048];9.231 -9.232 - if( offset + byte_count > file->size )9.233 - return CDROM_ERROR_BADREAD;9.234 -9.235 - if( file->interleave_gap == 0 ) {9.236 - cdrom_lba_t lba = file->start_lba + (offset>>11);9.237 - lba += ((file->xa_size+2047)>>11); /* Skip XA record if present */9.238 -9.239 - if( (offset & 2047) != 0 ) {9.240 - /* Read an unaligned start block */9.241 - cdrom_error_t status = isofs_reader_read_sectors( iso, lba, 1, tmp );9.242 - if( status != CDROM_ERROR_OK )9.243 - return status;9.244 - unsigned align = offset & 2047;9.245 - size_t length = 2048 - align;9.246 - if( length >= byte_count ) {9.247 - memcpy( buf, &tmp[align], byte_count );9.248 - return CDROM_ERROR_OK;9.249 - } else {9.250 - memcpy( buf, &tmp[align], length );9.251 - byte_count -= length;9.252 - buf += length;9.253 - lba++;9.254 - }9.255 - }9.256 - /* Read the bulk of the data */9.257 - cdrom_count_t sector_count = byte_count >> 11;9.258 - if( sector_count > 0 ) {9.259 - cdrom_error_t status = isofs_reader_read_sectors( iso, lba, sector_count, buf );9.260 - if( status != CDROM_ERROR_OK )9.261 - return status;9.262 - buf += (sector_count << 11);9.263 - lba += sector_count;9.264 - }9.265 - /* Finally read a partial final block */9.266 - if( (byte_count & 2047) != 0 ) {9.267 - cdrom_error_t status = isofs_reader_read_sectors( iso, lba, 1, tmp );9.268 - if( status != CDROM_ERROR_OK )9.269 - return status;9.270 - memcpy( buf, tmp, byte_count & 2047 );9.271 - }9.272 - return CDROM_ERROR_OK;9.273 - } else {9.274 - // ERROR("Interleaved files not supported");9.275 - return CDROM_ERROR_BADREAD;9.276 - }9.277 -}9.278 -9.279 -void isofs_reader_destroy_dir( isofs_reader_dir_t dir )9.280 -{9.281 - dir->tag = 0;9.282 - for( unsigned i=0; i<dir->num_entries; i++ ) {9.283 - if( dir->entries[i].subdir != NULL ) {9.284 - isofs_reader_dir_t subdir = dir->entries[i].subdir;9.285 - dir->entries[i].subdir = NULL;9.286 - isofs_reader_destroy_dir(dir);9.287 - }9.288 - }9.289 - g_free(dir);9.290 -}9.291 -9.292 -cdrom_error_t isofs_reader_read_sectors( isofs_reader_t iso, cdrom_lba_t lba, cdrom_count_t count,9.293 - unsigned char *buf )9.294 -{9.295 - if( lba < iso->source_offset )9.296 - return CDROM_ERROR_BADREAD;9.297 - return sector_source_read_sectors( iso->source, lba - iso->source_offset, count,9.298 - CDROM_READ_MODE2_FORM1|CDROM_READ_DATA, buf, NULL );9.299 -}9.300 -9.301 -9.302 -isofs_reader_t isofs_reader_new( sector_source_t source, cdrom_lba_t offset, cdrom_lba_t start, ERROR *err )9.303 -{9.304 - char buf[2048];9.305 - iso_pvd_t pvd = (iso_pvd_t)&buf;9.306 - unsigned i = 0;9.307 -9.308 - isofs_reader_t iso = g_malloc0( sizeof(struct isofs_reader) );9.309 - if( iso == NULL ) {9.310 - SET_ERROR( err, ENOMEM, "Unable to allocate memory" );9.311 - return NULL;9.312 - }9.313 - iso->source = source;9.314 - iso->source_offset = offset;9.315 - iso->fs_start = start;9.316 - iso->little_endian = TRUE;9.317 -9.318 - do {9.319 - /* Find the primary volume descriptor */9.320 - cdrom_error_t status = isofs_reader_read_sectors( iso, iso->fs_start + ISO_SUPERBLOCK_OFFSET + i, 1, buf );9.321 - if( status != CDROM_ERROR_OK ) {9.322 - SET_ERROR( err, EBADF, "Unable to read superblock from ISO9660 filesystem" );9.323 - g_free(iso);9.324 - return NULL;9.325 - }9.326 - if( memcmp(pvd->tag, isofs_magic, 5) != 0 || /* Not an ISO volume descriptor */9.327 - pvd->desc_type == ISO_TERMINAL_DESCRIPTOR ) { /* Reached the end of the descriptor list */9.328 - SET_ERROR( err, EINVAL, "ISO9660 filesystem not found" );9.329 - g_free(iso);9.330 - return NULL;9.331 - }9.332 - i++;9.333 - } while( pvd->desc_type != ISO_PRIMARY_DESCRIPTOR );9.334 -9.335 - if( pvd->desc_version != 1 ) {9.336 - SET_ERROR( err, EINVAL, "Incompatible ISO9660 filesystem" );9.337 - g_free(iso);9.338 - return NULL;9.339 - }9.340 -9.341 - iso->volume_seq_no = ISO_GET_DE16(iso, pvd->volume_seq_le);9.342 - memcpy( iso->volume_label, pvd->volume_id, 32 );9.343 - for( i=32; i>0 && iso->volume_label[i-1] == ' '; i-- );9.344 - iso->volume_label[i] = '\0';9.345 -9.346 - iso->root_dir = isofs_reader_read_dir( iso,9.347 - ISO_GET_DE32(iso, pvd->root_dirent.file_lba_le),9.348 - ISO_GET_DE32(iso, pvd->root_dirent.file_size_le) );9.349 - if( iso->root_dir == NULL ) {9.350 - SET_ERROR( err, EINVAL, "Unable to read root directory from ISO9660 filesystem" );9.351 - g_free(iso);9.352 - return NULL;9.353 - }9.354 -9.355 - sector_source_ref( source );9.356 - return iso;9.357 -}9.358 -9.359 -isofs_reader_t isofs_reader_new_from_disc( cdrom_disc_t disc, cdrom_lba_t lba, ERROR *err )9.360 -{9.361 - return isofs_reader_new( &disc->source, 0, lba, err );9.362 -}9.363 -9.364 -isofs_reader_t isofs_reader_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err )9.365 -{9.366 - return isofs_reader_new( &disc->source, 0, track->lba, err );9.367 -}9.368 -9.369 -isofs_reader_t isofs_reader_new_from_source( sector_source_t source, ERROR *err )9.370 -{9.371 - return isofs_reader_new( source, 0, 0, err );9.372 -}9.373 -9.374 -void isofs_reader_destroy( isofs_reader_t iso )9.375 -{9.376 - isofs_reader_destroy_dir( iso->root_dir );9.377 - iso->root_dir = NULL;9.378 - sector_source_unref( iso->source );9.379 - iso->source = NULL;9.380 - g_free( iso );9.381 -}9.382 -9.383 -isofs_reader_dir_t isofs_reader_get_root_dir( isofs_reader_t iso )9.384 -{9.385 - return iso->root_dir;9.386 -}9.387 -9.388 -void isofs_reader_print_dir( FILE *f, isofs_reader_dir_t dir )9.389 -{9.390 - fprintf( f, "Total %d files\n", dir->num_entries );9.391 - for( unsigned i=0; i<dir->num_entries; i++ ) {9.392 - fprintf( f, "%7d %s\n", dir->entries[i].size, dir->entries[i].name );9.393 - }9.394 -9.395 -}
10.1 --- a/src/drivers/cdrom/isoread.h Tue Mar 23 19:48:03 2010 +100010.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +000010.3 @@ -1,95 +0,0 @@10.4 -/**10.5 - * $Id$10.6 - *10.7 - * ISO9660 filesystem reading support10.8 - *10.9 - * Copyright (c) 2010 Nathan Keynes.10.10 - *10.11 - * This program is free software; you can redistribute it and/or modify10.12 - * it under the terms of the GNU General Public License as published by10.13 - * the Free Software Foundation; either version 2 of the License, or10.14 - * (at your option) any later version.10.15 - *10.16 - * This program is distributed in the hope that it will be useful,10.17 - * but WITHOUT ANY WARRANTY; without even the implied warranty of10.18 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the10.19 - * GNU General Public License for more details.10.20 - */10.21 -10.22 -10.23 -#ifndef cdrom_isoread_H10.24 -#define cdrom_isoread_H 110.25 -10.26 -#include "drivers/cdrom/defs.h"10.27 -10.28 -#ifdef __cplusplus10.29 -extern "C" {10.30 -#endif10.31 -10.32 -typedef struct isofs_reader_dir *isofs_reader_dir_t;10.33 -10.34 -typedef struct isofs_reader_dirent {10.35 - const char *name;10.36 - size_t size;10.37 - gboolean is_dir;10.38 -10.39 - cdrom_lba_t start_lba;10.40 - size_t xa_size;10.41 - unsigned interleave_gap;10.42 - unsigned interleave_size;10.43 - isofs_reader_dir_t subdir;10.44 -} *isofs_reader_dirent_t;10.45 -10.46 -/**10.47 - * ISO9600 filesystem reader.10.48 - */10.49 -typedef struct isofs_reader *isofs_reader_t;10.50 -10.51 -/**10.52 - * Construct an isofs reader from an existing sector source. On error, returns10.53 - * NULL.10.54 - */10.55 -isofs_reader_t isofs_reader_new_from_source( sector_source_t track, ERROR *err );10.56 -10.57 -/**10.58 - * Construct an isofs from a cdrom disc and sector position.10.59 - * @return a new isofs_reader, or NULL on an error (and sets err).10.60 - */10.61 -isofs_reader_t isofs_reader_new_from_disc( cdrom_disc_t disc, cdrom_lba_t start_sector, ERROR *err );10.62 -10.63 -isofs_reader_t isofs_reader_new_from_track( cdrom_disc_t disc, cdrom_track_t track, ERROR *err );10.64 -10.65 -/**10.66 - * Destroy an isofs reader.10.67 - */10.68 -void isofs_reader_destroy( isofs_reader_t reader );10.69 -10.70 -/**10.71 - * Read 0 or more 2048-byte sectors from the filesystem.10.72 - */10.73 -cdrom_error_t isofs_reader_read_sectors( isofs_reader_t iso, cdrom_lba_t sector, cdrom_count_t count,10.74 - unsigned char *buf );10.75 -10.76 -10.77 -/**10.78 - * Search the filesystem for the specific fully-qualified file.10.79 - * @return FALSE if the file could not be found, otherwise TRUE and the iterator10.80 - * is updated to point to the requested file.10.81 - */10.82 -isofs_reader_dirent_t isofs_reader_get_file( isofs_reader_t iso, const char *filename );10.83 -10.84 -cdrom_error_t isofs_reader_read_file( isofs_reader_t iso, isofs_reader_dirent_t file,10.85 - size_t offset, size_t byte_count, unsigned char *buf );10.86 -10.87 -/**10.88 - * Print an isofs directory to the given stream (mostly for debugging purposes)10.89 - */10.90 -void isofs_reader_print_dir( FILE *f, isofs_reader_dir_t dir );10.91 -10.92 -isofs_reader_dir_t isofs_reader_get_root_dir( isofs_reader_t iso );10.93 -10.94 -#ifdef __cplusplus10.95 -}10.96 -#endif10.97 -10.98 -#endif /* !cdrom_isoread_H */
11.1 --- a/src/drivers/cdrom/sector.c Tue Mar 23 19:48:03 2010 +100011.2 +++ b/src/drivers/cdrom/sector.c Mon May 17 22:01:23 2010 +100011.3 @@ -25,6 +25,7 @@11.4 #include <unistd.h>11.5 #include <fcntl.h>11.7 +#include "lxpaths.h"11.8 #include "drivers/cdrom/sector.h"11.9 #include "drivers/cdrom/cdrom.h"11.10 #include "drivers/cdrom/ecc.h"11.11 @@ -534,6 +535,139 @@11.12 fref->closeOnDestroy = closeOnDestroy;11.13 }11.15 +/********************** Temporary file implementation ************************/11.16 +/**11.17 + * The tmpfile source behaves exactly like a regular file source, except that11.18 + * it creates a new temporary file, which is deleted on destruction or program11.19 + * exit. The file is initially empty, so the user will need to get the fd and11.20 + * write something to it before use.11.21 + */11.22 +11.23 +typedef struct tmpfile_sector_source {11.24 + struct file_sector_source file;11.25 + const char *filename;11.26 +} *tmpfile_sector_source_t;11.27 +11.28 +static GList *tmpfile_open_list = NULL;11.29 +static gboolean tmpfile_atexit_installed = 0; /* TRUE to indicate atexit hook is registered */11.30 +11.31 +/**11.32 + * atexit hook to destroy any open tmpfiles - make sure they're deleted.11.33 + */11.34 +static void tmpfile_atexit_hook(void)11.35 +{11.36 + GList *ptr;11.37 + while( tmpfile_open_list != NULL ) {11.38 + sector_source_t source = (sector_source_t)tmpfile_open_list->data;11.39 + source->destroy(source);11.40 + assert( tmpfile_open_list == NULL || tmpfile_open_list->data != source );11.41 + }11.42 +}11.43 +11.44 +11.45 +static void tmpfile_sector_source_destroy( sector_source_t dev )11.46 +{11.47 + assert( IS_SECTOR_SOURCE_TYPE(dev,FILE_SECTOR_SOURCE) );11.48 + tmpfile_sector_source_t fdev = (tmpfile_sector_source_t)dev;11.49 +11.50 + fclose( fdev->file.file );11.51 + fdev->file.file = NULL;11.52 + unlink(fdev->filename);11.53 + g_free((char *)fdev->filename);11.54 + tmpfile_open_list = g_list_remove(tmpfile_open_list, fdev);11.55 + default_sector_source_destroy(dev);11.56 +}11.57 +11.58 +sector_source_t tmpfile_sector_source_new( sector_mode_t mode )11.59 +{11.60 + if( !tmpfile_atexit_installed ) {11.61 + atexit(tmpfile_atexit_hook);11.62 + }11.63 +11.64 + gchar *tmpdir = getenv("TMPDIR");11.65 + if( tmpdir == NULL ) {11.66 + tmpdir = "/tmp";11.67 + }11.68 + gchar *tempfile = get_filename_at(tmpdir, "cd.XXXXXXX");11.69 + int fd = mkstemp( tempfile );11.70 + if( fd == -1 ) {11.71 + g_free(tempfile);11.72 + return FALSE;11.73 + }11.74 +11.75 + FILE *f = fdopen( fd, "w+" );11.76 + if( f == NULL ) {11.77 + close(fd);11.78 + unlink(tempfile);11.79 + g_free(tempfile);11.80 + return NULL;11.81 + }11.82 +11.83 + tmpfile_sector_source_t dev = g_malloc0(sizeof(struct tmpfile_sector_source));11.84 + dev->file.file = f;11.85 + dev->filename = tempfile;11.86 + sector_source_t source = sector_source_init( &dev->file.dev, FILE_SECTOR_SOURCE, mode, 0, file_sector_source_read, tmpfile_sector_source_destroy );11.87 + tmpfile_open_list = g_list_append(tmpfile_open_list, source);11.88 +}11.89 +11.90 +/************************ Memory device implementation *************************/11.91 +typedef struct mem_sector_source {11.92 + struct sector_source dev;11.93 + unsigned char *buffer;11.94 + gboolean freeOnDestroy;11.95 +} *mem_sector_source_t;11.96 +11.97 +static void mem_sector_source_destroy( sector_source_t dev )11.98 +{11.99 + assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );11.100 + mem_sector_source_t mdev = (mem_sector_source_t)dev;11.101 +11.102 + if( mdev->freeOnDestroy ) {11.103 + free(mdev->buffer);11.104 + }11.105 + mdev->buffer = NULL;11.106 + default_sector_source_destroy(dev);11.107 +}11.108 +11.109 +static cdrom_error_t mem_sector_source_read( sector_source_t dev, cdrom_lba_t lba, cdrom_count_t block_count, unsigned char *buf )11.110 +{11.111 + assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );11.112 + mem_sector_source_t mdev = (mem_sector_source_t)dev;11.113 +11.114 + if( (lba + block_count) >= dev->size )11.115 + return CDROM_ERROR_BADREAD;11.116 + uint32_t off = lba * CDROM_SECTOR_SIZE(dev->mode);11.117 + uint32_t size = block_count * CDROM_SECTOR_SIZE(dev->mode);11.118 +11.119 + memcpy( buf, mdev->buffer + off, size );11.120 + return CDROM_ERROR_OK;11.121 +}11.122 +11.123 +sector_source_t mem_sector_source_new_buffer( unsigned char *buffer, sector_mode_t mode,11.124 + cdrom_count_t sector_count, gboolean freeOnDestroy )11.125 +{11.126 + assert( mode != SECTOR_UNKNOWN );11.127 + assert( buffer != NULL );11.128 + mem_sector_source_t dev = g_malloc(sizeof(struct mem_sector_source));11.129 + dev->buffer = buffer;11.130 + dev->freeOnDestroy = freeOnDestroy;11.131 + return sector_source_init( &dev->dev, MEM_SECTOR_SOURCE, mode, sector_count, mem_sector_source_read, mem_sector_source_destroy );11.132 +}11.133 +11.134 +sector_source_t mem_sector_source_new( sector_mode_t mode, cdrom_count_t sector_count )11.135 +{11.136 + return mem_sector_source_new_buffer( g_malloc( sector_count * CDROM_SECTOR_SIZE(mode) ), mode,11.137 + sector_count, TRUE );11.138 +}11.139 +11.140 +unsigned char *mem_sector_source_get_buffer( sector_source_t dev )11.141 +{11.142 + assert( IS_SECTOR_SOURCE_TYPE(dev,MEM_SECTOR_SOURCE) );11.143 + mem_sector_source_t mdev = (mem_sector_source_t)dev;11.144 + return mdev->buffer;11.145 +}11.146 +11.147 +11.148 /************************ Track device implementation *************************/11.149 typedef struct track_sector_source {11.150 struct sector_source dev;
12.1 --- a/src/drivers/cdrom/sector.h Tue Mar 23 19:48:03 2010 +100012.2 +++ b/src/drivers/cdrom/sector.h Mon May 17 22:01:23 2010 +100012.3 @@ -33,6 +33,7 @@12.4 typedef enum {12.5 NULL_SECTOR_SOURCE,12.6 FILE_SECTOR_SOURCE,12.7 + MEM_SECTOR_SOURCE,12.8 DISC_SECTOR_SOURCE,12.9 TRACK_SECTOR_SOURCE12.10 } sector_source_type_t;12.11 @@ -56,7 +57,7 @@12.12 sector_source_type_t type;12.14 sector_mode_t mode; /* Implies sector size. */12.15 - uint32_t size; /* Block count */12.16 + cdrom_count_t size; /* Block count */12.18 /**12.19 * Read blocks from the device using the native block size.12.20 @@ -98,6 +99,12 @@12.21 sector_source_t file_sector_source_new_full( FILE *f, sector_mode_t mode, gboolean closeOnDestroy );12.23 /**12.24 + * Temp-file creator - initially empty. Creates a file in the system temp dir,12.25 + * unlinked on destruction or program exit.12.26 + */12.27 +sector_source_t tmpfile_sector_source_new( sector_mode_t mode );12.28 +12.29 +/**12.30 * Construct a file source that shares its file descriptor with another12.31 * file source.12.32 */12.33 @@ -119,6 +126,25 @@12.34 */12.35 int file_sector_source_get_fd( sector_source_t ref );12.37 +/** Construct a memory source with the given mode and size */12.38 +sector_source_t mem_sector_source_new( sector_mode_t mode, cdrom_count_t size );12.39 +12.40 +/**12.41 + * Construct a memory source using the supplied buffer for data.12.42 + * @param buffer The buffer to read from, which must be at least size * sector_size in length12.43 + * @param mode The sector mode of the data in the buffer, which cannot be SECTOR_UNKNOWN12.44 + * @param size Number of sectors in the buffer12.45 + * @param freeOnDestroy If true, the source owns the buffer and will release it when the12.46 + * source is destroyed.12.47 + */12.48 +sector_source_t mem_sector_source_new_buffer( unsigned char *buffer, sector_mode_t mode, cdrom_count_t size,12.49 + gboolean freeOnDestroy );12.50 +12.51 +/**12.52 + * Retrieve the underlying buffer for a memory source12.53 + */12.54 +unsigned char *mem_sector_source_get_buffer( sector_source_t source );12.55 +12.56 /**12.57 * Increment the reference count for a block device.12.58 */
13.1 --- a/src/main.c Tue Mar 23 19:48:03 2010 +100013.2 +++ b/src/main.c Mon May 17 22:01:23 2010 +100013.3 @@ -20,6 +20,7 @@13.4 #include <stdlib.h>13.5 #include <unistd.h>13.6 #include <getopt.h>13.7 +#include <libisofs/libisofs.h>13.8 #include "lxdream.h"13.9 #include "lxpaths.h"13.10 #include "gettext.h"13.11 @@ -224,6 +225,7 @@13.12 exit(0);13.13 }13.15 + iso_init();13.16 gdrom_list_init();13.17 vmulist_init();
14.1 --- a/src/test/testisoread.c Tue Mar 23 19:48:03 2010 +100014.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +000014.3 @@ -1,63 +0,0 @@14.4 -/**14.5 - * $Id$14.6 - *14.7 - * Unit tests for the ISO9660 filesystem reader14.8 - *14.9 - * Copyright (c) 2010 Nathan Keynes.14.10 - *14.11 - * This program is free software; you can redistribute it and/or modify14.12 - * it under the terms of the GNU General Public License as published by14.13 - * the Free Software Foundation; either version 2 of the License, or14.14 - * (at your option) any later version.14.15 - *14.16 - * This program is distributed in the hope that it will be useful,14.17 - * but WITHOUT ANY WARRANTY; without even the implied warranty of14.18 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14.19 - * GNU General Public License for more details.14.20 - */14.21 -14.22 -#include "drivers/cdrom/cdrom.h"14.23 -#include "drivers/cdrom/isoread.h"14.24 -#include <stdio.h>14.25 -14.26 -int main( int argc, char *argv[] )14.27 -{14.28 - if( argc < 2 ) {14.29 - fprintf( stderr, "Usage: testisoread <disc image>\n" );14.30 - return 1;14.31 - }14.32 -14.33 - ERROR err;14.34 - cdrom_disc_t disc = cdrom_disc_open(argv[1], &err);14.35 -14.36 - if( disc == NULL ) {14.37 - fprintf( stderr, "Unable to open disc image '%s': %s\n", argv[1], err.msg );14.38 - return 2;14.39 - }14.40 - cdrom_track_t track = cdrom_disc_get_last_data_track(disc);14.41 - if( track == NULL ) {14.42 - fprintf( stderr, "Disc has no data tracks\n" );14.43 - return 3;14.44 - }14.45 -14.46 - isofs_reader_t iso = isofs_reader_new_from_track( disc, track, &err );14.47 - if( iso == NULL ) {14.48 - fprintf( stderr, "Unable to open ISO filesystem: %s\n", err.msg );14.49 - return 4;14.50 - }14.51 - isofs_reader_print_dir( stdout, isofs_reader_get_root_dir(iso) );14.52 -14.53 - isofs_reader_dirent_t boot = isofs_reader_get_file( iso, "1st_read.bin" );14.54 - if( boot == NULL ) {14.55 - fprintf( stderr, "Unable to find 1st_read.bin" );14.56 - return 5;14.57 - }14.58 -14.59 - printf( "Bootstrap: %s (%d)\n", boot->name, boot->size );14.60 - char tmp[boot->size];14.61 - if( isofs_reader_read_file( iso, boot, 0, boot->size, tmp ) != CDROM_ERROR_OK ) {14.62 - fprintf( stderr, "Unable to read 1st_read.bin" );14.63 - return 6;14.64 - }14.65 - return 0;14.66 -}
.