diff options
Diffstat (limited to 'qemu/roms/openbios/fs/iso9660/iso9660_read.c')
-rw-r--r-- | qemu/roms/openbios/fs/iso9660/iso9660_read.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/qemu/roms/openbios/fs/iso9660/iso9660_read.c b/qemu/roms/openbios/fs/iso9660/iso9660_read.c deleted file mode 100644 index 22cc463f0..000000000 --- a/qemu/roms/openbios/fs/iso9660/iso9660_read.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * (c) 2005-2009 Laurent Vivier <Laurent@vivier.eu> - * - * This file has been copied from EMILE, http://emile.sf.net - * - */ - -#include "libiso9660.h" -#include "libopenbios/bindings.h" -#include "libc/diskio.h" - -size_t iso9660_read(iso9660_FILE *_file, char *buf, size_t count) -{ - iso9660_FILE *file = (iso9660_FILE*)_file; - size_t read = 0; - - if ( count > (file->size - file->offset) ) - count = file->size - file->offset; - - while (count > 0) - { - size_t part; - int offset_extent; - int offset_index; - - offset_extent = file->base + - (file->offset / ISOFS_BLOCK_SIZE); - offset_index = file->offset % ISOFS_BLOCK_SIZE; - - if (file->current != offset_extent) - { - if ( (offset_index == 0) && - (count >= ISOFS_BLOCK_SIZE) ) - { - /* direct i/o */ - - int extents_nb; - - extents_nb = count / ISOFS_BLOCK_SIZE; - - part = extents_nb * ISOFS_BLOCK_SIZE; - - seek_io(file->volume->fd, - offset_extent * ISOFS_BLOCK_SIZE); - read_io(file->volume->fd, buf + read, part); - - file->offset += part; - count -= part; - read += part; - - continue; - } - - file->current = offset_extent; - seek_io(file->volume->fd, - offset_extent * ISOFS_BLOCK_SIZE); - read_io(file->volume->fd, file->buffer, - ISOFS_BLOCK_SIZE); - } - - part = ISOFS_BLOCK_SIZE - offset_index; - if (count < part) - part = count; - - memcpy(buf + read, file->buffer + offset_index, part); - - file->offset += part; - count -= part; - read += part; - } - - return read; -} |