Make drive exceptions non-static objects that are shared between multiple units.
Also replace the three Dummy functions wth dummy_exception (also common). Bump the revision. This reduces the memory footprint of libcdda_interface of about 200 bytes.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# $Id: Makefile.am,v 1.13 2008/03/20 19:02:38 karl Exp $
|
# $Id: Makefile.am,v 1.14 2008/06/13 19:26:22 flameeyes Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) 2004, 2005, 2006, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
|
# Copyright (C) 2004, 2005, 2006, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
|
||||||
#
|
#
|
||||||
@@ -45,14 +45,14 @@
|
|||||||
EXTRA_DIST = libcdio_cdda.sym
|
EXTRA_DIST = libcdio_cdda.sym
|
||||||
|
|
||||||
libcdio_cdda_la_CURRENT = 0
|
libcdio_cdda_la_CURRENT = 0
|
||||||
libcdio_cdda_la_REVISION = 3
|
libcdio_cdda_la_REVISION = 4
|
||||||
libcdio_cdda_la_AGE = 0
|
libcdio_cdda_la_AGE = 0
|
||||||
|
|
||||||
noinst_HEADERS = common_interface.h drive_exceptions.h low_interface.h \
|
noinst_HEADERS = common_interface.h drive_exceptions.h low_interface.h \
|
||||||
smallft.h utils.h
|
smallft.h utils.h
|
||||||
|
|
||||||
libcdio_cdda_sources = common_interface.c cddap_interface.c interface.c \
|
libcdio_cdda_sources = common_interface.c cddap_interface.c interface.c \
|
||||||
scan_devices.c smallft.c toc.c utils.c
|
scan_devices.c smallft.c toc.c utils.c drive_exceptions.c
|
||||||
|
|
||||||
lib_LTLIBRARIES = libcdio_cdda.la
|
lib_LTLIBRARIES = libcdio_cdda.la
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cddap_interface.c,v 1.7 2008/04/16 17:00:40 karl Exp $
|
$Id: cddap_interface.c,v 1.8 2008/06/13 19:26:22 flameeyes Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2005, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
|
||||||
Original interface.c Copyright (C) 1994-1997
|
Original interface.c Copyright (C) 1994-1997
|
||||||
@@ -246,12 +246,6 @@ cddap_read (cdrom_drive_t *d, void *p, lsn_t begin, long i_sectors)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hook */
|
|
||||||
static int Dummy (cdrom_drive_t *d,int Switch)
|
|
||||||
{
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
verify_read_command(cdrom_drive_t *d)
|
verify_read_command(cdrom_drive_t *d)
|
||||||
{
|
{
|
||||||
@@ -387,7 +381,7 @@ cddap_init_drive (cdrom_drive_t *d)
|
|||||||
}
|
}
|
||||||
#endif /*HAVE_LINUX_MAJOR_H*/
|
#endif /*HAVE_LINUX_MAJOR_H*/
|
||||||
|
|
||||||
d->enable_cdda = Dummy;
|
d->enable_cdda = dummy_exception;
|
||||||
d->set_speed = cddap_setspeed;
|
d->set_speed = cddap_setspeed;
|
||||||
d->read_toc = cddap_readtoc;
|
d->read_toc = cddap_readtoc;
|
||||||
d->read_audio = cddap_read;
|
d->read_audio = cddap_read;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: drive_exceptions.h,v 1.5 2008/04/16 17:00:40 karl Exp $
|
$Id: drive_exceptions.h,v 1.6 2008/06/13 19:26:23 flameeyes Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 1998 Monty xiphmont@mit.edu
|
Copyright (C) 1998 Monty xiphmont@mit.edu
|
||||||
@@ -43,59 +43,16 @@ extern long scsi_read_mmc2(cdrom_drive_t *d, void *,long,long);
|
|||||||
#define scsi_read_mmc2 NULL
|
#define scsi_read_mmc2 NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int dummy_exception (cdrom_drive_t *d,int Switch);
|
||||||
|
|
||||||
#if HAVE_LINUX_MAJOR_H
|
#if HAVE_LINUX_MAJOR_H
|
||||||
/* list of drives that affect autosensing in ATAPI specific portions of code
|
extern const exception_t atapi_list[];
|
||||||
(force drives to detect as ATAPI or SCSI, force ATAPI read command */
|
#endif
|
||||||
|
|
||||||
static exception_t atapi_list[]={
|
|
||||||
{"SAMSUNG SCR-830 REV 2.09 2.09 ", 1, 0, Dummy,scsi_read_mmc2,0},
|
|
||||||
{"Memorex CR-622", 1, 0, Dummy, NULL,0},
|
|
||||||
{"SONY CD-ROM CDU-561", 0, 0, Dummy, NULL,0},
|
|
||||||
{"Chinon CD-ROM CDS-525", 0, 0, Dummy, NULL,0},
|
|
||||||
{NULL,0,0,NULL,NULL,0}};
|
|
||||||
#endif /*HAVE_LINUX_MAJOR_H*/
|
|
||||||
|
|
||||||
/* list of drives that affect MMC default settings */
|
|
||||||
|
|
||||||
#ifdef NEED_MMC_LIST
|
#ifdef NEED_MMC_LIST
|
||||||
static exception_t mmc_list[]={
|
extern const exception_t mmc_list[];
|
||||||
{"SAMSUNG SCR-830 REV 2.09 2.09 ", 1, 0, Dummy,scsi_read_mmc2,0},
|
#endif
|
||||||
{"Memorex CR-622", 1, 0, Dummy, NULL,0},
|
|
||||||
{"SONY CD-ROM CDU-561", 0, 0, Dummy, NULL,0},
|
|
||||||
{"Chinon CD-ROM CDS-525", 0, 0, Dummy, NULL,0},
|
|
||||||
{"KENWOOD CD-ROM UCR", -1, 0, NULL,scsi_read_D8, 0},
|
|
||||||
{NULL,0,0,NULL,NULL,0}};
|
|
||||||
#endif /*NEED_MMC_LIST*/
|
|
||||||
|
|
||||||
/* list of drives that affect SCSI default settings */
|
|
||||||
|
|
||||||
#ifdef NEED_SCSI_LIST
|
#ifdef NEED_SCSI_LIST
|
||||||
static exception_t scsi_list[]={
|
extern const exception_t scsi_list[];
|
||||||
{"TOSHIBA", -1,0x82,scsi_enable_cdda,scsi_read_28, 0},
|
#endif
|
||||||
{"IBM", -1,0x82,scsi_enable_cdda,scsi_read_28, 0},
|
|
||||||
{"DEC", -1,0x82,scsi_enable_cdda,scsi_read_28, 0},
|
|
||||||
|
|
||||||
{"IMS", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"KODAK", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"RICOH", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"HP", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"PHILIPS", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"PLASMON", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"GRUNDIG CDR100IPW", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"MITSUMI CD-R ", -1, 0,scsi_enable_cdda,scsi_read_28, 1},
|
|
||||||
{"KENWOOD CD-ROM UCR", -1, 0, NULL,scsi_read_D8, 0},
|
|
||||||
|
|
||||||
{"YAMAHA", -1, 0,scsi_enable_cdda, NULL, 0},
|
|
||||||
|
|
||||||
{"PLEXTOR", -1, 0, NULL, NULL, 0},
|
|
||||||
{"SONY", -1, 0, NULL, NULL, 0},
|
|
||||||
|
|
||||||
{"NEC", -1, 0, NULL,scsi_read_D4_10,0},
|
|
||||||
|
|
||||||
/* the 7501 locks up if hit with the 10 byte version from the
|
|
||||||
autoprobe first */
|
|
||||||
{"MATSHITA CD-R CW-7501", -1, 0, NULL,scsi_read_D4_12,-1},
|
|
||||||
|
|
||||||
{NULL,0,0,NULL,NULL,0}};
|
|
||||||
|
|
||||||
#endif /* NEED_SCSI_LIST*/
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: scsi_interface.c,v 1.3 2008/04/17 17:39:47 karl Exp $
|
$Id: scsi_interface.c,v 1.4 2008/06/13 19:26:23 flameeyes Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
||||||
Original interface.c Copyright (C) 1994-1997
|
Original interface.c Copyright (C) 1994-1997
|
||||||
@@ -36,12 +36,6 @@
|
|||||||
#include <cdio/scsi_mmc.h>
|
#include <cdio/scsi_mmc.h>
|
||||||
#include <cdio/bytesex.h>
|
#include <cdio/bytesex.h>
|
||||||
|
|
||||||
/* hook */
|
|
||||||
static int
|
|
||||||
Dummy (cdrom_drive_t *d,int s){
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "drive_exceptions.h"
|
#include "drive_exceptions.h"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1272,7 +1266,7 @@ verify_read_command(cdrom_drive_t *d)
|
|||||||
switch(i){
|
switch(i){
|
||||||
case 0:
|
case 0:
|
||||||
d->density=0;
|
d->density=0;
|
||||||
d->enable_cdda=Dummy;
|
d->enable_cdda=dummy_exception;
|
||||||
es="none ";
|
es="none ";
|
||||||
if(!densitypossible)i=-2; /* short circuit MMC style commands */
|
if(!densitypossible)i=-2; /* short circuit MMC style commands */
|
||||||
break;
|
break;
|
||||||
@@ -1510,7 +1504,7 @@ scsi_init_drive(cdrom_drive_t *d){
|
|||||||
|
|
||||||
/* generic Sony type defaults; specialize from here */
|
/* generic Sony type defaults; specialize from here */
|
||||||
d->density = 0x0;
|
d->density = 0x0;
|
||||||
d->enable_cdda = Dummy;
|
d->enable_cdda = dummy_exception;
|
||||||
d->read_audio = scsi_read_D8;
|
d->read_audio = scsi_read_D8;
|
||||||
d->fua=0x0;
|
d->fua=0x0;
|
||||||
if(d->is_atapi)d->lun=0; /* it should already be; just to make sure */
|
if(d->is_atapi)d->lun=0; /* it should already be; just to make sure */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: test_interface.c,v 1.3 2008/04/16 17:00:40 karl Exp $
|
$Id: test_interface.c,v 1.4 2008/06/13 19:26:23 flameeyes Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
Copyright (C) 2004, 2008 Rocky Bernstein <rocky@gnu.org>
|
||||||
Copyright (C) 1998 Monty xiphmont@mit.edu
|
Copyright (C) 1998 Monty xiphmont@mit.edu
|
||||||
@@ -215,19 +215,14 @@ test_read(cdrom_drive *d, void *p, long begin, long sectors)
|
|||||||
return(sectors);
|
return(sectors);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hook */
|
|
||||||
static int Dummy (cdrom_drive *d,int Switch){
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set function pointers to use the ioctl routines */
|
/* set function pointers to use the ioctl routines */
|
||||||
int test_init_drive (cdrom_drive *d){
|
int test_init_drive (cdrom_drive *d){
|
||||||
|
|
||||||
d->nsectors=13;
|
d->nsectors=13;
|
||||||
d->enable_cdda = Dummy;
|
d->enable_cdda = dummy_exception;
|
||||||
d->read_audio = test_read;
|
d->read_audio = test_read;
|
||||||
d->read_toc = test_readtoc;
|
d->read_toc = test_readtoc;
|
||||||
d->set_speed = Dummy;
|
d->set_speed = dummy_exception;
|
||||||
d->tracks=d->read_toc(d);
|
d->tracks=d->read_toc(d);
|
||||||
if(d->tracks==-1)
|
if(d->tracks==-1)
|
||||||
return(d->tracks);
|
return(d->tracks);
|
||||||
|
|||||||
Reference in New Issue
Block a user