diff --git a/mtx-1.3.12.tgz b/mtx-1.3.12.tgz index d536824..b7e5ea2 100644 Binary files a/mtx-1.3.12.tgz and b/mtx-1.3.12.tgz differ diff --git a/mtx-1.3.12/mtx.c b/mtx-1.3.12/mtx.c index 43f251e..a771aea 100644 --- a/mtx-1.3.12/mtx.c +++ b/mtx-1.3.12/mtx.c @@ -502,12 +502,13 @@ static void Status(void) printf("Data Transfer Element %d:", TransferElementNumber); } else { - //printf("SSSSSNNNNN %s\n", ElementStatus->DataTransferElementSerialNumber[TransferElementNumber]); printf("Data Transfer Element %d ", ElementStatus->DataTransferElementAddress[TransferElementNumber]); phys_loc = (PhysicalLocation_T *) &ElementStatus->DataTransferElementPhysicalLocation[TransferElementNumber]; - printf("Phys Loc F%u,C%u,R%u,Z%u SN%s:", + printf("Phys Loc F%u,C%u,R%u,Z%u SN%s ID %s:", phys_loc->frame, phys_loc->column, phys_loc->row, phys_loc->zone, - ElementStatus->DataTransferElementSerialNumber[TransferElementNumber]); + ElementStatus->DataTransferElementSerialNumber[TransferElementNumber], + ElementStatus->DataTransferElementProductId[TransferElementNumber] + ); } if (ElementStatus->DataTransferElementFull[TransferElementNumber]) { diff --git a/mtx-1.3.12/mtx.h b/mtx-1.3.12/mtx.h index 51ac2c0..a56282d 100644 --- a/mtx-1.3.12/mtx.h +++ b/mtx-1.3.12/mtx.h @@ -575,6 +575,7 @@ typedef struct ElementStatus { int *DataTransferElementAddress; /* array. */ int *DataTransferElementSourceStorageElementNumber; /* array */ int *DataTransferElementPhysicalLocation; /*array */ + serialnumber *DataTransferElementProductId; /*array */ serialnumber *DataTransferElementSerialNumber; /*array */ barcode *StorageElementPhysicalLocation; /*array */ barcode *DataTransferPrimaryVolumeTag; /* array. */ diff --git a/mtx-1.3.12/mtxl.c b/mtx-1.3.12/mtxl.c index 01c75cd..78287ee 100644 --- a/mtx-1.3.12/mtxl.c +++ b/mtx-1.3.12/mtxl.c @@ -528,6 +528,7 @@ static void FreeElementData(ElementStatus_T *data) free(data->DataTransferElementAddress); free(data->DataTransferElementSourceStorageElementNumber); free(data->DataTransferElementPhysicalLocation); + free(data->DataTransferElementProductId); free(data->DataTransferElementSerialNumber); free(data->StorageElementPhysicalLocation); free(data->DataTransferPrimaryVolumeTag); @@ -557,6 +558,8 @@ static ElementStatus_T *AllocateElementData(ElementModeSense_T *mode_sense) (int *)xzmalloc(sizeof(int) * (mode_sense->NumDataTransfer + 1)); retval->DataTransferElementPhysicalLocation = (int *)xzmalloc(sizeof(int) * (mode_sense->NumDataTransfer + 1)); + retval->DataTransferElementProductId = + (serialnumber *)xzmalloc(sizeof(serialnumber) * (mode_sense->NumDataTransfer + 1)); retval->DataTransferElementSerialNumber = (serialnumber *)xzmalloc(sizeof(serialnumber) * (mode_sense->NumDataTransfer + 1)); retval->StorageElementPhysicalLocation = @@ -608,13 +611,13 @@ void copy_physical_location(unsigned char *src, unsigned char *dest) strcpy((char *)dest, (char *)src); } -void copy_serial_number(unsigned char *src, unsigned char *dest) +void copy_char_buffer(unsigned char *src, unsigned char *dest, int num) { int i; while ((*src< 32) || (*src > 127)) { src++; } - for (i=0; i < 12; i++) + for (i=0; i < num; i++) { *dest = *src++; @@ -1096,7 +1099,8 @@ static void ParseElementStatus( int *EmptyStorageElementAddress, BigEndian16(TransportElementDescriptor->SourceStorageElementAddress); InquiryShort_T *inqs; inqs = (InquiryShort_T *) TransportElementDescriptor->PrimaryVolumeTag; - copy_serial_number(inqs->SerialNumber, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount]); + copy_char_buffer(inqs->SerialNumber, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount], 12); + copy_char_buffer(inqs->ProductIdentification+2, ElementStatus->DataTransferElementProductId[ElementStatus->DataTransferElementCount], 12); ElementStatus->DataTransferElementCount++; break; }