revision 1152:6464d890cc9e
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 1152:6464d890cc9e |
parent | 1151:e1848ca9b5b1 |
child | 1153:00e507e4025c |
author | nkeynes |
date | Thu Dec 23 17:50:10 2010 +1000 (13 years ago) |
Clone iso_memory_stream_new() as iso_mem_stream_new(), since current
versions of libisofs have made it unlinkable on linux
versions of libisofs have made it unlinkable on linux
1.1 --- a/src/Makefile.am Wed Dec 08 18:33:23 2010 +10001.2 +++ b/src/Makefile.am Thu Dec 23 17:50:10 2010 +10001.3 @@ -73,7 +73,7 @@1.4 drivers/cdrom/edc_ecc.c drivers/cdrom/ecc.h drivers/cdrom/drive.c \1.5 drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \1.6 drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \1.7 - drivers/cdrom/isofs.h drivers/cdrom/isofs.c \1.8 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c drivers/cdrom/isomem.c \1.9 sh4/sh4.def sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \1.10 hotkeys.c hotkeys.h1.11 lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@
2.1 --- a/src/Makefile.in Wed Dec 08 18:33:23 2010 +10002.2 +++ b/src/Makefile.in Thu Dec 23 17:50:10 2010 +10002.3 @@ -175,11 +175,12 @@2.4 drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \2.5 drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \2.6 drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \2.7 - drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \2.8 - sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \2.9 - hotkeys.c hotkeys.h plugin.c plugin.h sh4/sh4x86.c \2.10 - xlat/x86/x86op.h xlat/x86/ia32abi.h xlat/x86/amd64abi.h \2.11 - sh4/sh4trans.c sh4/sh4trans.h sh4/mmux86.c x86dasm/x86dasm.c \2.12 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c \2.13 + drivers/cdrom/isomem.c sh4/sh4.def sh4/sh4core.in \2.14 + sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \2.15 + hotkeys.h plugin.c plugin.h sh4/sh4x86.c xlat/x86/x86op.h \2.16 + xlat/x86/ia32abi.h xlat/x86/amd64abi.h sh4/sh4trans.c \2.17 + sh4/sh4trans.h sh4/mmux86.c x86dasm/x86dasm.c \2.18 x86dasm/x86dasm.h x86dasm/i386-dis.c x86dasm/dis-init.c \2.19 x86dasm/dis-buf.c x86dasm/ansidecl.h x86dasm/bfd.h \2.20 x86dasm/dis-asm.h x86dasm/symcat.h x86dasm/sysdep.h \2.21 @@ -280,13 +281,14 @@2.22 lxdream-cd_nrg.$(OBJEXT) lxdream-cd_cdi.$(OBJEXT) \2.23 lxdream-cd_gdi.$(OBJEXT) lxdream-edc_ecc.$(OBJEXT) \2.24 lxdream-drive.$(OBJEXT) lxdream-cd_mmc.$(OBJEXT) \2.25 - lxdream-isofs.$(OBJEXT) lxdream-hotkeys.$(OBJEXT) \2.26 - $(am__objects_1) $(am__objects_2) $(am__objects_3) \2.27 - $(am__objects_4) $(am__objects_5) $(am__objects_6) \2.28 - $(am__objects_7) $(am__objects_8) $(am__objects_9) \2.29 - $(am__objects_10) $(am__objects_11) $(am__objects_12) \2.30 - $(am__objects_13) $(am__objects_14) $(am__objects_15) \2.31 - $(am__objects_16) $(am__objects_17) $(am__objects_18)2.32 + lxdream-isofs.$(OBJEXT) lxdream-isomem.$(OBJEXT) \2.33 + lxdream-hotkeys.$(OBJEXT) $(am__objects_1) $(am__objects_2) \2.34 + $(am__objects_3) $(am__objects_4) $(am__objects_5) \2.35 + $(am__objects_6) $(am__objects_7) $(am__objects_8) \2.36 + $(am__objects_9) $(am__objects_10) $(am__objects_11) \2.37 + $(am__objects_12) $(am__objects_13) $(am__objects_14) \2.38 + $(am__objects_15) $(am__objects_16) $(am__objects_17) \2.39 + $(am__objects_18)2.40 lxdream_OBJECTS = $(am_lxdream_OBJECTS)2.41 lxdream_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \2.42 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \2.43 @@ -595,15 +597,15 @@2.44 drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \2.45 drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \2.46 drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \2.47 - drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \2.48 - sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \2.49 - hotkeys.c hotkeys.h $(am__append_1) $(am__append_2) \2.50 - $(am__append_4) $(am__append_5) $(am__append_6) \2.51 - $(am__append_7) $(am__append_8) $(am__append_9) \2.52 - $(am__append_10) $(am__append_17) $(am__append_19) \2.53 - $(am__append_21) $(am__append_23) $(am__append_25) \2.54 - $(am__append_27) $(am__append_28) $(am__append_29) \2.55 - $(am__append_30)2.56 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c \2.57 + drivers/cdrom/isomem.c sh4/sh4.def sh4/sh4core.in \2.58 + sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c \2.59 + hotkeys.h $(am__append_1) $(am__append_2) $(am__append_4) \2.60 + $(am__append_5) $(am__append_6) $(am__append_7) \2.61 + $(am__append_8) $(am__append_9) $(am__append_10) \2.62 + $(am__append_17) $(am__append_19) $(am__append_21) \2.63 + $(am__append_23) $(am__append_25) $(am__append_27) \2.64 + $(am__append_28) $(am__append_29) $(am__append_30)2.65 lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@2.66 @BUILD_SH4X86_TRUE@test_testsh4x86_LDADD = @LXDREAM_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @LIBPNG_LIBS@2.67 @BUILD_SH4X86_TRUE@test_testsh4x86_CPPFLAGS = @LXDREAMCPPFLAGS@2.68 @@ -838,6 +840,7 @@2.69 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-io_osx.Po@am__quote@2.70 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-ioutil.Po@am__quote@2.71 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isofs.Po@am__quote@2.72 +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-isomem.Po@am__quote@2.73 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-joy_linux.Po@am__quote@2.74 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-kbd.Po@am__quote@2.75 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-lightgun.Po@am__quote@2.76 @@ -2085,6 +2088,20 @@2.77 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@2.78 @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`2.80 +lxdream-isomem.o: drivers/cdrom/isomem.c2.81 +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isomem.o -MD -MP -MF "$(DEPDIR)/lxdream-isomem.Tpo" -c -o lxdream-isomem.o `test -f 'drivers/cdrom/isomem.c' || echo '$(srcdir)/'`drivers/cdrom/isomem.c; \2.82 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isomem.Tpo" "$(DEPDIR)/lxdream-isomem.Po"; else rm -f "$(DEPDIR)/lxdream-isomem.Tpo"; exit 1; fi2.83 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isomem.c' object='lxdream-isomem.o' libtool=no @AMDEPBACKSLASH@2.84 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@2.85 +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isomem.o `test -f 'drivers/cdrom/isomem.c' || echo '$(srcdir)/'`drivers/cdrom/isomem.c2.86 +2.87 +lxdream-isomem.obj: drivers/cdrom/isomem.c2.88 +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-isomem.obj -MD -MP -MF "$(DEPDIR)/lxdream-isomem.Tpo" -c -o lxdream-isomem.obj `if test -f 'drivers/cdrom/isomem.c'; then $(CYGPATH_W) 'drivers/cdrom/isomem.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isomem.c'; fi`; \2.89 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-isomem.Tpo" "$(DEPDIR)/lxdream-isomem.Po"; else rm -f "$(DEPDIR)/lxdream-isomem.Tpo"; exit 1; fi2.90 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='drivers/cdrom/isomem.c' object='lxdream-isomem.obj' libtool=no @AMDEPBACKSLASH@2.91 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@2.92 +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-isomem.obj `if test -f 'drivers/cdrom/isomem.c'; then $(CYGPATH_W) 'drivers/cdrom/isomem.c'; else $(CYGPATH_W) '$(srcdir)/drivers/cdrom/isomem.c'; fi`2.93 +2.94 lxdream-hotkeys.o: hotkeys.c2.95 @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; \2.96 @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-hotkeys.Tpo" "$(DEPDIR)/lxdream-hotkeys.Po"; else rm -f "$(DEPDIR)/lxdream-hotkeys.Tpo"; exit 1; fi
3.1 --- a/src/drivers/cdrom/isofs.h Wed Dec 08 18:33:23 2010 +10003.2 +++ b/src/drivers/cdrom/isofs.h Thu Dec 23 17:50:10 2010 +10003.3 @@ -57,6 +57,6 @@3.6 /** Prototypes for "Internal" Libisofs functions */3.7 -int iso_memory_stream_new(unsigned char *buf, size_t size, IsoStream **stream);3.8 +int iso_mem_stream_new(unsigned char *buf, size_t size, IsoStream **stream);3.10 #endif /* !cdrom_isofs_H */
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00004.2 +++ b/src/drivers/cdrom/isomem.c Thu Dec 23 17:50:10 2010 +10004.3 @@ -0,0 +1,178 @@4.4 +/*4.5 + * Copyright (c) 2007 Vreixo Formoso4.6 + * Copyright (c) 2009 Thomas Schmitt4.7 + *4.8 + * This file is part of the libisofs project; you can redistribute it and/or4.9 + * modify it under the terms of the GNU General Public License version 24.10 + * or later as published by the Free Software Foundation.4.11 + * See COPYING file for details.4.12 + *4.13 + * Memory stream extracted for use in lxdream by Nathan Keynes 2010.4.14 + */4.15 +4.16 +#include <libisofs.h>4.17 +4.18 +#include <stdlib.h>4.19 +#include <string.h>4.20 +#include <limits.h>4.21 +#include <stdio.h>4.22 +4.23 +#ifndef MIN4.24 +#define MIN(a,b) ((a)<=(b) ? (a) : (b))4.25 +#endif4.26 +4.27 +#define ISO_MEM_FS_ID 44.28 +4.29 +ino_t mem_serial_id = (ino_t)1;4.30 +4.31 +typedef struct4.32 +{4.33 + uint8_t *buf;4.34 + ssize_t offset; /* -1 if stream closed */4.35 + ino_t ino_id;4.36 + size_t size;4.37 +} MemStreamData;4.38 +4.39 +static4.40 +int mem_open(IsoStream *stream)4.41 +{4.42 + MemStreamData *data;4.43 + if (stream == NULL) {4.44 + return ISO_NULL_POINTER;4.45 + }4.46 + data = (MemStreamData*)stream->data;4.47 + if (data->offset != -1) {4.48 + return ISO_FILE_ALREADY_OPENED;4.49 + }4.50 + data->offset = 0;4.51 + return ISO_SUCCESS;4.52 +}4.53 +4.54 +static4.55 +int mem_close(IsoStream *stream)4.56 +{4.57 + MemStreamData *data;4.58 + if (stream == NULL) {4.59 + return ISO_NULL_POINTER;4.60 + }4.61 + data = (MemStreamData*)stream->data;4.62 + if (data->offset == -1) {4.63 + return ISO_FILE_NOT_OPENED;4.64 + }4.65 + data->offset = -1;4.66 + return ISO_SUCCESS;4.67 +}4.68 +4.69 +static4.70 +off_t mem_get_size(IsoStream *stream)4.71 +{4.72 + MemStreamData *data;4.73 + data = (MemStreamData*)stream->data;4.74 +4.75 + return (off_t)data->size;4.76 +}4.77 +4.78 +static4.79 +int mem_read(IsoStream *stream, void *buf, size_t count)4.80 +{4.81 + size_t len;4.82 + MemStreamData *data;4.83 + if (stream == NULL || buf == NULL) {4.84 + return ISO_NULL_POINTER;4.85 + }4.86 + if (count == 0) {4.87 + return ISO_WRONG_ARG_VALUE;4.88 + }4.89 + data = stream->data;4.90 +4.91 + if (data->offset == -1) {4.92 + return ISO_FILE_NOT_OPENED;4.93 + }4.94 +4.95 + if (data->offset >= data->size) {4.96 + return 0; /* EOF */4.97 + }4.98 +4.99 + len = MIN(count, data->size - data->offset);4.100 + memcpy(buf, data->buf + data->offset, len);4.101 + data->offset += len;4.102 + return len;4.103 +}4.104 +4.105 +static4.106 +int mem_is_repeatable(IsoStream *stream)4.107 +{4.108 + return 1;4.109 +}4.110 +4.111 +static4.112 +void mem_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id,4.113 + ino_t *ino_id)4.114 +{4.115 + MemStreamData *data;4.116 + data = (MemStreamData*)stream->data;4.117 + *fs_id = ISO_MEM_FS_ID;4.118 + *dev_id = 0;4.119 + *ino_id = data->ino_id;4.120 +}4.121 +4.122 +static4.123 +void mem_free(IsoStream *stream)4.124 +{4.125 + MemStreamData *data;4.126 + data = (MemStreamData*)stream->data;4.127 + free(data->buf);4.128 + free(data);4.129 +}4.130 +4.131 +IsoStreamIface mem_stream_class = {4.132 + 0,4.133 + "mem ",4.134 + mem_open,4.135 + mem_close,4.136 + mem_get_size,4.137 + mem_read,4.138 + mem_is_repeatable,4.139 + mem_get_id,4.140 + mem_free4.141 +};4.142 +4.143 +/**4.144 + * Create a stream for reading from a arbitrary memory buffer.4.145 + * When the Stream refcount reach 0, the buffer is free(3).4.146 + *4.147 + * @return4.148 + * 1 sucess, < 0 error4.149 + */4.150 +int iso_mem_stream_new(unsigned char *buf, size_t size, IsoStream **stream)4.151 +{4.152 + IsoStream *str;4.153 + MemStreamData *data;4.154 +4.155 + if (buf == NULL || stream == NULL) {4.156 + return ISO_NULL_POINTER;4.157 + }4.158 +4.159 + str = malloc(sizeof(IsoStream));4.160 + if (str == NULL) {4.161 + return ISO_OUT_OF_MEM;4.162 + }4.163 + data = malloc(sizeof(MemStreamData));4.164 + if (data == NULL) {4.165 + free(str);4.166 + return ISO_OUT_OF_MEM;4.167 + }4.168 +4.169 + /* fill data */4.170 + data->buf = buf;4.171 + data->size = size;4.172 + data->offset = -1;4.173 + data->ino_id = mem_serial_id++;4.174 +4.175 + str->refcount = 1;4.176 + str->data = data;4.177 + str->class = &mem_stream_class;4.178 +4.179 + *stream = str;4.180 + return ISO_SUCCESS;4.181 +}
5.1 --- a/src/loader.c Wed Dec 08 18:33:23 2010 +10005.2 +++ b/src/loader.c Thu Dec 23 17:50:10 2010 +10005.3 @@ -368,7 +368,7 @@5.4 }5.6 IsoStream *stream;5.7 - if( iso_memory_stream_new(data, bin_size, &stream) != 1 ) {5.8 + if( iso_mem_stream_new(data, bin_size, &stream) != 1 ) {5.9 g_free(data);5.10 iso_image_unref(iso);5.11 SET_ERROR( err, LX_ERR_NOMEM, "Unable to create CD image: out of memory" );
.