diff --git a/lib/FreeBSD/freebsd_ioctl.c b/lib/FreeBSD/freebsd_ioctl.c index 85174635..4e8272d1 100644 --- a/lib/FreeBSD/freebsd_ioctl.c +++ b/lib/FreeBSD/freebsd_ioctl.c @@ -1,5 +1,5 @@ /* - $Id: freebsd_ioctl.c,v 1.8 2004/06/25 20:45:41 rocky Exp $ + $Id: freebsd_ioctl.c,v 1.9 2004/06/26 00:39:01 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: freebsd_ioctl.c,v 1.8 2004/06/25 20:45:41 rocky Exp $"; +static const char _rcsid[] = "$Id: freebsd_ioctl.c,v 1.9 2004/06/26 00:39:01 rocky Exp $"; #ifdef HAVE_FREEBSD_CDROM @@ -95,33 +95,19 @@ read_audio_sectors_freebsd_ioctl (_img_private_t *_obj, void *data, lsn_t lsn, return 0; } -/*! - Reads a single form1 sector from cd device into data starting - from lsn. Returns 0 if no error. - */ -int -read_form1_sector_freebsd_ioctl (_img_private_t *env, void *data, lsn_t lsn) -{ - if (0 > cdio_generic_lseek(env, CDIO_CD_FRAMESIZE*lsn, SEEK_SET)) - return -1; - if (0 > cdio_generic_read(env, data, CDIO_CD_FRAMESIZE)) - return -1; - return 0; -} - /*! Reads a single mode2 sector from cd device into data starting from lsn. Returns 0 if no error. */ int read_mode2_sector_freebsd_ioctl (_img_private_t *env, void *data, lsn_t lsn, - bool b_form2) + bool b_form2) { char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; int retval; if ( !b_form2 ) - return read_form1_sector_freebsd_ioctl (env, buf, lsn); + return cdio_generic_read_form1_sector (env, buf, lsn); if ( (retval = read_audio_sectors_freebsd_ioctl (env, buf, lsn, 1)) ) return retval; diff --git a/lib/_cdio_bsdi.c b/lib/_cdio_bsdi.c index 71059a2b..27d50baa 100644 --- a/lib/_cdio_bsdi.c +++ b/lib/_cdio_bsdi.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_bsdi.c,v 1.27 2004/06/25 21:10:43 rocky Exp $ + $Id: _cdio_bsdi.c,v 1.28 2004/06/26 00:39:00 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.27 2004/06/25 21:10:43 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.28 2004/06/26 00:39:00 rocky Exp $"; #include #include @@ -204,15 +204,11 @@ _read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn, bool b_form2) { - char buf[M2RAW_SECTOR_SIZE] = { 0, }; #if FIXED + char buf[M2RAW_SECTOR_SIZE] = { 0, }; do something here. #else - if (0 > cdio_generic_lseek(user_data, CDIO_CD_FRAMESIZE*lsn, SEEK_SET)) - return -1; - if (0 > cdio_generic_read(user_data, buf, CDIO_CD_FRAMESIZE)) - return -1; - memcpy (data, buf, b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE); + return cdio_generic_read_form1_sector(user_data, data, lsn); #endif return 0; } diff --git a/lib/_cdio_generic.c b/lib/_cdio_generic.c index f768337f..f8d150cb 100644 --- a/lib/_cdio_generic.c +++ b/lib/_cdio_generic.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_generic.c,v 1.18 2004/06/25 21:10:43 rocky Exp $ + $Id: _cdio_generic.c,v 1.19 2004/06/26 00:39:00 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.18 2004/06/25 21:10:43 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.19 2004/06/26 00:39:00 rocky Exp $"; #include #include @@ -103,6 +103,20 @@ cdio_generic_init (void *user_data) return true; } +/*! + Reads a single form1 sector from cd device into data starting + from lsn. Returns 0 if no error. + */ +int +cdio_generic_read_form1_sector (void * user_data, void *data, lsn_t lsn) +{ + if (0 > cdio_generic_lseek(user_data, CDIO_CD_FRAMESIZE*lsn, SEEK_SET)) + return -1; + if (0 > cdio_generic_read(user_data, data, CDIO_CD_FRAMESIZE)) + return -1; + return 0; +} + /*! Reads into buf the next size bytes. Returns -1 on error. diff --git a/lib/_cdio_linux.c b/lib/_cdio_linux.c index 5c7a9ce2..5354caf0 100644 --- a/lib/_cdio_linux.c +++ b/lib/_cdio_linux.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_linux.c,v 1.56 2004/06/25 21:10:43 rocky Exp $ + $Id: _cdio_linux.c,v 1.57 2004/06/26 00:39:00 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.56 2004/06/25 21:10:43 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.57 2004/06/26 00:39:00 rocky Exp $"; #include @@ -381,8 +381,8 @@ _read_mode1_sector_linux (void *env, void *data, lsn_t lsn, bool b_form2) { - char buf[M2RAW_SECTOR_SIZE] = { 0, }; #if FIXED + char buf[M2RAW_SECTOR_SIZE] = { 0, }; struct cdrom_msf *msf = (struct cdrom_msf *) &buf; msf_t _msf; @@ -437,11 +437,7 @@ _read_mode1_sector_linux (void *env, void *data, lsn_t lsn, b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE); #else - if (0 > cdio_generic_lseek(env, CDIO_CD_FRAMESIZE*lsn, SEEK_SET)) - return -1; - if (0 > cdio_generic_read(env, buf, CDIO_CD_FRAMESIZE)) - return -1; - memcpy (data, buf, b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE); + return cdio_generic_read_form1_sector(env, data, lsn); #endif return 0; } diff --git a/lib/_cdio_sunos.c b/lib/_cdio_sunos.c index b231a377..bd0c832e 100644 --- a/lib/_cdio_sunos.c +++ b/lib/_cdio_sunos.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_sunos.c,v 1.40 2004/06/25 21:10:44 rocky Exp $ + $Id: _cdio_sunos.c,v 1.41 2004/06/26 00:39:01 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -38,7 +38,7 @@ #ifdef HAVE_SOLARIS_CDROM -static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.40 2004/06/25 21:10:44 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.41 2004/06/26 00:39:01 rocky Exp $"; #ifdef HAVE_GLOB_H #include @@ -186,15 +186,10 @@ _cdio_read_mode1_sector (void *env, void *data, lsn_t lsn, bool b_form2) { - char buf[M2RAW_SECTOR_SIZE] = { 0, }; #if FIXED do something here. #else - if (0 > cdio_generic_lseek(env, CDIO_CD_FRAMESIZE*lsn, SEEK_SET)) - return -1; - if (0 > cdio_generic_read(env, buf, CDIO_CD_FRAMESIZE)) - return -1; - memcpy (data, buf, b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE); + return cdio_generic_read_form1_sector(env_data, data, lsn); #endif return 0; } diff --git a/lib/cdio_private.h b/lib/cdio_private.h index d7a5802f..a0c864e9 100644 --- a/lib/cdio_private.h +++ b/lib/cdio_private.h @@ -1,5 +1,5 @@ /* - $Id: cdio_private.h,v 1.23 2004/05/27 01:11:50 rocky Exp $ + $Id: cdio_private.h,v 1.24 2004/06/26 00:39:01 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein @@ -296,6 +296,13 @@ extern "C" { */ ssize_t cdio_generic_read (void *env, void *buf, size_t size); + /*! + Reads a single form1 sector from cd device into data starting + from lsn. Returns 0 if no error. + */ + int cdio_generic_read_form1_sector (void * user_data, void *data, + lsn_t lsn); + /*! Release and free resources associated with stream or disk image. */