Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Jun 2023 15:31:12 GMT
From:      Muhammad Moinur Rahman <bofh@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 34315a4bc087 - main - misc/mtx: Fix build on llvm15
Message-ID:  <202306081531.358FVChZ062635@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=34315a4bc087544cf809bcd96499b7a18c877163

commit 34315a4bc087544cf809bcd96499b7a18c877163
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2023-06-08 15:28:56 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2023-06-08 15:30:56 +0000

    misc/mtx: Fix build on llvm15
---
 misc/mtx/Makefile                     |  10 +
 misc/mtx/files/extra-patch-FreeBSD_14 | 923 ++++++++++++++++++++++++++++++++++
 2 files changed, 933 insertions(+)

diff --git a/misc/mtx/Makefile b/misc/mtx/Makefile
index cd82160c1283..71f65f1667e1 100644
--- a/misc/mtx/Makefile
+++ b/misc/mtx/Makefile
@@ -11,15 +11,25 @@ WWW=		https://sourceforge.net/projects/mtx/
 LICENSE=	GPLv2
 
 USES=		gmake
+
 GNU_CONFIGURE=	yes
+
 PLIST_FILES=	sbin/mtx sbin/tapeinfo sbin/loaderinfo sbin/scsitape sbin/scsieject \
 		man/man1/loaderinfo.1.gz man/man1/mtx.1.gz man/man1/tapeinfo.1.gz \
 		man/man1/scsitape.1.gz man/man1/scsieject.1.gz
 
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1400079
+EXTRA_PATCHES=	${PATCHDIR}/extra-patch-FreeBSD_14
+.endif
+
 post-patch:
 	${REINPLACE_CMD} -e 's|@prefix@|${STAGEDIR}${PREFIX}|g' \
 		${WRKSRC}/Makefile.in
 	${REINPLACE_CMD} -e 's|@mandir@|${STAGEDIR}${PREFIX}/man|g' \
 		${WRKSRC}/Makefile.in
+#	${REINPLACE_CMD} -e '/false, true/d' \
+#		${WRKSRC}/mtx.h
 
 .include <bsd.port.mk>
