Implemented options -format and -blank deformat, -close and closed media
This commit is contained in:
parent
b09ff95b4e
commit
1fa4b04229
@ -707,6 +707,16 @@ int Sfile_home_adr_s(char *filename, char *fileadr, int fa_size, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Return a double representing seconds and microseconds since 1 Jan 1970 */
|
||||||
|
double Sfile_microtime(int flag)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
struct timezone tz;
|
||||||
|
gettimeofday(&tv,&tz);
|
||||||
|
return((double) (tv.tv_sec+1.0e-6*tv.tv_usec));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* Xorriso_sfile_externaL */
|
#endif /* Xorriso_sfile_externaL */
|
||||||
|
|
||||||
|
|
||||||
@ -2701,9 +2711,9 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
}
|
}
|
||||||
is_default= 0;
|
is_default= 0;
|
||||||
if(xorriso->dialog)
|
if(xorriso->dialog)
|
||||||
sprintf(line,"-dialog\n");
|
sprintf(line,"-dialog on\n");
|
||||||
else {
|
else {
|
||||||
sprintf(line,"-dialog_reset\n");
|
sprintf(line,"-dialog off\n");
|
||||||
is_default= 1;
|
is_default= 1;
|
||||||
}
|
}
|
||||||
if(!(is_default && no_defaults))
|
if(!(is_default && no_defaults))
|
||||||
@ -3160,7 +3170,7 @@ int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag)
|
|||||||
/* @param flag bit0= format rather than blank */
|
/* @param flag bit0= format rather than blank */
|
||||||
int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
|
int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
|
||||||
{
|
{
|
||||||
char drive_name[SfileadrL], *cmd= "-blank";
|
char drive_name[SfileadrL], *cmd= "-blank", sfe[4*SfileadrL];
|
||||||
int ret, aq_flag= 2, mode_flag;
|
int ret, aq_flag= 2, mode_flag;
|
||||||
|
|
||||||
if(flag&1)
|
if(flag&1)
|
||||||
@ -3183,19 +3193,46 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
|
|||||||
|
|
||||||
if(strcmp(mode, "all")==0 || strcmp(mode, "full")==0)
|
if(strcmp(mode, "all")==0 || strcmp(mode, "full")==0)
|
||||||
mode_flag= 0;
|
mode_flag= 0;
|
||||||
else
|
else if(strcmp(mode, "deformat")==0 || strcmp(mode, "deformat_sequential")==0)
|
||||||
|
mode_flag= 2;
|
||||||
|
else if(strcmp(mode, "deformat_quickest")==0 ||
|
||||||
|
strcmp(mode, "deformat_sequential_quickest")==0)
|
||||||
|
mode_flag= 3;
|
||||||
|
else if(strcmp(mode, "fast")==0 || mode[0]==0)
|
||||||
mode_flag= 1;
|
mode_flag= 1;
|
||||||
|
else {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"%s: Unknown %s mode '%s'",
|
||||||
|
cmd, ((flag&1) ? "format" : "blank"), mode);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
if(flag&1)
|
if(flag&1)
|
||||||
ret= Xorriso_format_media(xorriso, mode_flag);
|
ret= Xorriso_format_media(xorriso, 0);
|
||||||
else
|
else
|
||||||
ret= Xorriso_blank_media(xorriso, mode_flag);
|
ret= Xorriso_blank_media(xorriso, mode_flag);
|
||||||
|
if(ret==0)
|
||||||
|
return(ret);
|
||||||
strcpy(drive_name, xorriso->outdev);
|
strcpy(drive_name, xorriso->outdev);
|
||||||
Xorriso_give_up_drive(xorriso, aq_flag);
|
if(ret!=2) {
|
||||||
if(ret<=0)
|
Xorriso_give_up_drive(xorriso, aq_flag);
|
||||||
return(ret);
|
if(ret<=0) { /* this is the return value of the blank|format function */
|
||||||
ret= Xorriso_aquire_drive(xorriso, drive_name, aq_flag);
|
sprintf(xorriso->info_text,"Gave up -outdev %s",
|
||||||
if(ret<=0)
|
Text_shellsafe(xorriso->outdev, sfe, 0));
|
||||||
return(ret);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
sprintf(xorriso->info_text,"Re-aquiring -outdev %s",
|
||||||
|
Text_shellsafe(drive_name, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
ret= Xorriso_aquire_drive(xorriso, drive_name, aq_flag);
|
||||||
|
if(ret<=0) {
|
||||||
|
sprintf(xorriso->info_text,"Could not re-aquire -outdev %s",
|
||||||
|
Text_shellsafe(xorriso->outdev, sfe, 0));
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3372,6 +3409,7 @@ int Xorriso_option_commit(struct XorrisO *xorriso, int flag)
|
|||||||
ret= Xorriso_write_growing(xorriso, 0);
|
ret= Xorriso_write_growing(xorriso, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
return(ret);
|
||||||
|
|
||||||
xorriso->volset_change_pending= 0;
|
xorriso->volset_change_pending= 0;
|
||||||
|
|
||||||
if(flag&1)
|
if(flag&1)
|
||||||
@ -3460,7 +3498,7 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
if((flag&2) && xorriso->in_drive_handle != NULL &&
|
if((flag&2) && xorriso->in_drive_handle != NULL &&
|
||||||
xorriso->in_drive_handle != xorriso->out_drive_handle) {
|
xorriso->in_drive_handle != xorriso->out_drive_handle) {
|
||||||
sprintf(xorriso->info_text,"Giving up -outdev %s",
|
sprintf(xorriso->info_text,"Giving up -outdev %s",
|
||||||
Text_shellsafe(xorriso->indev, sfe, 0));
|
Text_shellsafe(xorriso->outdev, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
}
|
}
|
||||||
ret= Xorriso_give_up_drive(xorriso, flag&3);
|
ret= Xorriso_give_up_drive(xorriso, flag&3);
|
||||||
@ -3683,8 +3721,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|||||||
" Set output drive and switch from growing to modifying.",
|
" Set output drive and switch from growing to modifying.",
|
||||||
" -ban_stdio_write",
|
" -ban_stdio_write",
|
||||||
" Allow for writing only the usage of optical drives.",
|
" Allow for writing only the usage of optical drives.",
|
||||||
" -blank \"fast\"|\"all\"|\"format\"",
|
" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
|
||||||
" Blank media resp. invalidate ISO image on media.",
|
" Blank media resp. invalidate ISO image on media.",
|
||||||
|
" -format \"full\"",
|
||||||
|
" Format DVD-RW to overwriteable state or de-ice DVD+RW.",
|
||||||
" -V volume_id Specifies the volume ID text.",
|
" -V volume_id Specifies the volume ID text.",
|
||||||
"",
|
"",
|
||||||
" -J Generate Joliet info additional to Rock Ridge info.",
|
" -J Generate Joliet info additional to Rock Ridge info.",
|
||||||
@ -4604,6 +4644,10 @@ next_command:;
|
|||||||
(*idx)+= 2;
|
(*idx)+= 2;
|
||||||
ret= Xorriso_option_chowni(xorriso, arg1, arg2, argc, argv, idx, 0);
|
ret= Xorriso_option_chowni(xorriso, arg1, arg2, argc, argv, idx, 0);
|
||||||
|
|
||||||
|
} else if(strcmp(cmd,"-close")==0) {
|
||||||
|
(*idx)++;
|
||||||
|
ret= Xorriso_option_close(xorriso, arg1, 0);
|
||||||
|
|
||||||
} else if(strcmp(cmd,"-commit")==0) {
|
} else if(strcmp(cmd,"-commit")==0) {
|
||||||
ret= Xorriso_option_commit(xorriso, 0);
|
ret= Xorriso_option_commit(xorriso, 0);
|
||||||
|
|
||||||
@ -4720,7 +4764,7 @@ next_command:;
|
|||||||
if(ret==3)
|
if(ret==3)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
|
||||||
} else if(strcmp(cmd,"-options_from_file")==0) {
|
} else if(strcmp(cmd,"-overwrite")==0) {
|
||||||
(*idx)++;
|
(*idx)++;
|
||||||
ret= Xorriso_option_overwrite(xorriso,arg1,0);
|
ret= Xorriso_option_overwrite(xorriso,arg1,0);
|
||||||
|
|
||||||
|
@ -185,5 +185,7 @@ int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
|
|||||||
|
|
||||||
int Sfile_str(char target[SfileadrL], char *source, int flag);
|
int Sfile_str(char target[SfileadrL], char *source, int flag);
|
||||||
|
|
||||||
|
double Sfile_microtime(int flag);
|
||||||
|
|
||||||
#endif /* Xorriso_private_includeD */
|
#endif /* Xorriso_private_includeD */
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2007.10.20.170731"
|
#define Xorriso_timestamP "2007.10.20.171046"
|
||||||
|
@ -168,9 +168,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
/* >>> show drive and media status */;
|
/* >>> show drive and media status */;
|
||||||
|
|
||||||
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
||||||
sprintf(xorriso->info_text, "Unsuitable disc status");
|
sprintf(xorriso->info_text, "Disc status unsuitable for writing");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||||
ret= 0; goto ex;
|
|
||||||
}
|
}
|
||||||
/* fill read opts */
|
/* fill read opts */
|
||||||
ropts.norock= 0;
|
ropts.norock= 0;
|
||||||
@ -325,6 +324,13 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
|
|||||||
ret= Xorriso_pacifier_loop(xorriso, drive, 0);
|
ret= Xorriso_pacifier_loop(xorriso, drive, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
if(!isoburn_drive_wrote_well(drive)) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"libburn indicates failure with writing.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
ret= 0; goto ex;
|
||||||
|
}
|
||||||
|
|
||||||
ret= isoburn_activate_session(drive);
|
ret= isoburn_activate_session(drive);
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
@ -334,7 +340,7 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret= 1;
|
ret= 1;
|
||||||
ex:;
|
ex:;
|
||||||
if(disc!=NULL)
|
if(disc!=NULL)
|
||||||
@ -350,18 +356,38 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
int ret, size, free_bytes, i;
|
int ret, size, free_bytes, i;
|
||||||
struct burn_progress progress;
|
struct burn_progress progress;
|
||||||
char *status_text;
|
char *status_text;
|
||||||
|
enum burn_drive_status drive_status;
|
||||||
|
double start_time, current_time;
|
||||||
|
|
||||||
|
start_time= Sfile_microtime(0);
|
||||||
while(burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING)
|
while(burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING)
|
||||||
usleep(100002);
|
usleep(100002);
|
||||||
|
|
||||||
while(burn_drive_get_status(drive, &progress) != BURN_DRIVE_IDLE) {
|
while(1) {
|
||||||
sprintf(xorriso->info_text, "Writing: sector %d of %d",
|
drive_status= burn_drive_get_status(drive, &progress);
|
||||||
progress.sector, progress.sectors);
|
if(drive_status == BURN_DRIVE_IDLE)
|
||||||
ret= isoburn_get_fifo_status(drive, &size, &free_bytes, &status_text);
|
break;
|
||||||
if(ret>0 )
|
current_time= Sfile_microtime(0);
|
||||||
sprintf(xorriso->info_text+strlen(xorriso->info_text),
|
if(drive_status == BURN_DRIVE_WRITING) {
|
||||||
" [fifo %s, %2d%% fill]", status_text,
|
sprintf(xorriso->info_text, "Writing: sector %d of %d",
|
||||||
(int) (100.0-100.0*((double) free_bytes)/(double) size));
|
progress.sector, progress.sectors);
|
||||||
|
ret= isoburn_get_fifo_status(drive, &size, &free_bytes, &status_text);
|
||||||
|
if(ret>0 )
|
||||||
|
sprintf(xorriso->info_text+strlen(xorriso->info_text),
|
||||||
|
" [fifo %s, %2d%% fill]", status_text,
|
||||||
|
(int) (100.0-100.0*((double) free_bytes)/(double) size));
|
||||||
|
} else if(drive_status == BURN_DRIVE_CLOSING_SESSION ||
|
||||||
|
drive_status == BURN_DRIVE_CLOSING_TRACK)
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"Closing track/session. Working since %.f seconds",
|
||||||
|
current_time-start_time);
|
||||||
|
else if(drive_status == BURN_DRIVE_FORMATTING)
|
||||||
|
sprintf(xorriso->info_text, "Formatting. Working since %.f seconds",
|
||||||
|
current_time-start_time);
|
||||||
|
else
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"Thank you for being patient since %.f seconds",
|
||||||
|
current_time-start_time);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||||
|
|
||||||
for(i= 0; i<10; i++) {
|
for(i= 0; i<10; i++) {
|
||||||
@ -768,10 +794,13 @@ int Xorriso_tell_media_space(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* @param flag bit0=fast */
|
/* @param flag bit0=fast , bit1=deformat
|
||||||
|
@return 0=failure, did not touch media , -1=failure, altered media
|
||||||
|
1=success, altered media , 2=success, did not touch media
|
||||||
|
*/
|
||||||
int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret, do_deformat= 0;
|
||||||
struct burn_drive_info *dinfo;
|
struct burn_drive_info *dinfo;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
enum burn_disc_status disc_state;
|
enum burn_disc_status disc_state;
|
||||||
@ -779,6 +808,7 @@ int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
|||||||
double percent = 1.0;
|
double percent = 1.0;
|
||||||
int current_profile;
|
int current_profile;
|
||||||
char current_profile_name[80];
|
char current_profile_name[80];
|
||||||
|
char mode_names[4][80]= {"all", "fast", "deformat", "deformat_quickest"};
|
||||||
|
|
||||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||||
"on attempt to -blank", 2);
|
"on attempt to -blank", 2);
|
||||||
@ -790,8 +820,21 @@ int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
|||||||
/* >>> */;
|
/* >>> */;
|
||||||
|
|
||||||
disc_state = isoburn_disc_get_status(drive);
|
disc_state = isoburn_disc_get_status(drive);
|
||||||
if(current_profile == 0x13) {
|
if(current_profile == 0x13) { /* overwriteable DVD-RW */
|
||||||
; /* formatted DVD-RW will get blanked to sequential state */
|
/* Depending on flag bit1 formatted DVD-RW will get blanked to sequential
|
||||||
|
state or pseudo blanked by invalidating an eventual ISO image. */
|
||||||
|
if(flag&2)
|
||||||
|
do_deformat= 1;
|
||||||
|
} else if(current_profile == 0x14) { /* sequential DVD-RW */
|
||||||
|
if((flag&1) && !(flag&2)) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-blank: DVD-RW present. Mode 'fast' defaulted to mode 'all'.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"Mode 'deformat_quickest' produces single-session-only media.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
||||||
|
flag&= ~1;
|
||||||
|
}
|
||||||
} else if(disc_state == BURN_DISC_BLANK) {
|
} else if(disc_state == BURN_DISC_BLANK) {
|
||||||
sprintf(xorriso->info_text,"Blank media detected. Will leave it untouched");
|
sprintf(xorriso->info_text,"Blank media detected. Will leave it untouched");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
@ -812,10 +855,21 @@ int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
sprintf(xorriso->info_text, "Beginning to %s-blank media.\n",
|
if(xorriso->do_dummy) {
|
||||||
((flag&1)?"fast":"full"));
|
sprintf(xorriso->info_text,
|
||||||
|
"-dummy mode prevents blanking of media in mode '%s'.",
|
||||||
|
mode_names[flag&3]);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
sprintf(xorriso->info_text, "Beginning to blank media in mode '%s'.\n",
|
||||||
|
mode_names[flag&3]);
|
||||||
Xorriso_info(xorriso,0);
|
Xorriso_info(xorriso,0);
|
||||||
isoburn_disc_erase(drive, (flag&1));
|
|
||||||
|
if(do_deformat)
|
||||||
|
burn_disc_erase(drive, (flag&1));
|
||||||
|
else
|
||||||
|
isoburn_disc_erase(drive, (flag&1));
|
||||||
usleep(1000000);
|
usleep(1000000);
|
||||||
while (burn_drive_get_status(drive, &p) != BURN_DRIVE_IDLE) {
|
while (burn_drive_get_status(drive, &p) != BURN_DRIVE_IDLE) {
|
||||||
if(p.sectors>0 && p.sector>=0) /* display 1 to 99 percent */
|
if(p.sectors>0 && p.sector>=0) /* display 1 to 99 percent */
|
||||||
@ -824,15 +878,89 @@ int Xorriso_blank_media(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||||
usleep(1000000);
|
usleep(1000000);
|
||||||
}
|
}
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
sprintf(xorriso->info_text, "Blanking done\n");
|
sprintf(xorriso->info_text, "Blanking done\n");
|
||||||
Xorriso_info(xorriso,0);
|
Xorriso_info(xorriso,0);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* @return 0=failure, did not touch media , -1=failure, altered media
|
||||||
|
1=success, altered media , 2=success, did not touch media
|
||||||
|
*/
|
||||||
int Xorriso_format_media(struct XorrisO *xorriso, int flag)
|
int Xorriso_format_media(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
fprintf(stderr, ">>> XORRISO : -format not implemented yet\n");
|
int ret, mode_flag= 0;
|
||||||
|
struct burn_drive_info *dinfo;
|
||||||
|
struct burn_drive *drive;
|
||||||
|
|
||||||
|
#ifdef NIX
|
||||||
|
struct burn_progress p;
|
||||||
|
double percent = 1.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int current_profile;
|
||||||
|
char current_profile_name[80];
|
||||||
|
|
||||||
|
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||||
|
"on attempt to -format", 2);
|
||||||
|
if(ret<=0)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
burn_disc_get_profile(drive, ¤t_profile, current_profile_name);
|
||||||
|
if(current_profile == 0x14) {
|
||||||
|
; /* ok DVD-RW sequential */
|
||||||
|
} else if(current_profile == 0x1a) {
|
||||||
|
mode_flag= 2;
|
||||||
|
} else {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"Can only -format DVD+RW and sequential DVD-RW");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
sprintf(xorriso->info_text,"Media current: %s (%4.4xh)",
|
||||||
|
current_profile_name, current_profile);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(xorriso->do_dummy) {
|
||||||
|
sprintf(xorriso->info_text, "-dummy mode prevents formatting of media.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
sprintf(xorriso->info_text, "Beginning to format media.\n");
|
||||||
|
Xorriso_info(xorriso, 0);
|
||||||
|
burn_disc_format(drive, (off_t) 0, mode_flag);
|
||||||
|
|
||||||
|
ret= Xorriso_pacifier_loop(xorriso, drive, 0);
|
||||||
|
if(ret<=0)
|
||||||
|
return(ret);
|
||||||
|
|
||||||
|
#ifdef NIX
|
||||||
|
|
||||||
|
usleep(1000000);
|
||||||
|
while(burn_drive_get_status(drive, &p) != BURN_DRIVE_IDLE) {
|
||||||
|
if(p.sectors>0 && p.sector>=0) /* display 1 to 99 percent */
|
||||||
|
percent = 1.0 + ((double) p.sector+1.0)
|
||||||
|
/ ((double) p.sectors) * 98.0;
|
||||||
|
sprintf(xorriso->info_text, "Formatting ( %.1f%% done )", percent);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||||
|
usleep(1000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
burn_disc_get_profile(dinfo[0].drive, ¤t_profile, current_profile_name);
|
||||||
|
sprintf(xorriso->info_text, "Media type now: %4.4xh \"%s\"\n",
|
||||||
|
current_profile, current_profile_name);
|
||||||
|
Xorriso_info(xorriso, 0);
|
||||||
|
if(current_profile != 0x13 && current_profile != 0x1a) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"Failed to change media profile to desired value.");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
sprintf(xorriso->info_text, "Formatting done\n");
|
||||||
|
Xorriso_info(xorriso,0);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user