Fixed compilation issues with Linux CD-ROM code.

This commit is contained in:
TomW 2016-03-23 21:17:09 +00:00
commit 38af408445

View file

@ -12,11 +12,12 @@ static ATAPI ioctl_atapi;
static uint32_t last_block = 0; static uint32_t last_block = 0;
static int ioctl_inited = 0; static int ioctl_inited = 0;
static char ioctl_path[8]; static char ioctl_path[8];
static void ioctl_close(void);
static int tocvalid = 0; static int tocvalid = 0;
static struct cdrom_tocentry toc[100]; static struct cdrom_tocentry toc[100];
static int first_track, last_track; static int first_track, last_track;
int old_cdrom_drive;
#define MSFtoLBA(m,s,f) (((((m*60)+s)*75)+f)-150) #define MSFtoLBA(m,s,f) (((((m*60)+s)*75)+f)-150)
enum enum
@ -505,7 +506,7 @@ static int ioctl_readtoc_session(unsigned char *b, int msf, int maxlen)
int fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK); int fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK);
if (fd <= 0) if (fd <= 0)
return; return 0;
session.addr_format = CDROM_MSF; session.addr_format = CDROM_MSF;
err = ioctl(fd, CDROMMULTISESSION, &session); err = ioctl(fd, CDROMMULTISESSION, &session);
@ -513,7 +514,7 @@ static int ioctl_readtoc_session(unsigned char *b, int msf, int maxlen)
if (err == -1) if (err == -1)
{ {
close(fd); close(fd);
return; return 0;
} }
b[2] = 0; b[2] = 0;
@ -547,7 +548,11 @@ static int ioctl_readtoc_raw(unsigned char *b, int maxlen)
struct cdrom_tocentry toc2[100]; struct cdrom_tocentry toc2[100];
int track, err; int track, err;
int len = 4; int len = 4;
int fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK);
//pclog("read_toc\n"); //pclog("read_toc\n");
if (fd <= 0)
return 0;
err = ioctl(fd, CDROMREADTOCHDR, &toc_hdr); err = ioctl(fd, CDROMREADTOCHDR, &toc_hdr);
if (err == -1) if (err == -1)
{ {
@ -566,6 +571,7 @@ static int ioctl_readtoc_raw(unsigned char *b, int maxlen)
if ((len + 11) > maxlen) if ((len + 11) > maxlen)
{ {
pclog("ioctl_readtocraw: This iteration would fill the buffer beyond the bounds, aborting...\n"); pclog("ioctl_readtocraw: This iteration would fill the buffer beyond the bounds, aborting...\n");
close(fd);
return len; return len;
} }
@ -575,6 +581,7 @@ static int ioctl_readtoc_raw(unsigned char *b, int maxlen)
if (err == -1) if (err == -1)
{ {
// pclog("read_toc: CDROMREADTOCENTRY failed on track %i\n", track); // pclog("read_toc: CDROMREADTOCENTRY failed on track %i\n", track);
close(fd);
return 0; return 0;
} }
// pclog("read_toc: Track %02X - number %02X control %02X adr %02X address %02X %02X %02X %02X\n", track, toc[track].cdte_track, toc[track].cdte_ctrl, toc[track].cdte_adr, 0, toc[track].cdte_addr.msf.minute, toc[track].cdte_addr.msf.second, toc[track].cdte_addr.msf.frame); // pclog("read_toc: Track %02X - number %02X control %02X adr %02X address %02X %02X %02X %02X\n", track, toc[track].cdte_track, toc[track].cdte_ctrl, toc[track].cdte_adr, 0, toc[track].cdte_addr.msf.minute, toc[track].cdte_addr.msf.second, toc[track].cdte_addr.msf.frame);
@ -591,6 +598,7 @@ static int ioctl_readtoc_raw(unsigned char *b, int maxlen)
b[len++] = toc2[track].cdte_addr.msf.second; b[len++] = toc2[track].cdte_addr.msf.second;
b[len++] = toc2[track].cdte_addr.msf.frame; b[len++] = toc2[track].cdte_addr.msf.frame;
} }
close(fd);
return len; return len;
} }
@ -637,7 +645,7 @@ int ioctl_open(char d)
return 0; return 0;
} }
static void ioctl_close(void) void ioctl_close(void)
{ {
} }