diff --git a/xorriso/drive_mgt.c b/xorriso/drive_mgt.c index 89dc2a3f..8b78cb5b 100644 --- a/xorriso/drive_mgt.c +++ b/xorriso/drive_mgt.c @@ -1670,6 +1670,8 @@ int Xorriso_list_profiles(struct XorrisO *xorriso, int flag) int Xorriso_atip(struct XorrisO *xorriso, int flag) { int ret, profile_number= 0; + int num_profiles= 0, profiles[64], i, can_write= 0, pf; + char is_current[64]; char *respt, profile_name[80]; double x_speed_max, x_speed_min= -1.0; struct burn_drive_info *dinfo; @@ -1709,9 +1711,29 @@ int Xorriso_atip(struct XorrisO *xorriso, int flag) Xorriso_result(xorriso,1); if(flag&1) return(1); - sprintf(respt, "Driver flags : BURNFREE\n"); - sprintf(respt+strlen(respt), "Supported modes: SAO TAO\n"); - Xorriso_result(xorriso,1); + + /* Do not report "Supported modes: SAO TAO" with -ROM drives */ + burn_drive_get_all_profiles(drive, &num_profiles, profiles, is_current); + if(num_profiles > 0) { + for(i= 0; i < num_profiles; i++) { + pf= profiles[i]; + if(pf == 0x09 || pf == 0x0a || pf == 0x11 || pf == 0x12 || pf == 0x13 || + pf == 0x14 || pf == 0x15 || pf == 0x1a || pf == 0x1b || pf == 0x2b || + pf == 0x41 || pf == 0x43 || pf == 0xffff) { + can_write= 1; + break; + } + } + } else + can_write= 1; + if(can_write) { + sprintf(respt, "Driver flags : BURNFREE\n"); + sprintf(respt+strlen(respt), "Supported modes: SAO TAO\n"); + Xorriso_result(xorriso,1); + } else if(flag & 2) { + sprintf(xorriso->info_text, "Not a CD/DVD/BD recorder"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + } if(flag&2) return(1); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index c5237273..51145f1d 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.10.25.103839" +#define Xorriso_timestamP "2011.10.25.160042"