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