]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/cdrkit/cdrkit-1.1.11-format.patch
Remove dvdrtools for cdrkit
[ipfire-2.x.git] / src / patches / cdrkit / cdrkit-1.1.11-format.patch
diff --git a/src/patches/cdrkit/cdrkit-1.1.11-format.patch b/src/patches/cdrkit/cdrkit-1.1.11-format.patch
new file mode 100644 (file)
index 0000000..983ed23
--- /dev/null
@@ -0,0 +1,129 @@
+diff -up cdrkit-1.1.11/wodim/drv_mmc.c.format cdrkit-1.1.11/wodim/drv_mmc.c
+--- cdrkit-1.1.11/wodim/drv_mmc.c.format       2011-05-18 16:49:14.591822130 +0200
++++ cdrkit-1.1.11/wodim/drv_mmc.c      2011-05-18 16:49:14.596822130 +0200
+@@ -1507,6 +1507,11 @@ getdisktype_mdvd(SCSI *usalp, cdr_t *dp)
+       dstat_t *dsp = dp->cdr_dstat;
+       struct track_info track_info;
++
++      extern char *buf;
++      struct disk_info *dip;
++      int profile;
++
+     if(lverbose)
+         printf("HINT: use dvd+rw-mediainfo from dvd+rw-tools for information extraction.\n");
+       /* if(getdisktype_mmc(usalp, dp)<0)
+@@ -1521,6 +1526,18 @@ getdisktype_mdvd(SCSI *usalp, cdr_t *dp)
+       dsp->ds_disktype&= ~DT_CD;
+       dsp->ds_disktype|= DT_DVD;
++      profile = get_curprofile(usalp);
++      if (profile == 0x1A) {
++              dip = (struct disk_info *)buf;
++              if (get_diskinfo(usalp, dip) < 0)
++                      return (-1);
++              if (dip->disk_status == DS_EMPTY) {     /* Unformatted      */
++                      dsp->ds_flags |= DSF_NEED_FORMAT;
++                      if(lverbose)
++                              printf("The medium is empty, it will be auto formatted.\n");
++              }
++      }
++      
+       return (ret);
+ }
+diff -up cdrkit-1.1.11/wodim/scsi_cdr.c.format cdrkit-1.1.11/wodim/scsi_cdr.c
+--- cdrkit-1.1.11/wodim/scsi_cdr.c.format      2011-05-18 16:49:14.601822130 +0200
++++ cdrkit-1.1.11/wodim/scsi_cdr.c     2011-05-18 16:49:14.600822130 +0200
+@@ -1328,7 +1328,7 @@ scsi_format(SCSI *usalp, caddr_t addr, i
+       }
+       sleep(10);
+       printf("\rFormating in progress: 100.00 %% done.        \n");
+-      if (pid) exit (0);
++      if (pid > 0) exit (0);
+       return ret;
+ }
+diff -up cdrkit-1.1.11/wodim/wodim.c.format cdrkit-1.1.11/wodim/wodim.c
+--- cdrkit-1.1.11/wodim/wodim.c.format 2011-05-18 16:49:14.584822130 +0200
++++ cdrkit-1.1.11/wodim/wodim.c        2011-05-18 17:21:59.510821630 +0200
+@@ -946,6 +946,40 @@ int main(int argc, char *argv[])
+               print_toc(usalp, dp);
+               comexit(0);
+       }
++      
++      if ((flags & F_FORMAT) || (dp->cdr_dstat->ds_flags & DSF_NEED_FORMAT)) {
++              printf("wodim: media format asked\n");
++              /*
++              * Do not abort if OPC failes. Just give it a chance
++              * for better laser power calibration than without OPC.
++              *
++              * Ricoh drives return with a vendor unique sense code.
++              * This is most likely because they refuse to do OPC
++              * on a non blank media.
++              */
++              usalp->silent++;
++              do_opc(usalp, dp, flags);
++              usalp->silent--;
++              wait_unit_ready(usalp, 120);
++              if (gettimeofday(&starttime, (struct timezone *)0) < 0)
++                      errmsg("Cannot get start time\n");
++              
++              if ((*dp->cdr_format)(usalp, dp, formattype) < 0) {
++                      errmsgno(EX_BAD, "Cannot format disk, aborting.\n");
++                      comexit(EX_BAD);
++              }
++              if (gettimeofday(&fixtime, (struct timezone *)0) < 0)
++                      errmsg("Cannot get format time\n");
++              if (lverbose)
++                      prtimediff("Formatting time: ", &starttime, &fixtime);
++
++              if (!wait_unit_ready(usalp, 240) || tracks == 0) {
++                      comexit(0);
++              }
++              if (gettimeofday(&starttime, (struct timezone *)0) < 0)
++                      errmsg("Cannot get start time\n");
++      }
++      
+ #ifdef        XXX
+       if ((*dp->cdr_check_session)() < 0) {
+               comexit(EX_BAD);
+@@ -1230,38 +1264,6 @@ int main(int argc, char *argv[])
+                       comexit(0);
+               }
+       }
+-      if (flags & F_FORMAT) {
+-              printf("wodim: media format asked\n");
+-              /*
+-              * Do not abort if OPC failes. Just give it a chance
+-              * for better laser power calibration than without OPC.
+-              *
+-              * Ricoh drives return with a vendor unique sense code.
+-              * This is most likely because they refuse to do OPC
+-              * on a non blank media.
+-              */
+-              usalp->silent++;
+-              do_opc(usalp, dp, flags);
+-              usalp->silent--;
+-              wait_unit_ready(usalp, 120);
+-              if (gettimeofday(&starttime, (struct timezone *)0) < 0)
+-                      errmsg("Cannot get start time\n");
+-
+-              if ((*dp->cdr_format)(usalp, dp, formattype) < 0) {
+-                      errmsgno(EX_BAD, "Cannot format disk, aborting.\n");
+-                      comexit(EX_BAD);
+-              }
+-              if (gettimeofday(&fixtime, (struct timezone *)0) < 0)
+-                      errmsg("Cannot get format time\n");
+-              if (lverbose)
+-                      prtimediff("Formatting time: ", &starttime, &fixtime);
+-
+-              if (!wait_unit_ready(usalp, 240) || tracks == 0) {
+-                      comexit(0);
+-              }
+-              if (gettimeofday(&starttime, (struct timezone *)0) < 0)
+-                      errmsg("Cannot get start time\n");
+-      }
+       /*
+       * Reset start time so we will not see blanking time and
+       * writing time counted together.