diff options
Diffstat (limited to 'roms/openbios/fs/iso9660/iso9660_lseek.c')
-rw-r--r-- | roms/openbios/fs/iso9660/iso9660_lseek.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/roms/openbios/fs/iso9660/iso9660_lseek.c b/roms/openbios/fs/iso9660/iso9660_lseek.c new file mode 100644 index 000000000..62987583c --- /dev/null +++ b/roms/openbios/fs/iso9660/iso9660_lseek.c @@ -0,0 +1,37 @@ +/* + * + * (c) 2005-2009 Laurent Vivier <Laurent@vivier.eu> + * + * This file has been copied from EMILE, http://emile.sf.net + * + */ + +#include "libiso9660.h" + +int iso9660_lseek(iso9660_FILE *_file, long offset, int whence) +{ + iso9660_FILE *file = (iso9660_FILE*)_file; + long new_offset; + + switch(whence) + { + case SEEK_SET: + new_offset = offset; + break; + case SEEK_CUR: + new_offset = file->offset + offset; + break; + case SEEK_END: + new_offset = file->size + offset; + break; + default: + return -1; + } + + if ( (new_offset < 0) || (new_offset > file->size) ) + return -1; + + file->offset = new_offset; + + return new_offset; +} |