diff --git a/mtx-1.3.12/mtx.c b/mtx-1.3.12/mtx.c index dd3e958..8a43fbf 100644 --- a/mtx-1.3.12/mtx.c +++ b/mtx-1.3.12/mtx.c @@ -1012,6 +1012,60 @@ void execute_command(struct command_table_struct *command) command->command(); } +/* + execute_command used in python call stopped working with + new swig and Alma linux 9. The extern declaration did not work + As the only command called over python was Status the call to it was + implemented +*/ +void execute_status_command(void) +{ + struct command_table_struct command; + RequestSense_T RequestSense; + + command = command_table[1]; + if (device == NULL && command.need_device) + { + /* try to get it from TAPE environment variable... */ + device = getenv("CHANGER"); + if (device == NULL) + { + device = getenv("TAPE"); + if (device == NULL) + { + device = "/dev/changer"; /* Usage(); */ + } + } + open_device(); + } + if (command.need_status && absolute_addressing) + { + FreeElementData(ElementStatus); + ElementStatus = NULL; + } + if (!ElementStatus && command.need_status) + { + inquiry_info = RequestInquiry(MediumChangerFD,&RequestSense); + if (!inquiry_info) + { + PrintRequestSense(&RequestSense); + FatalError("INQUIRY command Failed\n"); + } + + ElementStatus = ReadElementStatus(MediumChangerFD, &RequestSense, inquiry_info, &SCSI_Flags); + if (!ElementStatus) + { + PrintRequestSense(&RequestSense); + FatalError("READ ELEMENT STATUS Command Failed\n"); + } + } + + /* okay, now to execute the command... */ + command.command(); +} + + + /* parse_args(): * Basically, we are parsing argv/argc. We can have multiple commands * on a line now, such as "unload 3 0 load 4 0" to unload one tape and diff --git a/mtx-1.3.12/mtx.spec b/mtx-1.3.12/mtx.spec index 5fe7d85..78afc48 100644 --- a/mtx-1.3.12/mtx.spec +++ b/mtx-1.3.12/mtx.spec @@ -1,6 +1,6 @@ Name: mtx Version: 1.3.12 -Release: 22fnal_jinr%{?dist} +Release: 29fnal_jinr%{?dist} Summary: SCSI media changer control program License: GPLv2 Group: Applications/System @@ -51,6 +51,8 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Apr 01 2025 Alexander Moibenko - 1.3.12.29fnal_jinr +- execute_command stopped working on new system replaced it * Wed Aug 28 2024 Alexander Moibenko - 1.3.12.22fnal_jinr - More fixes in copying serial number * Thu Dec 07 2023 Alexander Moibenko - 1.3.12-19fnal diff --git a/mtx-1.3.12/mtxl.c b/mtx-1.3.12/mtxl.c index dddf4e9..92569f6 100644 --- a/mtx-1.3.12/mtxl.c +++ b/mtx-1.3.12/mtxl.c @@ -626,6 +626,7 @@ void copy_char_buffer(unsigned char *src, unsigned char *dest, int num) { *dest_tmp++ = 0; } + dest_tmp = dest; /* there happen cases when serial number begins with several ' ' */ /* skip them */ while (*src == ' ') { @@ -638,6 +639,12 @@ void copy_char_buffer(unsigned char *src, unsigned char *dest, int num) } src++; } + /* there happen cases when serial number is '' */ + /* take care of this */ + if (strlen(dest_tmp) == 0) { + *dest++ = 'X'; + *dest = 'X'; + } } /* This #%!@# routine has more parameters than I can count! */ @@ -1122,7 +1129,6 @@ static void ParseElementStatus( int *EmptyStorageElementAddress, } else { - copy_char_buffer(inqs->SerialNumber, ElementStatus->DataTransferElementSerialNumber[ElementStatus->DataTransferElementCount], 12); copy_char_buffer(inqs->ProductIdentification+2, ElementStatus->DataTransferElementProductId[ElementStatus->DataTransferElementCount], 12); } diff --git a/mtx-1.3.12/tapeinfo.c b/mtx-1.3.12/tapeinfo.c index 276abc2..2e79bd4 100644 --- a/mtx-1.3.12/tapeinfo.c +++ b/mtx-1.3.12/tapeinfo.c @@ -483,7 +483,7 @@ static void ReportTapeAlert(DEVICE_TYPE fd) { if (result->data[i]) { - printf("TapeAlert[%d]: %s.\n", i, tapealert_messages[i]); + printf("TapeAlert[%x]: %s.\n", i, tapealert_messages[i]); } }