aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-05-16 00:32:43 +0400
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-05-16 00:32:43 +0400
commit41a385a587cb693894c966e58b4e88b4dc11023c (patch)
tree529b7168fd92b51f662bd011d596da395ac62a51 /recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch
parent39836a5818e2e0f1915b053137d60c96c608e82c (diff)
parent16d94b6b28b86657678b78d1f57c666c391c4688 (diff)
downloadopenembedded-41a385a587cb693894c966e58b4e88b4dc11023c.tar.gz
Merge branch 'org.openembedded.dev' of git://git.openembedded.org/openembedded into org.openembedded.dev
Diffstat (limited to 'recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch')
-rw-r--r--recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch30
1 files changed, 30 insertions, 0 deletions
diff --git a/recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch b/recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch
new file mode 100644
index 0000000000..adaaad4f7e
--- /dev/null
+++ b/recipes/dvd+rw-tools/files/01-growisofs-pioneer.dpatch
@@ -0,0 +1,30 @@
+#!/bin/sh /usr/share/dpatch/dpatch-run
+## 01-growisofs-pioneer.dpatch
+##
+## DP: Fixes to fail closing session on some PIONEER DVD-RW drives
+
+@DPATCH@
+
+diff -Naurp dvd+rw-tools-7.1.orig/growisofs_mmc.cpp dvd+rw-tools-7.1/growisofs_mmc.cpp
+--- dvd+rw-tools-7.1.orig/growisofs_mmc.cpp 2008-03-04 17:47:49.000000000 +0000
++++ dvd+rw-tools-7.1/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;
+