fewer error exits in drivers. Instead, a failure code is returned.

This commit is contained in:
rocky
2004-06-25 21:10:36 +00:00
parent 3ca533663d
commit 238b74ab7f
5 changed files with 37 additions and 36 deletions

5
NEWS
View File

@@ -5,10 +5,11 @@
- Redo types of lsn and lba to allow negative values. Should model MMC3 - Redo types of lsn and lba to allow negative values. Should model MMC3
specs. Add max/min values for lsn. specs. Add max/min values for lsn.
- More complete MMC command set - More complete MMC command set
- FreeBSD drive reading works better (thanks to Heiner) - FreeBSD driver ioctl and CAM reading works better (thanks to Heiner)
- OSX drive reading works better (thanks to Justin F. Hallett) - OSX drive reading works better (thanks to Justin F. Hallett)
- cd-read allows dumping bytes to stdout and hexdumps to a file - cd-read allows dumping bytes to stdout and hexdumps to a file
via options --no-hexdump and --hexdump via options --no-hexdump and --hexdump
- fewer error exits in drivers. Instead, a failure code is returned.
- better NRG reading (thanks to Michael Kukat via extractnrg.pl) - better NRG reading (thanks to Michael Kukat via extractnrg.pl)
- better tracking of allocated variables (cd-read, cd-info, FreeBSD) - better tracking of allocated variables (cd-read, cd-info, FreeBSD)
- iso9660: Add interface to read PVD and pick out some of the fields in that. - iso9660: Add interface to read PVD and pick out some of the fields in that.
@@ -122,4 +123,4 @@
0.1 0.1
Routines split off from VCDImager. Routines split off from VCDImager.
$Id: NEWS,v 1.46 2004/06/23 02:25:37 rocky Exp $ $Id: NEWS,v 1.47 2004/06/25 21:10:36 rocky Exp $

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_bsdi.c,v 1.26 2004/06/03 12:37:54 rocky Exp $ $Id: _cdio_bsdi.c,v 1.27 2004/06/25 21:10:43 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h" # include "config.h"
#endif #endif
static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.26 2004/06/03 12:37:54 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.27 2004/06/25 21:10:43 rocky Exp $";
#include <cdio/sector.h> #include <cdio/sector.h>
#include <cdio/util.h> #include <cdio/util.h>
@@ -122,7 +122,7 @@ static bool
_cdio_init (_img_private_t *env) _cdio_init (_img_private_t *env)
{ {
if (env->gen.init) { if (env->gen.init) {
cdio_error ("init called more than once"); cdio_warn ("init called more than once");
return false; return false;
} }
@@ -130,7 +130,7 @@ _cdio_init (_img_private_t *env)
if (env->gen.fd < 0) if (env->gen.fd < 0)
{ {
cdio_error ("open (%s): %s", env->source_name, strerror (errno)); cdio_warn ("open (%s): %s", env->source_name, strerror (errno));
return false; return false;
} }
@@ -173,7 +173,7 @@ _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
switch (env->access_mode) { switch (env->access_mode) {
case _AM_NONE: case _AM_NONE:
cdio_error ("no way to read audio"); cdio_warn ("no way to read audio");
return 1; return 1;
break; break;
@@ -277,7 +277,7 @@ _read_mode2_sector_bsdi (void *user_data, void *data, lsn_t lsn,
switch (env->access_mode) switch (env->access_mode)
{ {
case _AM_NONE: case _AM_NONE:
cdio_error ("no way to read mode2"); cdio_warn ("no way to read mode2");
return 1; return 1;
break; break;
@@ -369,7 +369,7 @@ _set_arg_bsdi (void *user_data, const char key[], const char value[])
if (!strcmp(value, "IOCTL")) if (!strcmp(value, "IOCTL"))
env->access_mode = _AM_IOCTL; env->access_mode = _AM_IOCTL;
else else
cdio_error ("unknown access type: %s. ignored.", value); cdio_warn ("unknown access type: %s. ignored.", value);
} }
else else
return -1; return -1;
@@ -388,7 +388,7 @@ _cdio_read_toc (_img_private_t *env)
/* read TOC header */ /* read TOC header */
if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) { if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCHDR", strerror(errno)); "error in ioctl CDROMREADTOCHDR", strerror(errno));
return false; return false;
} }
@@ -398,7 +398,7 @@ _cdio_read_toc (_img_private_t *env)
env->tocent[i-1].cdte_track = i; env->tocent[i-1].cdte_track = i;
env->tocent[i-1].cdte_format = CDROM_MSF; env->tocent[i-1].cdte_format = CDROM_MSF;
if ( ioctl(env->gen.fd, CDROMREADTOCENTRY, &env->tocent[i-1]) == -1 ) { if ( ioctl(env->gen.fd, CDROMREADTOCENTRY, &env->tocent[i-1]) == -1 ) {
cdio_error("%s %d: %s\n", cdio_warn("%s %d: %s\n",
"error in ioctl CDROMREADTOCENTRY for track", "error in ioctl CDROMREADTOCENTRY for track",
i, strerror(errno)); i, strerror(errno));
return false; return false;
@@ -418,7 +418,7 @@ _cdio_read_toc (_img_private_t *env)
if (ioctl(env->gen.fd, CDROMREADTOCENTRY, if (ioctl(env->gen.fd, CDROMREADTOCENTRY,
&env->tocent[TOTAL_TRACKS]) == -1 ) { &env->tocent[TOTAL_TRACKS]) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCENTRY for lead-out", "error in ioctl CDROMREADTOCENTRY for lead-out",
strerror(errno)); strerror(errno));
return false; return false;
@@ -453,18 +453,18 @@ _eject_media_bsdi (void *user_data) {
switch(status) { switch(status) {
case CDS_TRAY_OPEN: case CDS_TRAY_OPEN:
if((ret = ioctl(fd, CDROMCLOSETRAY, 0)) != 0) { if((ret = ioctl(fd, CDROMCLOSETRAY, 0)) != 0) {
cdio_error ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno)); cdio_warn ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno));
} }
break; break;
case CDS_DISC_OK: case CDS_DISC_OK:
if((ret = ioctl(fd, CDROMEJECT, 0)) != 0) { if((ret = ioctl(fd, CDROMEJECT, 0)) != 0) {
cdio_error("ioctl CDROMEJECT failed: %s\n", strerror(errno)); cdio_warn("ioctl CDROMEJECT failed: %s\n", strerror(errno));
} }
break; break;
} }
ret=0; ret=0;
} else { } else {
cdio_error ("CDROM_DRIVE_STATUS failed: %s\n", strerror(errno)); cdio_warn ("CDROM_DRIVE_STATUS failed: %s\n", strerror(errno));
ret=1; ret=1;
} }
close(fd); close(fd);

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_generic.c,v 1.17 2004/06/19 19:15:15 rocky Exp $ $Id: _cdio_generic.c,v 1.18 2004/06/25 21:10:43 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h" # include "config.h"
#endif #endif
static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.17 2004/06/19 19:15:15 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.18 2004/06/25 21:10:43 rocky Exp $";
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@@ -86,7 +86,7 @@ cdio_generic_init (void *user_data)
{ {
generic_img_private_t *_env = user_data; generic_img_private_t *_env = user_data;
if (_env->init) { if (_env->init) {
cdio_error ("init called more than once"); cdio_warn ("init called more than once");
return false; return false;
} }

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_linux.c,v 1.55 2004/06/06 11:44:51 rocky Exp $ $Id: _cdio_linux.c,v 1.56 2004/06/25 21:10:43 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h" # include "config.h"
#endif #endif
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.55 2004/06/06 11:44:51 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.56 2004/06/25 21:10:43 rocky Exp $";
#include <string.h> #include <string.h>
@@ -397,7 +397,7 @@ _read_mode1_sector_linux (void *env, void *data, lsn_t lsn,
switch (_obj->access_mode) switch (_obj->access_mode)
{ {
case _AM_NONE: case _AM_NONE:
cdio_error ("no way to read mode1"); cdio_warn ("no way to read mode1");
return 1; return 1;
break; break;
@@ -492,7 +492,7 @@ _read_mode2_sector_linux (void *user_data, void *data, lsn_t lsn,
switch (env->access_mode) switch (env->access_mode)
{ {
case _AM_NONE: case _AM_NONE:
cdio_error ("no way to read mode2"); cdio_warn ("no way to read mode2");
return 1; return 1;
break; break;
@@ -627,7 +627,7 @@ _cdio_read_toc (_img_private_t *env)
/* read TOC header */ /* read TOC header */
if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) { if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCHDR", strerror(errno)); "error in ioctl CDROMREADTOCHDR", strerror(errno));
return false; return false;
} }
@@ -638,7 +638,7 @@ _cdio_read_toc (_img_private_t *env)
env->tocent[i-FIRST_TRACK_NUM].cdte_format = CDROM_MSF; env->tocent[i-FIRST_TRACK_NUM].cdte_format = CDROM_MSF;
if ( ioctl(env->gen.fd, CDROMREADTOCENTRY, if ( ioctl(env->gen.fd, CDROMREADTOCENTRY,
&env->tocent[i-FIRST_TRACK_NUM]) == -1 ) { &env->tocent[i-FIRST_TRACK_NUM]) == -1 ) {
cdio_error("%s %d: %s\n", cdio_warn("%s %d: %s\n",
"error in ioctl CDROMREADTOCENTRY for track", "error in ioctl CDROMREADTOCENTRY for track",
i, strerror(errno)); i, strerror(errno));
return false; return false;
@@ -658,7 +658,7 @@ _cdio_read_toc (_img_private_t *env)
if (ioctl(env->gen.fd, CDROMREADTOCENTRY, if (ioctl(env->gen.fd, CDROMREADTOCENTRY,
&env->tocent[TOTAL_TRACKS]) == -1 ) { &env->tocent[TOTAL_TRACKS]) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCENTRY for lead-out", "error in ioctl CDROMREADTOCENTRY for lead-out",
strerror(errno)); strerror(errno));
return false; return false;
@@ -748,7 +748,7 @@ _eject_media_linux (void *user_data) {
switch(status) { switch(status) {
case CDS_TRAY_OPEN: case CDS_TRAY_OPEN:
if((ret = ioctl(fd, CDROMCLOSETRAY)) != 0) { if((ret = ioctl(fd, CDROMCLOSETRAY)) != 0) {
cdio_error ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno)); cdio_warn ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno));
ret = 1; ret = 1;
} }
break; break;
@@ -758,17 +758,17 @@ _eject_media_linux (void *user_data) {
/* Try ejecting the MMC way... */ /* Try ejecting the MMC way... */
ret = _eject_media_mmc(fd); ret = _eject_media_mmc(fd);
if (0 != ret) { if (0 != ret) {
cdio_error("ioctl CDROMEJECT failed: %s\n", strerror(eject_error)); cdio_warn("ioctl CDROMEJECT failed: %s\n", strerror(eject_error));
ret = 1; ret = 1;
} }
} }
break; break;
default: default:
cdio_error ("Unknown CD-ROM (%d)\n", status); cdio_warn ("Unknown CD-ROM (%d)\n", status);
ret = 1; ret = 1;
} }
} else { } else {
cdio_error ("CDROM_DRIVE_STATUS failed: %s\n", strerror(errno)); cdio_warn ("CDROM_DRIVE_STATUS failed: %s\n", strerror(errno));
ret=1; ret=1;
} }
close(fd); close(fd);

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_sunos.c,v 1.39 2004/06/13 20:38:58 rocky Exp $ $Id: _cdio_sunos.c,v 1.40 2004/06/25 21:10:44 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -38,7 +38,7 @@
#ifdef HAVE_SOLARIS_CDROM #ifdef HAVE_SOLARIS_CDROM
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.39 2004/06/13 20:38:58 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.40 2004/06/25 21:10:44 rocky Exp $";
#ifdef HAVE_GLOB_H #ifdef HAVE_GLOB_H
#include <glob.h> #include <glob.h>
@@ -371,7 +371,7 @@ _cdio_read_toc (_img_private_t *env)
/* read TOC header */ /* read TOC header */
if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) { if ( ioctl(env->gen.fd, CDROMREADTOCHDR, &env->tochdr) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCHDR", strerror(errno)); "error in ioctl CDROMREADTOCHDR", strerror(errno));
return false; return false;
} }
@@ -381,7 +381,7 @@ _cdio_read_toc (_img_private_t *env)
env->tocent[i-1].cdte_track = i; env->tocent[i-1].cdte_track = i;
env->tocent[i-1].cdte_format = CDROM_MSF; env->tocent[i-1].cdte_format = CDROM_MSF;
if ( ioctl(env->gen.fd, CDROMREADTOCENTRY, &env->tocent[i-1]) == -1 ) { if ( ioctl(env->gen.fd, CDROMREADTOCENTRY, &env->tocent[i-1]) == -1 ) {
cdio_error("%s %d: %s\n", cdio_warn("%s %d: %s\n",
"error in ioctl CDROMREADTOCENTRY for track", "error in ioctl CDROMREADTOCENTRY for track",
i, strerror(errno)); i, strerror(errno));
return false; return false;
@@ -394,7 +394,7 @@ _cdio_read_toc (_img_private_t *env)
if (ioctl(env->gen.fd, CDROMREADTOCENTRY, if (ioctl(env->gen.fd, CDROMREADTOCENTRY,
&env->tocent[env->tochdr.cdth_trk1]) == -1 ) { &env->tocent[env->tochdr.cdth_trk1]) == -1 ) {
cdio_error("%s: %s\n", cdio_warn("%s: %s\n",
"error in ioctl CDROMREADTOCENTRY for lead-out", "error in ioctl CDROMREADTOCENTRY for lead-out",
strerror(errno)); strerror(errno));
return false; return false;
@@ -419,7 +419,7 @@ _cdio_eject_media (void *user_data) {
if (env->gen.fd > -1) { if (env->gen.fd > -1) {
if ((ret = ioctl(env->gen.fd, CDROMEJECT)) != 0) { if ((ret = ioctl(env->gen.fd, CDROMEJECT)) != 0) {
cdio_generic_free((void *) env); cdio_generic_free((void *) env);
cdio_error ("CDROMEJECT failed: %s\n", strerror(errno)); cdio_warn ("CDROMEJECT failed: %s\n", strerror(errno));
return 1; return 1;
} else { } else {
return 0; return 0;
@@ -436,7 +436,7 @@ _cdio_malloc_and_zero(size_t size) {
if( !size ) size++; if( !size ) size++;
if((ptr = malloc(size)) == NULL) { if((ptr = malloc(size)) == NULL) {
cdio_error("malloc() failed: %s", strerror(errno)); cdio_warn("malloc() failed: %s", strerror(errno));
return NULL; return NULL;
} }