summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-08 04:24:44 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-08 04:24:44 +0000
commit46f4825b631fff91374caf7ea62b329609425bb6 (patch)
treefad1e7ff10227154424f2edcde226bb1b71d78d6 /plugins
parent369a201161abf72750470a58cf7ebdd1a10ab2e4 (diff)
downloadpcsxr-46f4825b631fff91374caf7ea62b329609425bb6.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@54337 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins')
-rw-r--r--plugins/dfcdrom/cdr-freebsd.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/plugins/dfcdrom/cdr-freebsd.c b/plugins/dfcdrom/cdr-freebsd.c
index fbdd8c89..69b9d0ad 100644
--- a/plugins/dfcdrom/cdr-freebsd.c
+++ b/plugins/dfcdrom/cdr-freebsd.c
@@ -45,9 +45,6 @@ int OpenCdHandle(const char *dev) {
if (parameter == 0) parameter = CDR_MAX_SPEED;
ioctl(h, CDRIOCREADSPEED, &parameter);
-
- parameter = CD_FRAMESIZE_RAW;
- ioctl(h, CDRIOCSETBLOCKSIZE, &parameter);
}
}
@@ -85,8 +82,19 @@ long ReadSector(int handle, crdata *cr) {
unsigned int lba = msf_to_lba(cr->msf.cdmsf_min0, cr->msf.cdmsf_sec0,
cr->msf.cdmsf_frame0);
- if (pread(handle, (void *)cr->buf, CD_FRAMESIZE_RAW, lba * CD_FRAMESIZE_RAW) != CD_FRAMESIZE_RAW)
+ int bsize = CD_FRAMESIZE_RAW;
+
+ if (ioctl(handle, CDRIOCSETBLOCKSIZE, &bsize) == -1) {
+ return -1;
+ }
+
+ if (lseek(handle, lba * CD_FRAMESIZE_RAW, SEEK_SET) == -1) {
return -1;
+ }
+
+ if (read(handle, (void *)cr->buf, CD_FRAMESIZE_RAW) == -1) {
+ return -1;
+ }
return 0;
}