aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dvd+rw-tools/files/01-growisofs-pioneer.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/dvd+rw-tools/files/01-growisofs-pioneer.patch')
-rw-r--r--packages/dvd+rw-tools/files/01-growisofs-pioneer.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/packages/dvd+rw-tools/files/01-growisofs-pioneer.patch b/packages/dvd+rw-tools/files/01-growisofs-pioneer.patch
new file mode 100644
index 0000000000..d4b3543d82
--- /dev/null
+++ b/packages/dvd+rw-tools/files/01-growisofs-pioneer.patch
@@ -0,0 +1,26 @@
+Author: n/a
+Description: Fixes to fail closing session on some PIONEER DVD-RW drives
+
+diff -Naurp dvd+rw-tools.orig/growisofs_mmc.cpp dvd+rw-tools/growisofs_mmc.cpp
+--- dvd+rw-tools.orig/growisofs_mmc.cpp 2008-03-04 17:47:49.000000000 +0000
++++ dvd+rw-tools/growisofs_mmc.cpp 2008-04-01 09:01:20.000000000 +0000
+@@ -1743,8 +1743,17 @@ void plus_rw_finalize ()
+ cmd[1] = 0x01; // "IMMED"
+ cmd[2] = 0x02; // "Close session"
+ cmd[9] = 0;
+- if ((err=cmd.transport()))
+- sperror ("CLOSE SESSION",err);
++
++ // it seems, that pioneer is a bit crappy
++ while (err=cmd.transport()) {
++ if (SK(err)==0x2 && ASC(err)==0x04 && ASCQ(err)==0x07) {
++ sperror ("CLOSE SESSION (but try to continue)",err);
++ usleep(10000);
++ } else {
++ sperror ("CLOSE SESSION",err);
++ break;
++ }
++ }
+
+ if (wait_for_unit (cmd)) break;
+