Make sure milliseconds get converted to seconds if needed.

Some function renaming, and a typo in a DVD book type.
This commit is contained in:
rocky
2004-07-28 01:09:59 +00:00
parent b2acdb3e8e
commit 7716188c38
10 changed files with 156 additions and 147 deletions

View File

@@ -1,5 +1,5 @@
/*
$Id: freebsd_cam.c,v 1.24 2004/07/25 09:39:40 rocky Exp $
$Id: freebsd_cam.c,v 1.25 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -26,7 +26,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: freebsd_cam.c,v 1.24 2004/07/25 09:39:40 rocky Exp $";
static const char _rcsid[] = "$Id: freebsd_cam.c,v 1.25 2004/07/28 01:09:59 rocky Exp $";
#ifdef HAVE_FREEBSD_CDROM
@@ -35,7 +35,7 @@ static const char _rcsid[] = "$Id: freebsd_cam.c,v 1.24 2004/07/25 09:39:40 rock
/* Default value in seconds we will wait for a command to
complete. */
#define DEFAULT_TIMEOUT_SECS 10
#define DEFAULT_TIMEOUT_MSECS 10000
/*!
Run a SCSI MMC command.
@@ -180,7 +180,7 @@ get_mcn_freebsd_cam (const _img_private_t *p_env)
cdb.field[3] = CDIO_SUBCHANNEL_MEDIA_CATALOG;
CDIO_MMC_SET_READ_LENGTH(cdb.field, sizeof(buf));
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_SECS,
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb, SCSI_MMC_DATA_READ,
sizeof(buf), buf);
@@ -210,7 +210,7 @@ get_drive_cap_freebsd_cam (const _img_private_t *p_env,
cdb.field[7] = 0x01;
cdb.field[8] = 0x00;
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_SECS,
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb, SCSI_MMC_DATA_READ,
sizeof(buf), buf);
@@ -287,7 +287,7 @@ _set_bsize (_img_private_t *p_env, unsigned int bsize)
cdb.field[1] = 1 << 4;
cdb.field[4] = 12;
return scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_SECS,
return scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb, SCSI_MMC_DATA_WRITE,
sizeof(mh), &mh);
@@ -389,7 +389,7 @@ stat_size_freebsd_cam (_img_private_t *p_env)
p_env->ccb.csio.data_ptr = buf;
p_env->ccb.csio.dxfer_len = sizeof (buf);
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_SECS,
i_status = scsi_mmc_run_cmd_freebsd_cam(p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb, SCSI_MMC_DATA_READ,
sizeof(buf), buf);
@@ -422,14 +422,14 @@ eject_media_freebsd_cam (_img_private_t *p_env)
CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_ALLOW_MEDIUM_REMOVAL);
i_status = scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_SECS,
i_status = scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb, SCSI_MMC_DATA_WRITE, 0, &buf);
if (0 != i_status)
return i_status;
cdb.field[4] = 1;
i_status = scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_SECS,
i_status = scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
SCSI_MMC_DATA_WRITE, 0, &buf);
if (0 != i_status)
@@ -438,7 +438,7 @@ eject_media_freebsd_cam (_img_private_t *p_env)
CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_START_STOP);
cdb.field[4] = 2; /* eject */
return scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_SECS,
return scsi_mmc_run_cmd_freebsd_cam (p_env, DEFAULT_TIMEOUT_MSECS,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb,
SCSI_MMC_DATA_WRITE, 0, &buf);

View File