diff --git a/misc/mtx/files/extra-patch-FreeBSD_14 b/misc/mtx/files/extra-patch-FreeBSD_14
new file mode 100644
index 000000000000..e5fbb2c6853d
--- /dev/null
+++ b/misc/mtx/files/extra-patch-FreeBSD_14
@@ -0,0 +1,923 @@
+--- mtx.h.orig	2023-06-08 15:05:44 UTC
++++ mtx.h
+@@ -7,7 +7,7 @@
+ 
+ 	$Date: 2008-08-19 03:03:38 -0700 (Tue, 19 Aug 2008) $
+ 	$Revision: 193 $
+-	See mtx.c for licensing information. 
++	See mtx.c for licensing information.
+ 
+ */
+ 
+@@ -68,6 +68,9 @@
+ #  include <sys/param.h>
+ #endif
+ 
++#if HAVE_STDBOOL_H
++#include <stdbool.h>
++#endif
+ /* Now greatly modified to use GNU Autoconf stuff: */
+ /* If we use the 'sg' interface, like Linux, do this: */
+ #if HAVE_SCSI_SG_H
+@@ -148,7 +151,7 @@ typedef dsreq_t *DEVICE_TYPE; /* 64-bit pointers/32bit
+ #endif /* VMS protect. */
+ 
+ /* Do a test for LITTLE_ENDIAN_BITFIELDS. Use WORDS_BIGENDIAN as set
+- * by configure: 
++ * by configure:
+  */
+ 
+ #if WORDS_BIGENDIAN
+@@ -183,7 +186,7 @@ typedef dsreq_t *DEVICE_TYPE; /* 64-bit pointers/32bit
+ #undef S_VOLUME_OVERFLOW
+ #endif
+ 
+-/* Note: These are only used for defaults for when we don't have 
++/* Note: These are only used for defaults for when we don't have
+  * the element assignment mode page to tell us real amount...
+  */
+ #define MAX_STORAGE_ELEMENTS 64 /* for the BIG jukeboxes! */
+@@ -212,18 +215,11 @@ typedef struct SCSI_Flags_Struct
+ }	SCSI_Flags_T;
+ 
+ #ifdef _MSC_VER
+-typedef unsigned char boolean;
+-
+-#define false   0
+-#define true    1
+-
+ typedef unsigned char Direction_T;
+ 
+ #define Input   0
+ #define Output  1
+ #else
+-typedef enum { false, true } boolean;
+-
+ typedef enum { Input, Output } Direction_T;
+ #endif
+ 
+@@ -237,66 +233,66 @@ typedef struct Inquiry
+   unsigned char PeripheralDeviceType:5;			/* Byte 0 Bits 0-4 */
+   unsigned char PeripheralQualifier:3;			/* Byte 0 Bits 5-7 */
+   unsigned char DeviceTypeModifier:7;			/* Byte 1 Bits 0-6 */
+-  boolean RMB:1;					/* Byte 1 Bit 7 */
++  bool RMB:1;					/* Byte 1 Bit 7 */
+   unsigned char ANSI_ApprovedVersion:3;			/* Byte 2 Bits 0-2 */
+   unsigned char ECMA_Version:3;				/* Byte 2 Bits 3-5 */
+   unsigned char ISO_Version:2;				/* Byte 2 Bits 6-7 */
+   unsigned char ResponseDataFormat:4;			/* Byte 3 Bits 0-3 */
+   unsigned char :2;					/* Byte 3 Bits 4-5 */
+-  boolean TrmIOP:1;					/* Byte 3 Bit 6 */
+-  boolean AENC:1;					/* Byte 3 Bit 7 */
++  bool TrmIOP:1;					/* Byte 3 Bit 6 */
++  bool AENC:1;					/* Byte 3 Bit 7 */
+ #else
+   unsigned char PeripheralQualifier:3;			/* Byte 0 Bits 5-7 */
+   unsigned char PeripheralDeviceType:5;			/* Byte 0 Bits 0-4 */
+-  boolean RMB:1;					/* Byte 1 Bit 7 */
++  bool RMB:1;					/* Byte 1 Bit 7 */
+   unsigned char DeviceTypeModifier:7;			/* Byte 1 Bits 0-6 */
+   unsigned char ISO_Version:2;				/* Byte 2 Bits 6-7 */
+   unsigned char ECMA_Version:3;				/* Byte 2 Bits 3-5 */
+   unsigned char ANSI_ApprovedVersion:3;			/* Byte 2 Bits 0-2 */
+-  boolean AENC:1;					/* Byte 3 Bit 7 */
+-  boolean TrmIOP:1;					/* Byte 3 Bit 6 */
++  bool AENC:1;					/* Byte 3 Bit 7 */
++  bool TrmIOP:1;					/* Byte 3 Bit 6 */
+   unsigned char :2;					/* Byte 3 Bits 4-5 */
+   unsigned char ResponseDataFormat:4;			/* Byte 3 Bits 0-3 */
+ #endif
+   unsigned char AdditionalLength;			/* Byte 4 */
+   unsigned char :8;					/* Byte 5 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+-  boolean ADDR16:1;                                    /* Byte 6 bit 0 */
+-  boolean Obs6_1:1;                                    /* Byte 6 bit 1 */
+-  boolean Obs6_2:1; /* obsolete */                     /* Byte 6 bit 2 */
+-  boolean MChngr:1; /* Media Changer */                /* Byte 6 bit 3 */
+-  boolean MultiP:1;                                    /* Byte 6 bit 4 */
+-  boolean VS:1;                                        /* Byte 6 bit 5 */
+-  boolean EncServ:1;                                   /* Byte 6 bit 6 */
+-  boolean BQue:1;                                      /* Byte 6 bit 7 */
++  bool ADDR16:1;                                    /* Byte 6 bit 0 */
++  bool Obs6_1:1;                                    /* Byte 6 bit 1 */
++  bool Obs6_2:1; /* obsolete */                     /* Byte 6 bit 2 */
++  bool MChngr:1; /* Media Changer */                /* Byte 6 bit 3 */
++  bool MultiP:1;                                    /* Byte 6 bit 4 */
++  bool VS:1;                                        /* Byte 6 bit 5 */
++  bool EncServ:1;                                   /* Byte 6 bit 6 */
++  bool BQue:1;                                      /* Byte 6 bit 7 */
+ #else
+-  boolean BQue:1;                                      /* Byte 6 bit 7 */
+-  boolean EncServ:1;                                   /* Byte 6 bit 6 */
+-  boolean VS:1;                                        /* Byte 6 bit 5 */
+-  boolean MultiP:1;                                    /* Byte 6 bit 4 */
+-  boolean MChngr:1; /* Media Changer */                /* Byte 6 bit 3 */
+-  boolean Obs6_2:1; /* obsolete */                     /* Byte 6 bit 2 */
+-  boolean Obs6_1:1;                                    /* Byte 6 bit 1 */
+-  boolean ADDR16:1;                                    /* Byte 6 bit 0 */
++  bool BQue:1;                                      /* Byte 6 bit 7 */
++  bool EncServ:1;                                   /* Byte 6 bit 6 */
++  bool VS:1;                                        /* Byte 6 bit 5 */
++  bool MultiP:1;                                    /* Byte 6 bit 4 */
++  bool MChngr:1; /* Media Changer */                /* Byte 6 bit 3 */
++  bool Obs6_2:1; /* obsolete */                     /* Byte 6 bit 2 */
++  bool Obs6_1:1;                                    /* Byte 6 bit 1 */
++  bool ADDR16:1;                                    /* Byte 6 bit 0 */
+ #endif
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+-  boolean SftRe:1;					/* Byte 7 Bit 0 */
+-  boolean CmdQue:1;					/* Byte 7 Bit 1 */
+-  boolean :1;						/* Byte 7 Bit 2 */
+-  boolean Linked:1;					/* Byte 7 Bit 3 */
+-  boolean Sync:1;					/* Byte 7 Bit 4 */
+-  boolean WBus16:1;					/* Byte 7 Bit 5 */
+-  boolean WBus32:1;					/* Byte 7 Bit 6 */
+-  boolean RelAdr:1;					/* Byte 7 Bit 7 */
++  bool SftRe:1;					/* Byte 7 Bit 0 */
++  bool CmdQue:1;					/* Byte 7 Bit 1 */
++  bool :1;						/* Byte 7 Bit 2 */
++  bool Linked:1;					/* Byte 7 Bit 3 */
++  bool Sync:1;					/* Byte 7 Bit 4 */
++  bool WBus16:1;					/* Byte 7 Bit 5 */
++  bool WBus32:1;					/* Byte 7 Bit 6 */
++  bool RelAdr:1;					/* Byte 7 Bit 7 */
+ #else
+-  boolean RelAdr:1;					/* Byte 7 Bit 7 */
+-  boolean WBus32:1;					/* Byte 7 Bit 6 */
+-  boolean WBus16:1;					/* Byte 7 Bit 5 */
+-  boolean Sync:1;					/* Byte 7 Bit 4 */
+-  boolean Linked:1;					/* Byte 7 Bit 3 */
+-  boolean :1;						/* Byte 7 Bit 2 */
+-  boolean CmdQue:1;					/* Byte 7 Bit 1 */
+-  boolean SftRe:1;					/* Byte 7 Bit 0 */
++  bool RelAdr:1;					/* Byte 7 Bit 7 */
++  bool WBus32:1;					/* Byte 7 Bit 6 */
++  bool WBus16:1;					/* Byte 7 Bit 5 */
++  bool Sync:1;					/* Byte 7 Bit 4 */
++  bool Linked:1;					/* Byte 7 Bit 3 */
++  bool :1;						/* Byte 7 Bit 2 */
++  bool CmdQue:1;					/* Byte 7 Bit 1 */
++  bool SftRe:1;					/* Byte 7 Bit 0 */
+ #endif
+   unsigned char VendorIdentification[8];		/* Bytes 8-15 */
+   unsigned char ProductIdentification[16];		/* Bytes 16-31 */
+@@ -319,22 +315,22 @@ typedef struct RequestSense
+ {
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char ErrorCode:7;				/* Byte 0 Bits 0-6 */
+-  boolean Valid:1;					/* Byte 0 Bit 7 */
++  bool Valid:1;					/* Byte 0 Bit 7 */
+ #else
+-  boolean Valid:1;					/* Byte 0 Bit 7 */
++  bool Valid:1;					/* Byte 0 Bit 7 */
+   unsigned char ErrorCode:7;				/* Byte 0 Bits 0-6 */
+ #endif
+   unsigned char SegmentNumber;				/* Byte 1 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char SenseKey:4;				/* Byte 2 Bits 0-3 */
+   unsigned char :1;					/* Byte 2 Bit 4 */
+-  boolean ILI:1;					/* Byte 2 Bit 5 */
+-  boolean EOM:1;					/* Byte 2 Bit 6 */
+-  boolean Filemark:1;					/* Byte 2 Bit 7 */
++  bool ILI:1;					/* Byte 2 Bit 5 */
++  bool EOM:1;					/* Byte 2 Bit 6 */
++  bool Filemark:1;					/* Byte 2 Bit 7 */
+ #else
+-  boolean Filemark:1;					/* Byte 2 Bit 7 */
+-  boolean EOM:1;					/* Byte 2 Bit 6 */
+-  boolean ILI:1;					/* Byte 2 Bit 5 */
++  bool Filemark:1;					/* Byte 2 Bit 7 */
++  bool EOM:1;					/* Byte 2 Bit 6 */
++  bool ILI:1;					/* Byte 2 Bit 5 */
+   unsigned char :1;					/* Byte 2 Bit 4 */
+   unsigned char SenseKey:4;				/* Byte 2 Bits 0-3 */
+ #endif
+@@ -346,15 +342,15 @@ typedef struct RequestSense
+   unsigned char :8;					/* Byte 14 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char BitPointer:3;                           /* Byte 15 */
+-  boolean BPV:1;
++  bool BPV:1;
+   unsigned char :2;
+-  boolean CommandData :1;
+-  boolean SKSV:1;      
++  bool CommandData :1;
++  bool SKSV:1;
+ #else
+-  boolean SKSV:1;      
+-  boolean CommandData :1;
++  bool SKSV:1;
++  bool CommandData :1;
+   unsigned char :2;
+-  boolean BPV:1;
++  bool BPV:1;
+   unsigned char BitPointer:3;                           /* Byte 15 */
+ #endif
+   unsigned char FieldData[2];       	 		/* Byte 16,17 */
+@@ -436,11 +432,11 @@ typedef struct ElementStatusPage
+   ElementTypeCode_T ElementTypeCode:8;			/* Byte 0 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char :6;					/* Byte 1 Bits 0-5 */
+-  boolean AVolTag:1;					/* Byte 1 Bit 6 */
+-  boolean PVolTag:1;					/* Byte 1 Bit 7 */
++  bool AVolTag:1;					/* Byte 1 Bit 6 */
++  bool PVolTag:1;					/* Byte 1 Bit 7 */
+ #else
+-  boolean PVolTag:1;					/* Byte 1 Bit 7 */
+-  boolean AVolTag:1;					/* Byte 1 Bit 6 */
++  bool PVolTag:1;					/* Byte 1 Bit 7 */
++  bool AVolTag:1;					/* Byte 1 Bit 6 */
+   unsigned char :6;					/* Byte 1 Bits 0-5 */
+ #endif
+   unsigned char ElementDescriptorLength[2];		/* Bytes 2-3 */
+@@ -467,15 +463,15 @@ typedef struct TransportElementDescriptorShort
+ {
+   unsigned char ElementAddress[2];			/* Bytes 0-1 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+-  boolean Full:1;					/* Byte 2 Bit 0 */
++  bool Full:1;					/* Byte 2 Bit 0 */
+   unsigned char :1;					/* Byte 2 Bit 1 */
+-  boolean Except:1;					/* Byte 2 Bit 2 */
++  bool Except:1;					/* Byte 2 Bit 2 */
+   unsigned char :5;					/* Byte 2 Bits 3-7 */
+ #else
+   unsigned char :5;					/* Byte 2 Bits 3-7 */
+-  boolean Except:1;					/* Byte 2 Bit 2 */
++  bool Except:1;					/* Byte 2 Bit 2 */
+   unsigned char :1;					/* Byte 2 Bit 1 */
+-  boolean Full:1;					/* Byte 2 Bit 0 */
++  bool Full:1;					/* Byte 2 Bit 0 */
+ #endif
+   unsigned char :8;					/* Byte 3 */
+   unsigned char AdditionalSenseCode;			/* Byte 4 */
+@@ -485,11 +481,11 @@ typedef struct TransportElementDescriptorShort
+   unsigned char :8;					/* Byte 8 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char :6;					/* Byte 9 Bits 0-5 */
+-  boolean SValid:1;					/* Byte 9 Bit 6 */
+-  boolean Invert:1;					/* Byte 9 Bit 7 */
++  bool SValid:1;					/* Byte 9 Bit 6 */
++  bool Invert:1;					/* Byte 9 Bit 7 */
+ #else
+-  boolean Invert:1;					/* Byte 9 Bit 7 */
+-  boolean SValid:1;					/* Byte 9 Bit 6 */
++  bool Invert:1;					/* Byte 9 Bit 7 */
++  bool SValid:1;					/* Byte 9 Bit 6 */
+   unsigned char :6;					/* Byte 9 Bits 0-5 */
+ #endif
+   unsigned char SourceStorageElementAddress[2];		/* Bytes 10-11 */
+@@ -504,15 +500,15 @@ typedef struct TransportElementDescriptor
+ {
+   unsigned char ElementAddress[2];			/* Bytes 0-1 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+-  boolean Full:1;					/* Byte 2 Bit 0 */
++  bool Full:1;					/* Byte 2 Bit 0 */
+   unsigned char :1;					/* Byte 2 Bit 1 */
+-  boolean Except:1;					/* Byte 2 Bit 2 */
++  bool Except:1;					/* Byte 2 Bit 2 */
+   unsigned char :5;					/* Byte 2 Bits 3-7 */
+ #else
+   unsigned char :5;					/* Byte 2 Bits 3-7 */
+-  boolean Except:1;					/* Byte 2 Bit 2 */
++  bool Except:1;					/* Byte 2 Bit 2 */
+   unsigned char :1;					/* Byte 2 Bit 1 */
+-  boolean Full:1;					/* Byte 2 Bit 0 */
++  bool Full:1;					/* Byte 2 Bit 0 */
+ #endif
+   unsigned char :8;					/* Byte 3 */
+   unsigned char AdditionalSenseCode;			/* Byte 4 */
+@@ -522,20 +518,20 @@ typedef struct TransportElementDescriptor
+   unsigned char :8;					/* Byte 8 */
+ #ifdef LITTLE_ENDIAN_BITFIELDS
+   unsigned char :6;					/* Byte 9 Bits 0-5 */
+-  boolean SValid:1;					/* Byte 9 Bit 6 */
+-  boolean Invert:1;					/* Byte 9 Bit 7 */
++  bool SValid:1;					/* Byte 9 Bit 6 */
++  bool Invert:1;					/* Byte 9 Bit 7 */
+ #else
+-  boolean Invert:1;					/* Byte 9 Bit 7 */
+-  boolean SValid:1;					/* Byte 9 Bit 6 */
++  bool Invert:1;					/* Byte 9 Bit 7 */
++  bool SValid:1;					/* Byte 9 Bit 6 */
+   unsigned char :6;					/* Byte 9 Bits 0-5 */
+ #endif
+   unsigned char SourceStorageElementAddress[2];		/* Bytes 10-11 */
+   unsigned char PrimaryVolumeTag[36];          /* barcode */
+-  unsigned char AlternateVolumeTag[36];   
++  unsigned char AlternateVolumeTag[36];
+ #ifdef HAS_LONG_DESCRIPTORS
+   unsigned char Reserved[4];				/* 4 extra bytes? */
+ #endif
+-     
++
+ }
+ TransportElementDescriptor_T;
+ 
+@@ -558,12 +554,12 @@ typedef struct ElementStatus {
+   barcode *PrimaryVolumeTag;  /* array */
+   barcode *AlternateVolumeTag; /* array */
+   int *StorageElementAddress; /* array */
+-  boolean *StorageElementIsImportExport; /* array */
++  bool *StorageElementIsImportExport; /* array */
+ 
+   int TransportElementAddress;  /* assume only one of those... */
+ 
+-  boolean *DataTransferElementFull; /* array */
+-  boolean *StorageElementFull;  /* array */
++  bool *DataTransferElementFull; /* array */
++  bool *StorageElementFull;  /* array */
+ 
+ } ElementStatus_T;
+ 
+@@ -577,7 +573,7 @@ typedef struct scsi_id {
+ #define MEDIUM_CHANGER_TYPE 8  /* what type bits are set for medium changers. */
+ 
+ /* The following two structs are used for the brain-dead functions of the
+- * NSM jukebox. 
++ * NSM jukebox.
+  */
+ 
+ typedef struct NSM_Param {
+@@ -592,7 +588,7 @@ typedef struct NSM_Param {
+   unsigned char command_params[2048]; /* egregious overkill. */
+ } NSM_Param_T;
+ 
+-extern RequestSense_T scsi_error_sense; 
++extern RequestSense_T scsi_error_sense;
+ 
+ typedef struct NSM_Result {
+   unsigned char page_code;
+@@ -600,7 +596,7 @@ typedef struct NSM_Result {
+   unsigned char page_len_msb;
+   unsigned char page_len_lsb;
+   unsigned char command_code[4];
+-  unsigned char ces_code[2]; 
++  unsigned char ces_code[2];
+   unsigned char return_data[0xffff]; /* egregioius overkill */
+ } NSM_Result_T;
+ 
+--- mtxl.c.orig	2023-06-08 15:12:53 UTC
++++ mtxl.c
+@@ -23,7 +23,7 @@
+ 
+ /*
+  *	FatalError: changed Feb. 2000 elg@badtux.org to eliminate a buffer
+- *	overflow :-(. That could be important if mtxl is SUID for some reason. 
++ *	overflow :-(. That could be important if mtxl is SUID for some reason.
+ */
+ 
+ #include "mtx.h"
+@@ -34,7 +34,7 @@
+ /* #define DEBUG_MODE_SENSE 1 */
+ /* #define DEBUG */
+ /* #define DEBUG_SCSI */
+-#define __WEIRD_CHAR_SUPPRESS 1 
++#define __WEIRD_CHAR_SUPPRESS 1
+ 
+ /* zap the following define when we finally add real import/export support */
+ #define IMPORT_EXPORT_HACK 1 /* for the moment, import/export == storage */
+@@ -97,7 +97,7 @@ Inquiry_T *RequestInquiry(DEVICE_TYPE fd, RequestSense
+ 	Inquiry_T *Inquiry;
+ 	CDB_T CDB;
+ 
+-	Inquiry = (Inquiry_T *) xmalloc(sizeof(Inquiry_T));  
++	Inquiry = (Inquiry_T *) xmalloc(sizeof(Inquiry_T));
+ 
+ 	CDB[0] = 0x12;		/* INQUIRY */
+ 	CDB[1] = 0;			/* EVPD = 0 */
+@@ -277,10 +277,10 @@ int max(int x, int y)
+ 
+ 
+ /* Okay, this is a hack for the NSM modular jukebox series, which
+- * uses the "SEND DIAGNOSTIC" command to do shit. 
++ * uses the "SEND DIAGNOSTIC" command to do shit.
+  */
+ 
+-int SendNSMHack(DEVICE_TYPE MediumChangerFD, NSM_Param_T *nsm_command, 
++int SendNSMHack(DEVICE_TYPE MediumChangerFD, NSM_Param_T *nsm_command,
+ 		int param_len, int timeout)
+ {
+ 	CDB_T CDB;
+@@ -359,7 +359,7 @@ NSM_Result_T *RecNSMHack(	DEVICE_TYPE MediumChangerFD,
+ 
+ /* Routine to inventory the library. Needed by, e.g., some Breece Hill
+  * loaders. Sends an INITIALIZE_ELEMENT_STATUS command. This command
+- * has no parameters, such as a range to scan :-(. 
++ * has no parameters, such as a range to scan :-(.
+  */
+ 
+ int Inventory(DEVICE_TYPE MediumChangerFD)
+@@ -367,7 +367,7 @@ int Inventory(DEVICE_TYPE MediumChangerFD)
+ 	CDB_T	CDB;
+ 
+ 	/* okay, now for the command: */
+-	CDB[0] = 0x07; 
++	CDB[0] = 0x07;
+ 	CDB[1] = CDB[2] = CDB[3] = CDB[4] = CDB[5] = 0;
+ 
+ 	/* set us a very long timeout, sigh... */
+@@ -391,8 +391,8 @@ int Inventory(DEVICE_TYPE MediumChangerFD)
+ /* Routine to read the Mode Sense Element Address Assignment Page */
+ /* We try to read the page. If we can't read the page, we return NULL.
+  * Our caller really isn't too worried about why we could not read the
+- * page, it will simply default to some kind of default values. 
+- */ 
++ * page, it will simply default to some kind of default values.
++ */
+ ElementModeSense_T *ReadAssignmentPage(DEVICE_TYPE MediumChangerFD)
+ {
+ 	CDB_T CDB;
+@@ -402,7 +402,7 @@ ElementModeSense_T *ReadAssignmentPage(DEVICE_TYPE Med
+ 
+ 	/* okay, now for the command: */
+ 	CDB[0] = 0x1A; /* Mode Sense(6) */
+-	CDB[1] = 0x08; 
++	CDB[1] = 0x08;
+ 	CDB[2] = 0x1D; /* Mode Sense Element Address Assignment Page */
+ 	CDB[3] = 0;
+ 	CDB[4] = 136; /* allocation_length... */
+@@ -479,7 +479,7 @@ ElementModeSense_T *ReadAssignmentPage(DEVICE_TYPE Med
+ 		((int)sense_page->NumStorageHi << 8) + sense_page->NumStorageLo;
+ 
+ 	retval->ImportExportStart =
+-		((int)sense_page->ImportExportStartHi << 8) + sense_page->ImportExportStartLo; 
++		((int)sense_page->ImportExportStartHi << 8) + sense_page->ImportExportStartLo;
+ 
+ 	retval->NumImportExport =
+ 		((int)sense_page->NumImportExportHi << 8) + sense_page->NumImportExportLo;
+@@ -491,7 +491,7 @@ ElementModeSense_T *ReadAssignmentPage(DEVICE_TYPE Med
+ 		((int)sense_page->NumDataTransferHi << 8) + sense_page->NumDataTransferLo;
+ 
+ 	/* allocate a couple spares 'cause some HP autochangers and maybe others
+-	* don't properly report the robotics arm(s) count here... 
++	* don't properly report the robotics arm(s) count here...
+ 	*/
+ 	retval->NumElements =
+ 		retval->NumStorage+retval->NumImportExport +
+@@ -546,7 +546,7 @@ static ElementStatus_T *AllocateElementData(ElementMod
+ 
+ 	retval->DataTransferElementAddress =
+ 		(int *)xzmalloc(sizeof(int) * (mode_sense->NumDataTransfer + 1));
+-	retval->DataTransferElementSourceStorageElementNumber = 
++	retval->DataTransferElementSourceStorageElementNumber =
+ 		(int *)xzmalloc(sizeof(int) * (mode_sense->NumDataTransfer + 1));
+ 	retval->DataTransferPrimaryVolumeTag =
+ 		(barcode *)xzmalloc(sizeof(barcode) * (mode_sense->NumDataTransfer + 1));
+@@ -559,11 +559,11 @@ static ElementStatus_T *AllocateElementData(ElementMod
+ 	retval->StorageElementAddress =
+ 		(int *)xzmalloc(sizeof(int) * (mode_sense->NumStorage + 1));
+ 	retval->StorageElementIsImportExport =
+-		(boolean *)xzmalloc(sizeof(boolean) * (mode_sense->NumStorage + 1));
++		(bool *)xzmalloc(sizeof(bool) * (mode_sense->NumStorage + 1));
+ 	retval->StorageElementFull =
+-		(boolean *)xzmalloc(sizeof(boolean) * (mode_sense->NumStorage + 1));
++		(bool *)xzmalloc(sizeof(bool) * (mode_sense->NumStorage + 1));
+ 	retval->DataTransferElementFull =
+-		(boolean *)xzmalloc(sizeof(boolean) * (mode_sense->NumDataTransfer + 1));
++		(bool *)xzmalloc(sizeof(bool) * (mode_sense->NumDataTransfer + 1));
+ 
+ 	return retval; /* sigh! */
+ }
+@@ -584,14 +584,14 @@ void copy_barcode(unsigned char *src, unsigned char *d
+ 
+ 		dest++;
+ 	}
+-	*dest = 0; /* null-terminate */ 
++	*dest = 0; /* null-terminate */
+ }
+ 
+ /* This #%!@# routine has more parameters than I can count! */
+ static unsigned char *SendElementStatusRequestActual(
+ 					DEVICE_TYPE MediumChangerFD,
+ 					RequestSense_T *RequestSense,
+-					Inquiry_T *inquiry_info, 
++					Inquiry_T *inquiry_info,
+ 					SCSI_Flags_T *flags,
+ 					int ElementStart,
+ 					int NumElements,
+@@ -599,14 +599,14 @@ static unsigned char *SendElementStatusRequestActual(
+ 					)
+ {
+ 	CDB_T CDB;
+-	boolean is_attached = false;
++	bool is_attached = false;
+ 
+ 	unsigned char *DataBuffer; /* size of data... */
+ 
+ #ifdef HAVE_GET_ID_LUN
+ 	scsi_id_t *scsi_id;
+ #endif
+-	if (inquiry_info->MChngr && 
++	if (inquiry_info->MChngr &&
+ 		inquiry_info->PeripheralDeviceType != MEDIUM_CHANGER_TYPE)
+ 	{
+ 		is_attached = true;
+@@ -614,7 +614,7 @@ static unsigned char *SendElementStatusRequestActual(
+ 
+ 	if (flags->no_attached)
+ 	{
+-		/* override, sigh */ 
++		/* override, sigh */
+ 		is_attached = false;
+ 	}
+ 
+@@ -630,11 +630,11 @@ static unsigned char *SendElementStatusRequestActual(
+ 
+ 	if (is_attached)
+ 	{
+-		CDB[0] = 0xB4;  /* whoops, READ_ELEMENT_STATUS_ATTACHED! */ 
++		CDB[0] = 0xB4;  /* whoops, READ_ELEMENT_STATUS_ATTACHED! */
+ 	}
+ 
+ #ifdef HAVE_GET_ID_LUN
+-	CDB[1] = (scsi_id->lun << 5) | ((flags->no_barcodes) ? 
++	CDB[1] = (scsi_id->lun << 5) | ((flags->no_barcodes) ?
+ 		0 : 0x10) | flags->elementtype;  /* Lun + VolTag + Type code */
+ 	free(scsi_id);
+ #else
+@@ -674,7 +674,7 @@ static unsigned char *SendElementStatusRequestActual(
+ 
+ 		/*
+ 			First see if we have sense key of 'illegal request',
+-			additional sense code of '24', additional sense qualfier of 
++			additional sense code of '24', additional sense qualfier of
+ 			'0', and field in error of '4'. This means that we issued a request
+ 			w/bar code reader and did not have one, thus must re-issue the request
+ 			w/out barcode :-(.
+@@ -719,14 +719,14 @@ static unsigned char *SendElementStatusRequestActual(
+ 	PrintRequestSense(RequestSense); /* see what it sez :-(. */
+ 	fprintf(stderr,"Data:\n");
+ 	PrintHex(2, DataBuffer, 40);
+-#endif  
++#endif
+ 	return DataBuffer; /* we succeeded! */
+ }
+ 
+ 
+ unsigned char *SendElementStatusRequest(DEVICE_TYPE MediumChangerFD,
+ 										RequestSense_T *RequestSense,
+-										Inquiry_T *inquiry_info, 
++										Inquiry_T *inquiry_info,
+ 										SCSI_Flags_T *flags,
+ 										int ElementStart,
+ 										int NumElements,
+@@ -747,7 +747,7 @@ unsigned char *SendElementStatusRequest(DEVICE_TYPE Me
+ 	/*
+ 		One weird loader wants either 8 or BYTE_COUNT_OF_REPORT
+ 		values for the ALLOCATION_LENGTH. Give it what it wants
+-		if we get an Sense Key of 05 Illegal Request with a 
++		if we get an Sense Key of 05 Illegal Request with a
+ 		CDB position of 7 as the field in error.
+ 	*/
+ 
+@@ -879,7 +879,7 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 		{
+ 			/* TransportElementDescriptor =
+ 			(TransportElementDescriptor_T *) DataPointer; */
+-			memcpy(&TEBuf, DataPointer, 
++			memcpy(&TEBuf, DataPointer,
+ 				(TransportElementDescriptorLength <= sizeof(TEBuf)) ?
+ 					TransportElementDescriptorLength  :
+ 					sizeof(TEBuf));
+@@ -906,7 +906,7 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 			case MediumTransportElement:
+ 				ElementStatus->TransportElementAddress = BigEndian16(TransportElementDescriptor->ElementAddress);
+ #ifdef DEBUG
+-				fprintf(stderr,"TransportElementAddress=%d\n",ElementStatus->TransportElementAddress); 
++				fprintf(stderr,"TransportElementAddress=%d\n",ElementStatus->TransportElementAddress);
+ #endif
+ 				break;
+ 
+@@ -933,7 +933,7 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 				ElementStatus->StorageElementFull[ImportExportIndex] =
+ 					TransportElementDescriptor->Full;
+ 
+-				if ( (TransportElementDescriptorLength > 11) && 
++				if ( (TransportElementDescriptorLength > 11) &&
+ 					(ElementStatusPage->VolBits & E2_AVOLTAG))
+ 				{
+ 					copy_barcode(TransportElementDescriptor->AlternateVolumeTag,
+@@ -942,8 +942,8 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 				else
+ 				{
+ 					ElementStatus->AlternateVolumeTag[ImportExportIndex][0] = 0;  /* null string. */;
+-				} 
+-				if ((TransportElementDescriptorLength > 11) && 
++				}
++				if ((TransportElementDescriptorLength > 11) &&
+ 					(ElementStatusPage->VolBits & E2_PVOLTAG))
+ 				{
+ 					copy_barcode(TransportElementDescriptor->PrimaryVolumeTag,
+@@ -964,8 +964,8 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 				fprintf(stderr,"StorageElementCount=%d  ElementAddress = %d ",ElementStatus->StorageElementCount,BigEndian16(TransportElementDescriptor->ElementAddress));
+ #endif
+ 				/* ATL/Exabyte kludge -- skip slots that aren't installed :-( */
+-				if (TransportElementDescriptor->AdditionalSenseCode==0x83 && 
+-					TransportElementDescriptor->AdditionalSenseCodeQualifier==0x02) 
++				if (TransportElementDescriptor->AdditionalSenseCode==0x83 &&
++					TransportElementDescriptor->AdditionalSenseCodeQualifier==0x02)
+ 					continue;
+ 
+ 				ElementStatus->StorageElementAddress[ElementStatus->StorageElementCount] =
+@@ -983,7 +983,7 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 						ElementStatus->StorageElementCount; /* slot idx. */
+ 					/*   ElementStatus->StorageElementAddress[ElementStatus->StorageElementCount]; */
+ 				}
+-				if ((TransportElementDescriptorLength >  11) && 
++				if ((TransportElementDescriptorLength >  11) &&
+ 					(ElementStatusPage->VolBits & E2_AVOLTAG))
+ 				{
+ 					copy_barcode(TransportElementDescriptor->AlternateVolumeTag,
+@@ -992,8 +992,8 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 				else
+ 				{
+ 					ElementStatus->AlternateVolumeTag[ElementStatus->StorageElementCount][0]=0;  /* null string. */;
+-				} 
+-				if ((TransportElementDescriptorLength > 11) && 
++				}
++				if ((TransportElementDescriptorLength > 11) &&
+ 					(ElementStatusPage->VolBits & E2_PVOLTAG))
+ 				{
+ 					copy_barcode(TransportElementDescriptor->PrimaryVolumeTag,
+@@ -1006,9 +1006,9 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 
+ 				ElementStatus->StorageElementCount++;
+ 				/*
+-					Note that the original mtx had no check here for 
++					Note that the original mtx had no check here for
+ 					buffer overflow, though some drives might mistakingly
+-					do one... 
++					do one...
+ 				*/
+ 
+ 				if (ElementStatus->StorageElementCount > mode_sense->NumStorage)
+@@ -1030,33 +1030,33 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ 				report that they have a 2nd tape drive when they don't. We
+ 				could generalize this in an ideal world, but my attempt to
+ 				do so failed with dual-drive Exabyte tape libraries that
+-				*DID* have the second drive. Sigh. 
++				*DID* have the second drive. Sigh.
+ 				*/
+-				if (TransportElementDescriptor->AdditionalSenseCode==0x83 && 
++				if (TransportElementDescriptor->AdditionalSenseCode==0x83 &&
+ 					TransportElementDescriptor->AdditionalSenseCodeQualifier==0x04)
+ 				{
+ 					continue;
+ 				}
+ 
+ 				/*	generalize it. Does it work? Let's try it! */
+-				/*	
++				/*
+ 					No, dammit, following does not work on dual-drive Exabyte
+ 					'cause if a tape is in the drive, it sets the AdditionalSense
+ 					code to something (sigh).
+ 				*/
+ 				/* if (TransportElementDescriptor->AdditionalSenseCode!=0)
+ 					continue;
+-				*/ 
++				*/
+ 
+ 				ElementStatus->DataTransferElementAddress[ElementStatus->DataTransferElementCount] =
+ 					BigEndian16(TransportElementDescriptor->ElementAddress);
+-				ElementStatus->DataTransferElementFull[ElementStatus->DataTransferElementCount] = 
++				ElementStatus->DataTransferElementFull[ElementStatus->DataTransferElementCount] =
+ 					TransportElementDescriptor->Full;
+ 				ElementStatus->DataTransferElementSourceStorageElementNumber[ElementStatus->DataTransferElementCount] =
+ 					BigEndian16(TransportElementDescriptor->SourceStorageElementAddress);
+ 
+ #if DEBUG
+-				fprintf(stderr, "%d: ElementAddress = %d, Full = %d, SourceElement = %d\n", 
++				fprintf(stderr, "%d: ElementAddress = %d, Full = %d, SourceElement = %d\n",
+ 						ElementStatus->DataTransferElementCount,
+ 						ElementStatus->DataTransferElementAddress[ElementStatus->DataTransferElementCount],
+ 						ElementStatus->DataTransferElementFull[ElementStatus->DataTransferElementCount],
+@@ -1115,17 +1115,17 @@ static void ParseElementStatus(	int *EmptyStorageEleme
+ /*
+  * We no longer do the funky trick to figure out ALLOCATION_LENGTH.
+  * Instead, we use the SCSI Generic command rather than SEND_SCSI_COMMAND
+- * under Linux, which gets around the @#%@ 4k buffer size in Linux. 
++ * under Linux, which gets around the @#%@ 4k buffer size in Linux.
+  * We still have the restriction that Linux cuts off the last two
+  * bytes of the SENSE DATA (Q#@$%@#$^ Linux!). Which means that the
+- * verbose widget won't work :-(. 
+- 
++ * verbose widget won't work :-(.
++
+  * We now look for that "attached" bit in the inquiry_info to see whether
+  * to use READ_ELEMENT_ATTACHED or plain old READ_ELEMENT. In addition, we
+  * look at the device type in the inquiry_info to see whether it is a media
+  * changer or tape device, and if it's a media changer device, we ignore the
+  * attached bit (one beta tester found an old 4-tape DAT changer that set
+- * the attached bit for both the tape device AND the media changer device). 
++ * the attached bit for both the tape device AND the media changer device).
+ 
+ */
+ 
+@@ -1139,7 +1139,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	int *EmptyStorageElementAddress; /* [MAX_STORAGE_ELEMENTS]; */
+ 
+ 	int empty_idx = 0;
+-	boolean is_attached = false;
++	bool is_attached = false;
+ 	int i,j;
+ 
+ 	ElementModeSense_T *mode_sense = NULL;
+@@ -1151,7 +1151,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 
+ 	if (flags->no_attached)
+ 	{
+-		/* override, sigh */ 
++		/* override, sigh */
+ 		is_attached = false;
+ 	}
+ 
+@@ -1181,7 +1181,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	ElementStatus->DataTransferElementCount = 0;
+ 
+ 	/* first, allocate some empty storage stuff: Note that we pass this
+-	* down to ParseElementStatus (sigh!) 
++	* down to ParseElementStatus (sigh!)
+ 	*/
+ 
+ 	EmptyStorageElementAddress = (int *)xzmalloc((mode_sense->NumStorage+1)*sizeof(int));
+@@ -1198,7 +1198,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	for (i = 0; i < mode_sense->NumDataTransfer; i++)
+ 	{
+ 		/* initialize them to an illegal # so that we can fix later... */
+-		ElementStatus->DataTransferElementSourceStorageElementNumber[i] = -1; 
++		ElementStatus->DataTransferElementSourceStorageElementNumber[i] = -1;
+ 	}
+ 
+ 	if (flags->querytype == MTX_ELEMENTSTATUS_ORIGINAL)
+@@ -1224,7 +1224,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 			PrintRequestSense(RequestSense);
+ #endif
+ 			FreeElementData(ElementStatus);
+-			return NULL; 
++			return NULL;
+ 		}
+ 
+ #ifdef DEBUG
+@@ -1294,7 +1294,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 			PrintRequestSense(RequestSense);
+ #endif
+ 			FreeElementData(ElementStatus);
+-			return NULL; 
++			return NULL;
+ 		}
+ 
+ #ifdef DEBUG
+@@ -1309,7 +1309,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 
+ 		/* grr, damned brain dead HP doesn't report that it has any! */
+ 		if (!mode_sense->NumMediumTransport)
+-		{ 
++		{
+ 			ElementStatus->TransportElementAddress = 0; /* default it sensibly :-(. */
+ 		}
+ 		else
+@@ -1333,8 +1333,8 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 				PrintRequestSense(RequestSense);
+ #endif
+ 				FreeElementData(ElementStatus);
+-				return NULL; 
+-			} 
++				return NULL;
++			}
+ #ifdef DEBUG
+ 			fprintf(stderr,"Parsing robot arm data\n");
+ #endif
+@@ -1352,8 +1352,8 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 		fprintf(stderr,"Using alternative element status polling method (all elements)\n");
+ #endif
+ 		/* ----------------- ALL Elements ---------------------- */
+-		/*	Just keep asking for elements till no more are returned 
+-			- increment our starting address as we go acording to the 
++		/*	Just keep asking for elements till no more are returned
++			- increment our starting address as we go acording to the
+ 			number of elements returned from the last call
+ 		*/
+ 
+@@ -1370,7 +1370,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 													mode_sense->MaxReadElementStatusData);
+ 			if (!DataBuffer)
+ 			{
+-				if (RequestSense->AdditionalSenseCode == 0x21 && 
++				if (RequestSense->AdditionalSenseCode == 0x21 &&
+ 				RequestSense->AdditionalSenseCodeQualifier == 0x01)
+ 				{
+ 					/* Error is invalid element address, we've probably just hit the end */
+@@ -1379,8 +1379,8 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 
+ 				/* darn. Free up stuff and return. */
+ 				FreeElementData(ElementStatus);
+-				return NULL; 
+-			} 
++				return NULL;
++			}
+ 
+ 			nLastEl = nNextEl;
+ 
+@@ -1409,7 +1409,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	 *
+ 	 * Pass1:
+ 	 *	Translate from raw element # to our translated # (if possible).
+-	 *	First, check the SourceStorageElementNumbers against the list of 
++	 *	First, check the SourceStorageElementNumbers against the list of
+ 	 *	filled slots. If the slots indicated are empty, we accept that list as
+ 	 *	valid. Otherwise decide the SourceStorageElementNumbers are invalid.
+ 	 *
+@@ -1418,7 +1418,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	 *	then we must search for free slots, and assign SourceStorageElementNumbers
+ 	 *	to those free slots. We happen to already built a list of free
+ 	 *	slots as part of the process of reading the storage element numbers
+-	 *	from the tape. So that's easy enough to do! 
++	 *	from the tape. So that's easy enough to do!
+ 	 */
+ 
+ #ifdef DEBUG_TAPELIST
+@@ -1434,7 +1434,7 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 
+ 	/*
+ 	 *	Now we re-assign origin slots if the "real" origin slot
+-	 *	is obviously defective: 
++	 *	is obviously defective:
+ 	 */
+ 	/* pass one: */
+ 	for (i = 0; i < ElementStatus->DataTransferElementCount; i++)
+@@ -1472,12 +1472,12 @@ ElementStatus_T *ReadElementStatus(DEVICE_TYPE MediumC
+ 	 *	drives will be assigned a -1 (see the initialization loop for
+ 	 *	EmptyStorageElementAddress above), which will be reported as "slot 0"
+ 	 *	by the user interface. This is an invalid value, but more useful for us
+-	 *	to have than just crapping out here :-(. 
++	 *	to have than just crapping out here :-(.
+ 	*/
+ 	empty_idx=0;
+ 	for (i = 0; i < ElementStatus->DataTransferElementCount; i++)
+ 	{
+-		if (ElementStatus->DataTransferElementFull[i] && 
++		if (ElementStatus->DataTransferElementFull[i] &&
+ 			ElementStatus->DataTransferElementSourceStorageElementNumber[i] < 0)
+ 		{
+ #ifdef DEBUG_TAPELIST
+@@ -1529,7 +1529,7 @@ RequestSense_T *PositionElement(DEVICE_TYPE MediumChan
+ 
+ /* Now the actual media movement routine! */
+ RequestSense_T *MoveMedium(	DEVICE_TYPE MediumChangerFD, int SourceAddress,
+-							int DestinationAddress, 
++							int DestinationAddress,
+ 							ElementStatus_T *ElementStatus,
+ 							Inquiry_T *inquiry_info, SCSI_Flags_T *flags)
+ {
+@@ -1632,7 +1632,7 @@ RequestSense_T *ExchangeMedium(	DEVICE_TYPE MediumChan
+ 
+ #ifdef DEBUG_EXCHANGE
+ 	dump_cdb(&CDB,12);
+-#endif  
++#endif
+ 
+ 	if (SCSI_ExecuteCommand(MediumChangerFD, Output, &CDB, 12,
+ 							NULL, 0, RequestSense) != 0)
+@@ -1676,8 +1676,8 @@ RequestSense_T *Erase(DEVICE_TYPE MediumChangerFD)
+ 	return NULL;		/* Success! */
+ }
+ 
+-/* Routine to send an LOAD/UNLOAD from the MMC/SSC spec to a device. 
+- * For tapes and changers this can be used either to eject a tape 
++/* Routine to send an LOAD/UNLOAD from the MMC/SSC spec to a device.
++ * For tapes and changers this can be used either to eject a tape
+  * or to eject a magazine (on some Seagate changers, when sent to LUN 1 ).
+  * For CD/DVDs this is used to Load or Unload a disc which is required by
+  * some media changers.
+@@ -1707,8 +1707,8 @@ int LoadUnload(DEVICE_TYPE fd, int bLoad)
+ 	return 0; /* did do! */
+ }
+ 
+-/* Routine to send an START/STOP from the MMC/SSC spec to a device. 
+- * For tape drives this may be required prior to using the changer 
++/* Routine to send an START/STOP from the MMC/SSC spec to a device.
++ * For tape drives this may be required prior to using the changer
+  * Load or Unload commands.
+  * For CD/DVD drives this is used to Load or Unload a disc which may be
+  * required by some media changers.
+@@ -1732,9 +1732,9 @@ int StartStop(DEVICE_TYPE fd, int bStart)
+ 	return 0; /* did do! */
+ }
+ 
+-/* Routine to send a LOCK/UNLOCK from the SSC/MMC spec to a device. 
++/* Routine to send a LOCK/UNLOCK from the SSC/MMC spec to a device.
+  * This can be used to prevent or allow the Tape or CD/DVD from being
+- * removed. 
++ * removed.
+  */
+ 
+ int LockUnlock(DEVICE_TYPE fd, int bLock)
+@@ -1862,7 +1862,7 @@ void PrintRequestSense(RequestSense_T *RequestSense)
+ 	fprintf(stderr, "mtx: Request Sense: Valid Residual=%s\n", RequestSense->Valid ? Yes : No);
+ 
+ 	if (RequestSense->ErrorCode == 0x70)
+-	{ 
++	{
+ 		msg = "Current" ;
+ 	}
+ 	else if (RequestSense->ErrorCode == 0x71)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202306081531.358FVChZ062635>