|
|
|
@ -932,6 +932,24 @@ enum response scsi_error_msg(struct burn_drive *d, unsigned char *sense,
|
|
|
|
|
int *key, int *asc, int *ascq) |
|
|
|
|
{ |
|
|
|
|
char *msg; |
|
|
|
|
static char key_def[16][40] = { |
|
|
|
|
"(no specific error)", |
|
|
|
|
"Recovered error", |
|
|
|
|
"Drive not ready", |
|
|
|
|
"Medium error", |
|
|
|
|
"Drive error", |
|
|
|
|
"Illegal request", |
|
|
|
|
"Drive event", |
|
|
|
|
"Data protected", |
|
|
|
|
"Blank/Nonblank", |
|
|
|
|
"Vendor specific code", |
|
|
|
|
"Copy aborted", |
|
|
|
|
"Command aborted", |
|
|
|
|
"(obsolete error code)", |
|
|
|
|
"Volume overflow", |
|
|
|
|
"Miscompare", |
|
|
|
|
"(reserved error code)", |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
msg= msg_data; |
|
|
|
|
*key= *asc= *ascq= -1; |
|
|
|
@ -943,7 +961,7 @@ enum response scsi_error_msg(struct burn_drive *d, unsigned char *sense,
|
|
|
|
|
if (senselen<=0 || senselen>13) |
|
|
|
|
*ascq = sense[13]; |
|
|
|
|
|
|
|
|
|
sprintf(msg, "[%X %2.2X %2.2X] ", *key, *asc, *ascq); |
|
|
|
|
sprintf(msg, "[%X %2.2X %2.2X]", (*key) & 0xf, *asc, *ascq); |
|
|
|
|
msg= msg + strlen(msg); |
|
|
|
|
|
|
|
|
|
burn_print(12, "CONDITION: 0x%x 0x%x 0x%x on %s %s\n", |
|
|
|
@ -1212,8 +1230,8 @@ enum response scsi_error_msg(struct burn_drive *d, unsigned char *sense,
|
|
|
|
|
return FAIL; |
|
|
|
|
} |
|
|
|
|
sprintf(msg_data, |
|
|
|
|
"Failure. See mmc3r10g.pdf: Sense Key %X ASC %2.2X ASCQ %2.2X", |
|
|
|
|
*key, *asc, *ascq); |
|
|
|
|
"See MMC specs: Sense Key %X \"%s\", ASC %2.2X ASCQ %2.2X", |
|
|
|
|
*key & 0xf, key_def[(*key) & 0xf], *asc, *ascq); |
|
|
|
|
return FAIL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|