@@ -1,5 +1,5 @@
/*
$Id: aspi32.c,v 1.41 2004/07/27 01:23:27 rocky Exp $
$Id: aspi32.c,v 1.42 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: aspi32.c,v 1.41 2004/07/27 01:23:27 rocky Exp $";
static const char _rcsid[] = "$Id: aspi32.c,v 1.42 2004/07/28 01:09:59 rocky Exp $";
#include <cdio/cdio.h>
#include <cdio/sector.h>
@@ -199,7 +199,7 @@ get_discmode_aspi (_img_private_t *p_env)
case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
case CDIO_DVD_BOOK_DVD_PW: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
default: return CDIO_DISC_MODE_DVD_OTHER;
}

View File

@@ -1,5 +1,5 @@
/*
$Id: win32_ioctl.c,v 1.27 2004/07/27 02:21:23 rocky Exp $
$Id: win32_ioctl.c,v 1.28 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -26,7 +26,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.27 2004/07/27 02:21:23 rocky Exp $";
static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.28 2004/07/28 01:09:59 rocky Exp $";
#include <cdio/cdio.h>
#include <cdio/sector.h>
@@ -212,7 +212,7 @@ get_discmode_win32ioctl (_img_private_t *p_env)
case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
case CDIO_DVD_BOOK_DVD_PW: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
default: return CDIO_DISC_MODE_DVD_OTHER;
}

View File

@@ -1,5 +1,5 @@
/*
$Id: _cdio_bsdi.c,v 1.33 2004/07/27 16:51:14 rocky Exp $
$Id: _cdio_bsdi.c,v 1.34 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.33 2004/07/27 16:51:14 rocky Exp $";
static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.34 2004/07/28 01:09:59 rocky Exp $";
#include <cdio/sector.h>
#include <cdio/util.h>
@@ -93,11 +93,11 @@ typedef struct {
/* Define the Cdrom Generic Command structure */
typedef struct cgc
{
u_char cdb[12];
scsi_mmc_cdb_t cdb;
u_char *buf;
int buflen;
int rw;
int timeout;
unsigned int timeout;
scsi_user_sense_t *sus;
} cgc_t;
@@ -106,10 +106,10 @@ typedef struct cgc
This code adapted from Steven M. Schultz's libdvd
*/
static int
scsi_mmc_run_cmd_bsdi(const void *p_user_data, int i_timeout,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
run_scsi_cmd_bsdi(const void *p_user_data, int i_timeout_ms,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
{
const _img_private_t *p_env = p_user_data;
int i_status, i_asc;
@@ -123,7 +123,7 @@ scsi_mmc_run_cmd_bsdi(const void *p_user_data, int i_timeout,
memcpy(suc.suc_cdb, p_cdb, i_cdb);
suc.suc_data = p_buf;
suc.suc_datalen = i_buf;
suc.suc_timeout = i_timeout;
suc.suc_timeout = msecs2secs(i_timeout_ms);
if (ioctl(p_env->gen.fd, SCSIRAWCDB, &suc) == -1)
return(errno);
i_status = suc.suc_sus.sus_status;
@@ -551,7 +551,7 @@ static bool
_init_cdtext_bsdi (_img_private_t *p_env)
{
return scsi_mmc_init_cdtext_private( p_env->gen.cdio,
&scsi_mmc_run_cmd_bsdi,
&run_scsi_cmd_bsdi,
set_cdtext_field_bsdi
);
}
@@ -776,64 +776,6 @@ _get_track_msf_bsdi(void *user_data, track_t i_track, msf_t *msf)
}
}
#endif /* HAVE_BSDI_CDROM */
/*!
Return an array of strings giving possible CD devices.
*/
char **
cdio_get_devices_bsdi (void)
{
#ifndef HAVE_BSDI_CDROM
return NULL;
#else
char drive[40];
char **drives = NULL;
unsigned int num_drives=0;
bool exists=true;
char c;
/* Scan the system for CD-ROM drives.
*/
#ifdef USE_ETC_FSTAB
struct fstab *fs;
setfsent();
/* Check what's in /etc/fstab... */
while ( (fs = getfsent()) )
{
if (strncmp(fs->fs_spec, "/dev/sr", 7))
cdio_add_device_list(&drives, fs->fs_spec, &num_drives);
}
#endif
/* Scan the system for CD-ROM drives.
Not always 100% reliable, so use the USE_MNTENT code above first.
*/
for ( c='0'; exists && c <='9'; c++ ) {
sprintf(drive, "/dev/rsr%cc", c);
exists = cdio_is_cdrom(drive, NULL);
if ( exists ) {
cdio_add_device_list(&drives, drive, &num_drives);
}
}
cdio_add_device_list(&drives, NULL, &num_drives);
return drives;
#endif /*HAVE_BSDI_CDROM*/
}
/*!
Return a string containing the default CD device if none is specified.
*/
char *
cdio_get_default_device_bsdi(void)
{
return strdup(DEFAULT_CDIO_DEVICE);
}
/*!
Get disc type associated with cd object.
*/
@@ -850,14 +792,14 @@ get_discmode_bsdi (void *p_user_data)
dvd.physical.type = CDIO_DVD_STRUCT_PHYSICAL;
dvd.physical.layer_num = 0;
if (0 == scsi_mmc_get_dvd_struct_physical_private (p_env,
&scsi_mmc_run_cmd_bsdi,
&run_scsi_cmd_bsdi,
&dvd)) {
switch(dvd.physical.layer[0].book_type) {
case CDIO_DVD_BOOK_DVD_ROM: return CDIO_DISC_MODE_DVD_ROM;
case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
case CDIO_DVD_BOOK_DVD_PW: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
default: return CDIO_DISC_MODE_DVD_OTHER;
}
@@ -925,6 +867,64 @@ get_discmode_bsdi (void *p_user_data)
return discmode;
}
#endif /* HAVE_BSDI_CDROM */
/*!
Return an array of strings giving possible CD devices.
*/
char **
cdio_get_devices_bsdi (void)
{
#ifndef HAVE_BSDI_CDROM
return NULL;
#else
char drive[40];
char **drives = NULL;
unsigned int num_drives=0;
bool exists=true;
char c;
/* Scan the system for CD-ROM drives.
*/
#ifdef USE_ETC_FSTAB
struct fstab *fs;
setfsent();
/* Check what's in /etc/fstab... */
while ( (fs = getfsent()) )
{
if (strncmp(fs->fs_spec, "/dev/sr", 7))
cdio_add_device_list(&drives, fs->fs_spec, &num_drives);
}
#endif
/* Scan the system for CD-ROM drives.
Not always 100% reliable, so use the USE_MNTENT code above first.
*/
for ( c='0'; exists && c <='9'; c++ ) {
sprintf(drive, "/dev/rsr%cc", c);
exists = cdio_is_cdrom(drive, NULL);
if ( exists ) {
cdio_add_device_list(&drives, drive, &num_drives);
}
}
cdio_add_device_list(&drives, NULL, &num_drives);
return drives;
#endif /*HAVE_BSDI_CDROM*/
}
/*!
Return a string containing the default CD device if none is specified.
*/
char *
cdio_get_default_device_bsdi(void)
{
return strdup(DEFAULT_CDIO_DEVICE);
}
/*!
Initialization routine. This is the only thing that doesn't
get called via a function pointer. In fact *we* are the
@@ -977,7 +977,7 @@ cdio_open_bsdi (const char *psz_orig_source)
.read_mode1_sectors = _read_mode1_sectors_bsdi,
.read_mode2_sector = _read_mode2_sector_bsdi,
.read_mode2_sectors = _read_mode2_sectors_bsdi,
.run_scsi_mmc_cmd = scsi_mmc_run_cmd_bsdi,
.run_scsi_mmc_cmd = &run_scsi_cmd_bsdi,
.set_arg = _set_arg_bsdi,
.stat_size = _stat_size_bsdi
};

View File

@@ -1,5 +1,5 @@
/*
$Id: _cdio_linux.c,v 1.83 2004/07/27 01:06:02 rocky Exp $
$Id: _cdio_linux.c,v 1.84 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -27,7 +27,7 @@
# include "config.h"
#endif
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.83 2004/07/27 01:06:02 rocky Exp $";
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.84 2004/07/28 01:09:59 rocky Exp $";
#include <string.h>
@@ -110,12 +110,13 @@ typedef struct {
/**** prototypes for static functions ****/
static bool is_cdrom_linux(const char *drive, char *mnttype);
static bool read_toc_linux (_img_private_t *p_env);
static int scsi_mmc_run_cmd_linux( const void *p_user_data, int i_timeout,
unsigned int i_cdb,
const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf,
/*in/out*/ void *p_buf );
static int run_scsi_cmd_linux( const void *p_user_data,
unsigned int i_timeout,
unsigned int i_cdb,
const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf,
/*in/out*/ void *p_buf );
static access_mode_t
str_to_access_mode_linux(const char *psz_access_mode)
@@ -502,7 +503,7 @@ get_discmode_linux (void *p_user_data)
case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
case CDIO_DVD_BOOK_DVD_PW: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
default: return CDIO_DISC_MODE_DVD_OTHER;
}
@@ -600,12 +601,12 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
if ((retval = scsi_mmc_set_bsize (p_env->gen.cdio, M2RAW_SECTOR_SIZE)))
return retval;
if ((retval = scsi_mmc_run_cmd_linux (p_env, 0,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb,
SCSI_MMC_DATA_READ,
M2RAW_SECTOR_SIZE * nblocks,
p_buf)))
if ((retval = run_scsi_cmd_linux (p_env, 0,
scsi_mmc_get_cmd_len(cdb.field[0]),
&cdb,
SCSI_MMC_DATA_READ,
M2RAW_SECTOR_SIZE * nblocks,
p_buf)))
{
scsi_mmc_set_bsize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
return retval;
@@ -614,11 +615,11 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
if ((retval = scsi_mmc_set_bsize (p_env->gen.cdio, CDIO_CD_FRAMESIZE)))
return retval;
} else
return scsi_mmc_run_cmd_linux (p_env, 0,
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
SCSI_MMC_DATA_READ,
M2RAW_SECTOR_SIZE * nblocks, p_buf);
return run_scsi_cmd_linux (p_env, 0,
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
SCSI_MMC_DATA_READ,
M2RAW_SECTOR_SIZE * nblocks, p_buf);
return 0;
}
@@ -908,10 +909,11 @@ read_toc_linux (_img_private_t *p_env)
We return true if command completed successfully and false if not.
*/
static int
scsi_mmc_run_cmd_linux( const void *p_user_data, int i_timeout,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
run_scsi_cmd_linux( const void *p_user_data,
unsigned int i_timeout_ms,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
{
const _img_private_t *p_env = p_user_data;
struct cdrom_generic_command cgc;
@@ -923,8 +925,7 @@ scsi_mmc_run_cmd_linux( const void *p_user_data, int i_timeout,
? CGC_DATA_READ : CGC_DATA_WRITE;
#ifdef HAVE_LINUX_CDROM_TIMEOUT
if (i_timeout >= 0)
cgc.timeout = i_timeout;
cgc.timeout = i_timeout_ms;
#endif
return ioctl (p_env->gen.fd, CDROM_SEND_PACKET, &cgc);
@@ -1013,7 +1014,7 @@ static bool
init_cdtext_linux (_img_private_t *p_env)
{
return scsi_mmc_init_cdtext_private( p_env->gen.cdio,
&scsi_mmc_run_cmd_linux,
&run_scsi_cmd_linux,
set_cdtext_field_linux
);
}
@@ -1216,7 +1217,7 @@ cdio_open_am_linux (const char *psz_orig_source, const char *access_mode)
.read_mode1_sectors = _read_mode1_sectors_linux,
.read_mode2_sector = _read_mode2_sector_linux,
.read_mode2_sectors = _read_mode2_sectors_linux,
.run_scsi_mmc_cmd = scsi_mmc_run_cmd_linux,
.run_scsi_mmc_cmd = &run_scsi_cmd_linux,
.set_arg = set_arg_linux,
.stat_size = stat_size_linux
};

View File

@@ -1,5 +1,5 @@
/*
$Id: _cdio_sunos.c,v 1.64 2004/07/27 02:45:16 rocky Exp $
$Id: _cdio_sunos.c,v 1.65 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
@@ -38,7 +38,7 @@
#ifdef HAVE_SOLARIS_CDROM
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.64 2004/07/27 02:45:16 rocky Exp $";
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.65 2004/07/28 01:09:59 rocky Exp $";
#ifdef HAVE_GLOB_H
#include <glob.h>
@@ -65,9 +65,6 @@ static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.64 2004/07/27 02:45:16 rock
#include <sys/ioctl.h>
#include "cdtext_private.h"
/* Number of seconds we wait for a SCSI MMC command to complete. */
#define DEFAULT_TIMEOUT 30
#define TOTAL_TRACKS (p_env->tochdr.cdth_trk1)
/* reader */
@@ -143,9 +140,8 @@ init_solaris (_img_private_t *env)
Run a SCSI MMC command.
p_user_data internal CD structure.
i_timeout time in milliseconds we will wait for the command
to complete. If this value is -1, use the default
time-out value.
i_timeout_ms time in milliseconds we will wait for the command
to complete.
i_cdb Size of p_cdb
p_cdb CDB bytes.
e_direction direction the transfer is to go.
@@ -155,10 +151,10 @@ init_solaris (_img_private_t *env)
Return 0 if no error.
*/
static int
scsi_mmc_run_cmd_solaris( const void *p_user_data, int i_timeout,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
run_scsi_cmd_solaris( const void *p_user_data, unsigned int i_timeout_ms,
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,
unsigned int i_buf, /*in/out*/ void *p_buf )
{
const _img_private_t *p_env = p_user_data;
struct uscsi_cmd cgc;
@@ -169,7 +165,7 @@ scsi_mmc_run_cmd_solaris( const void *p_user_data, int i_timeout,
cgc.uscsi_flags = SCSI_MMC_DATA_READ == e_direction ?
USCSI_READ : USCSI_WRITE;
cgc.uscsi_timeout = i_timeout; /* # of seconds for completion */
cgc.uscsi_timeout = msecs2secs(i_timeout_ms);
cgc.uscsi_bufaddr = p_buf;
cgc.uscsi_buflen = i_buf;
cgc.uscsi_cdblen = i_cdb;
@@ -479,7 +475,7 @@ static bool
_init_cdtext_solaris (_img_private_t *p_env)
{
return scsi_mmc_init_cdtext_private( p_env->gen.cdio,
&scsi_mmc_run_cmd_solaris,
&run_scsi_cmd_solaris,
set_cdtext_field_solaris
);
}
@@ -623,14 +619,14 @@ get_discmode_solaris (void *p_user_data)
dvd.physical.type = CDIO_DVD_STRUCT_PHYSICAL;
dvd.physical.layer_num = 0;
if (0 == scsi_mmc_get_dvd_struct_physical_private (p_env,
&scsi_mmc_run_cmd_solaris,
&run_scsi_cmd_solaris,
&dvd)) {
switch(dvd.physical.layer[0].book_type) {
case CDIO_DVD_BOOK_DVD_ROM: return CDIO_DISC_MODE_DVD_ROM;
case CDIO_DVD_BOOK_DVD_RAM: return CDIO_DISC_MODE_DVD_RAM;
case CDIO_DVD_BOOK_DVD_R: return CDIO_DISC_MODE_DVD_R;
case CDIO_DVD_BOOK_DVD_RW: return CDIO_DISC_MODE_DVD_RW;
case CDIO_DVD_BOOK_DVD_PW: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PR: return CDIO_DISC_MODE_DVD_PR;
case CDIO_DVD_BOOK_DVD_PRW: return CDIO_DISC_MODE_DVD_PRW;
default: return CDIO_DISC_MODE_DVD_OTHER;
}
@@ -903,7 +899,7 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
.read_mode1_sectors = _read_mode1_sectors_solaris,
.read_mode2_sector = _read_mode2_sector_solaris,
.read_mode2_sectors = _read_mode2_sectors_solaris,
.run_scsi_mmc_cmd = scsi_mmc_run_cmd_solaris,
.run_scsi_mmc_cmd = &run_scsi_cmd_solaris,
.stat_size = _cdio_stat_size,
.set_arg = _set_arg_solaris
};

View File

@@ -1,6 +1,6 @@
/* Common SCSI Multimedia Command (MMC) routines.
$Id: scsi_mmc.c,v 1.14 2004/07/27 18:57:04 rocky Exp $
$Id: scsi_mmc.c,v 1.15 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -98,7 +98,7 @@ scsi_mmc_get_cmd_len(uint8_t scsi_cmd)
We return 0 if command completed successfully and 1 if not.
*/
int
scsi_mmc_run_cmd( const CdIo *cdio, int i_timeout,
scsi_mmc_run_cmd( const CdIo *cdio, unsigned int i_timeout,
const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction, unsigned int i_buf,
/*in/out*/ void *p_buf )

View File

@@ -1,6 +1,6 @@
/* private MMC helper routines.
$Id: scsi_mmc_private.h,v 1.6 2004/07/27 02:45:16 rocky Exp $
$Id: scsi_mmc_private.h,v 1.7 2004/07/28 01:09:59 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -22,8 +22,20 @@
#include <cdio/scsi_mmc.h>
#include "cdtext_private.h"
/*! Convert milliseconds to seconds taking the ceiling value, i.e.
1002 milliseconds gets rounded to 2 seconds.
*/
#define SECS2MSECS 1000
static inline unsigned int
msec2secs(unsigned int msecs)
{
return (msecs+(SECS2MSECS-1)) / SECS2MSECS;
}
#undef SECS2MSECS
typedef
int (*scsi_mmc_run_cmd_fn_t) ( const void *p_user_data, int i_timeout,
int (*scsi_mmc_run_cmd_fn_t) ( const void *p_user_data,
unsigned int i_timeout_ms,
unsigned int i_cdb,
const scsi_mmc_cdb_t *p_cdb,
scsi_mmc_direction_t e_direction,