summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dvdabstract.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/dvdabstract.cpp b/lib/dvdabstract.cpp
index 582ad90..55a961a 100644
--- a/lib/dvdabstract.cpp
+++ b/lib/dvdabstract.cpp
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: dvdabstract.cpp,v 1.1 2005-11-02 21:34:02 pixel Exp $ */
+/* $Id: dvdabstract.cpp,v 1.2 2005-11-05 14:36:12 pixel Exp $ */
#include "dvdabstract.h"
@@ -116,7 +116,7 @@ ssize_t dvdabstract::write(const void * _buf, size_t count) throw (GeneralExcept
reminder = i_count;
memcpy(i_buf, buf, reminder);
- if (reminder >= 0) {
+ if (reminder > 0) {
memcpy(buf, i_buf, reminder);
if (reminder <= 22) {
if (reminder <= 15) {
@@ -144,6 +144,7 @@ void dvdabstract::read_sector(char * buf, int sector) {
}
void dvdabstract::write_sector(const char * buf, int sector) throw (GeneralException) {
+ if (sector > 913000) printm(M_BARE, "sector %i.\n", sector);
r->seek(sector * 2048);
switch(buf[15]) {
case 0:
@@ -151,10 +152,10 @@ void dvdabstract::write_sector(const char * buf, int sector) throw (GeneralExcep
r->write(buf + 16, 2048);
break;
case 2:
- if ((buf[18] == 1) && (buf[22] == 1)) {
+ if (((buf[18] & 8) && (buf[22] & 8)) || (!buf[16] && !buf[17] && !buf[18] && !buf[19] && !buf[20] && !buf[21] && !buf[22] && !buf[23])) {
r->write(buf + 24, 2048);
break;
- }
+ }
default:
throw GeneralException("dvdabstract::write_sector: unknown sector mode.");
}