- #ifndef lint
-static char rcsid[] = "$Id: scsi-changer-driver.c,v 1.1.2.27.2.7.2.10 2003/01/26 19:20:56 martinea Exp $";
-#endif
+static char rcsid[] = "$Id: scsi-changer-driver.c,v 1.52 2006/07/21 00:25:50 martinea Exp $";
/*
* Interface to control a tape robot/library connected to the SCSI bus
*
* Copyright (c) Thomas Hepper th@ant.han.de
*/
-#include <amanda.h>
-
-#ifdef HAVE_DMALLOC_H
-#include <dmalloc.h>
-#endif
+#include "amanda.h"
#include "arglist.h"
-/*
-#ifdef HAVE_STDIO_H
-*/
-#include <stdio.h>
-/*
-#endif
-*/
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#
-#ifdef STDC_HEADERS
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
#include "scsi-defs.h"
-#include "tapeio.h"
-
-extern int TapeEject(int DeviceFD);
+#include "device.h"
extern FILE *debug_file;
+extern changer_t *changer; /* Needed for the infos about emubarcode and labelfile */
int PrintInquiry(SCSIInquiry_T *);
int GenericElementStatus(int DeviceFD, int InitStatus);
ElementInfo_T *LookupElement(int addr);
int GenericResetStatus(int DeviceFD);
int RequestSense(int, ExtendedRequestSense_T *, int );
-void dump_hex(char *, int, int, int);
-void TerminateString(char *string, int length);
+void dump_hex(u_char *, size_t, int, int);
+void TerminateString(char *string, size_t length);
void ChgExit(char *, char *, int);
int BarCode(int fd);
int LogSense(int fd);
-int SenseHandler(int fd, unsigned char flag, unsigned char SenseKey, unsigned char AdditionalSenseCode, unsigned char AdditionalSenseCodeQualifier, char *buffer);
+int SenseHandler(int fd, u_char flag, u_char SenseKey, u_char AdditionalSenseCode, u_char AdditionalSenseCodeQualifier, RequestSense_T *buffer);
-int SCSI_AlignElements(int DeviceFD, int MTE, int DTE, int STE);
+int SCSI_AlignElements(int DeviceFD, size_t MTE, size_t DTE, size_t STE);
+
+int DoNothing0(void);
+int DoNothing1(int);
+int DoNothing2(int, int);
+int DoNothing3(int, int, int);
-int DoNothing();
int GenericMove(int, int, int);
int SDXMove(int, int, int);
int CheckMove(ElementInfo_T *from, ElementInfo_T *to);
int GenericRewind(int);
-/* int GenericStatus(); */
-int GenericFree();
-int TapeStatus(); /* Is the tape loaded ? */
+/* int GenericStatus(void); */
+int GenericFree(void);
+int TapeStatus(void); /* Is the tape loaded ? */
int DLT4000Eject(char *Device, int type);
int GenericEject(char *Device, int type);
+int SCSI_LogSenseClean(char *Device); /* Does the tape need a clean */
int GenericClean(char *Device); /* Does the tape need a clean */
int GenericBarCode(int DeviceFD); /* Do we have Barcode reader support */
int NoBarCode(int DeviceFD);
-int GenericSearch();
+int GenericSearch(void);
void Inventory(char *labelfile, int drive, int eject, int start, int stop, int clean);
int TreeFrogBarCode(int DeviceFD);
int EXB_BarCode(int DeviceFD);
-int GenericSenseHandler(int fd, int flags, unsigned char SenseKey, unsigned char AdditionalSenseCode, unsigned char AdditionalSenseCodeQualifier, char *);
+int GenericSenseHandler(int fd, u_char flags, u_char SenseKey, u_char AdditionalSenseCode, u_char AdditionalSenseCodeQualifier, RequestSense_T *);
ElementInfo_T *LookupElement(int address);
int eject_tape(char *tapedev, int type);
int unload(int fd, int drive, int slot);
int load(int fd, int drive, int slot);
int GetElementStatus(int DeviceFD);
+int drive_loaded(int fd, int drivenum);
/*
* Log Pages Decode
*/
-void WriteErrorCountersPage(LogParameter_T *, int);
-void ReadErrorCountersPage(LogParameter_T *, int);
-void C1553APage30(LogParameter_T *, int);
-void C1553APage37(LogParameter_T *, int);
-void EXB85058HEPage39(LogParameter_T *, int);
-void EXB85058HEPage3c(LogParameter_T *, int);
-int Decode(LogParameter_T *, int *);
-int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *out);
+void WriteErrorCountersPage(LogParameter_T *, size_t);
+void ReadErrorCountersPage(LogParameter_T *, size_t);
+void C1553APage30(LogParameter_T *, size_t);
+void C1553APage37(LogParameter_T *, size_t);
+void EXB85058HEPage39(LogParameter_T *, size_t);
+void EXB85058HEPage3c(LogParameter_T *, size_t);
+int Decode(LogParameter_T *, unsigned *);
+int DecodeModeSense(u_char *buffer, size_t offset, char *pstring, char block, FILE *out);
int SCSI_Run(int DeviceFD,
Direction_T Direction,
CDB_T CDB,
- int CDB_Length,
+ size_t CDB_Length,
void *DataBuffer,
- int DataBufferLength,
- char *pRequestSense,
- int RequestSenseLength);
+ size_t DataBufferLength,
+ RequestSense_T *pRequestSense,
+ size_t RequestSenseLength);
-int SCSI_Move(int DeviceFD, unsigned char chm, int from, int to);
-int SCSI_LoadUnload(int DeviceFD, RequestSense_T *pRequestSense, unsigned char byte1, unsigned char load);
+int SCSI_Move(int DeviceFD, u_char chm, int from, int to);
+int SCSI_LoadUnload(int DeviceFD, RequestSense_T *pRequestSense, u_char byte1, u_char load);
int SCSI_TestUnitReady(int, RequestSense_T *);
-int SCSI_ModeSense(int DeviceFD, char *buffer, u_char size, u_char byte1, u_char byte2);
-int SCSI_ModeSelect(int DeviceFD,
- char *buffer,
- unsigned char length,
- unsigned char save,
- unsigned char mode,
- unsigned char lun);
-
-int SCSI_ReadElementStatus(int DeviceFD,
- unsigned char type,
- unsigned char lun,
- unsigned char VolTag,
+int SCSI_ModeSense(int DeviceFD, u_char *buffer, u_char size, u_char byte1, u_char byte2);
+int SCSI_ModeSelect(int DeviceFD,
+ u_char *buffer,
+ u_char length,
+ u_char save,
+ u_char mode,
+ u_char lun);
+
+int SCSI_ReadElementStatus(int DeviceFD,
+ u_char type,
+ u_char lun,
+ u_char VolTag,
int StartAddress,
- int NoOfElements,
- int DescriptorSize,
- char **data);
+ size_t NoOfElements,
+ size_t DescriptorSize,
+ u_char **data);
FILE *StatFile;
+static int barcode; /* cache the result from the BarCode function */
SC_COM_T SCSICommand[] = {
{0x00,
"UNLOAD"},
{0x4D,
10,
- "LOG SENSE"},
+ "LOG SENSE"},
{0xA5,
12,
"MOVE MEDIUM"},
"HP Auto Loader [C1553A]",
GenericMove,
GenericElementStatus,
- DoNothing,
+ DoNothing1,
GenericFree,
GenericEject,
GenericClean,
GenericRewind,
GenericBarCode,
GenericSearch,
- GenericSenseHandler},
+ GenericSenseHandler},
/* Exabyte Devices */
- {"EXB-10e",
+ {"EXB-10e",
"Exabyte Robot [EXB-10e]",
GenericMove,
GenericElementStatus,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- {"EXB-120",
+ {"EXB-120",
"Exabyte Robot [EXB-120]",
GenericMove,
GenericElementStatus,
EXB_BarCode,
GenericSearch,
GenericSenseHandler},
- {"EXB-210",
+ {"EXB-210",
"Exabyte Robot [EXB-210]",
GenericMove,
GenericElementStatus,
EXB_BarCode,
GenericSearch,
GenericSenseHandler},
- {"EXB-85058HE-0000",
+ {"EXB-85058HE-0000",
"Exabyte Tape [EXB-85058HE-0000]",
- DoNothing,
- DoNothing,
- DoNothing,
- DoNothing,
+ DoNothing3,
+ DoNothing2,
+ DoNothing1,
+ DoNothing0,
GenericEject,
GenericClean,
GenericRewind,
GenericSearch,
GenericSenseHandler},
/* Tandberg Devices */
- {"TDS 1420",
+ {"TDS 1420",
"Tandberg Robot (TDS 1420)",
GenericMove,
GenericElementStatus,
GenericSearch,
GenericSenseHandler},
/* ADIC Devices */
- {"VLS DLT",
+ {"VLS DLT",
"ADIC VLS DLT Library [VLS DLT]",
GenericMove,
GenericElementStatus,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- {"VLS SDX",
+ {"VLS SDX",
"ADIC VLS DLT Library [VLS SDX]",
SDXMove,
SDXElementStatus,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- {"FastStor DLT",
+ {"FastStor DLT",
"ADIC FastStor DLT Library [FastStor DLT]",
SDXMove,
DLT448ElementStatus,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- /*
+ /*
* And now the tape devices
*/
/* The generic handler if nothing matches */
GenericSenseHandler},
{"DLT8000",
"DLT Tape [DLT8000]",
- DoNothing,
- DoNothing,
- DoNothing,
- DoNothing,
+ DoNothing3,
+ DoNothing2,
+ DoNothing1,
+ DoNothing0,
DLT4000Eject,
GenericClean,
GenericRewind,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- {"DLT7000",
+ {"DLT7000",
"DLT Tape [DLT7000]",
- DoNothing,
- DoNothing,
- DoNothing,
- DoNothing,
+ DoNothing3,
+ DoNothing2,
+ DoNothing1,
+ DoNothing0,
DLT4000Eject,
GenericClean,
GenericRewind,
GenericBarCode,
GenericSearch,
GenericSenseHandler},
- {"DLT4000",
+ {"DLT4000",
"DLT Tape [DLT4000]",
- DoNothing,
- DoNothing,
- DoNothing,
- DoNothing,
+ DoNothing3,
+ DoNothing2,
+ DoNothing1,
+ DoNothing0,
DLT4000Eject,
GenericClean,
GenericRewind,
- NoBarCode,
+ NoBarCode,
+ GenericSearch,
+ GenericSenseHandler},
+ {"SLR100",
+ "Tandberg SLR100",
+ GenericMove,
+ GenericElementStatus,
+ GenericResetStatus,
+ GenericFree,
+ GenericEject,
+ SCSI_LogSenseClean,
+ GenericRewind,
+ NoBarCode,
GenericSearch,
GenericSenseHandler},
- {NULL, NULL, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
-};
+ {NULL, NULL, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
+};
LogPageDecode_T DecodePages[] = {
char *SlotArgs = 0;
/* Pointer to MODE SENSE Pages */
-char *pModePage = NULL;
+u_char *pModePage = NULL;
EAAPage_T *pEAAPage = NULL;
DeviceCapabilitiesPage_T *pDeviceCapabilitiesPage = NULL;
-char *pVendorUnique = NULL;
+u_char *pVendorUnique = NULL;
/*
* New way, every element type has its on array
ElementInfo_T *pSTE = NULL; /*Storage Element */
ElementInfo_T *pIEE = NULL; /*Import Export Element */
ElementInfo_T *pDTE = NULL; /*Data Transfer Element */
-int MTE = 0; /*Counter for the above element types */
-int STE = 0;
-int IEE = 0;
-int DTE = 0;
+size_t MTE = 0; /*Counter for the above element types */
+size_t STE = 0;
+size_t IEE = 0;
+size_t DTE = 0;
-char *chgscsi_datestamp = NULL; /* Result pointer for tape_rdlabel */
+char *chgscsi_datestamp = NULL; /* Result pointer for tape_rdlabel */
char *chgscsi_label = NULL; /* Result pointer for tape_rdlabel */
char *chgscsi_result = NULL; /* Needed for the result string of MapBarCode */
+/*
+ * This used to be in tape-src/tapeio.c; this is the Device API version.
+ */
+
+static char *
+tape_rdlabel(
+ char *devname,
+ char **datestamp,
+ char **label)
+{
+ Device *dev;
+ char *r = NULL;
+
+ dev = device_open(devname);
+ if (dev->status != DEVICE_STATUS_SUCCESS) {
+ r = g_strdup(device_error_or_status(dev));
+ g_object_unref(dev);
+ return r;
+ }
+
+ if (!device_configure(dev, TRUE) || !device_read_label(dev)) {
+ r = g_strdup(device_error_or_status(dev));
+ g_object_unref(dev);
+ return r;
+ }
+
+ *datestamp = g_strdup(dev->volume_time);
+ *label = g_strdup(dev->volume_label);
+
+ return NULL;
+}
+
/*
* First all functions which are called from extern
*/
* Print the scsi-changer-driver version
*/
-void ChangerDriverVersion()
+void
+ChangerDriverVersion(void)
{
DebugPrint(DEBUG_ERROR, SECTION_INFO, "scsi-changer-driver: %s\n",rcsid);
SCSI_OS_Version();
* Try to generate an template which can be used as an example for the config file
*
*/
-void PrintConf()
+void
+PrintConf(void)
{
extern OpenFiles_T *pDev;
int count;
char *cwd;
- printf("# Please replace every ??? with the correct parameter. It is not possible\n");
- printf("# to guess everything :-)\n");
- printf("# If the option is not needed, cleanmax for example if you have no cleaning\n");
- printf("# tape remove the line.\n");
- printf("#\n");
- printf("number_configs 1 # Number of configs, you can have more than 1 config\n");
- printf(" # if you have for example more than one drive, or you\n");
- printf(" # to split your lib to use different dump levels\n");
- printf(" #\n");
- printf("emubarcode 1 # If you drive has no barcode reader this will try\n");
- printf(" # keep an inventory of your tapes to find them faster\n");
- printf(" #\n");
- printf("havebarcode 0 # Set this to 1 if you have an library with an installed\n");
- printf(" # barcode reader\n");
- printf(" #\n");
- printf("debuglevel 0:0 # For debuging, see the docs /docs/TAPE-CHANGER\n");
- printf(" #\n");
- printf("eject ??? # set this to 1 if your drive needs an eject before move\n");
- printf(" #\n");
- printf("sleep ??? # How long to wait after an eject command before moving\n");
- printf(" # the tape\n");
- printf(" #\n");
-
+ g_printf(_("# Please replace every ??? with the correct parameter.\n"));
+ g_printf(_("# It is not possible to guess everything :-)\n"));
+ g_printf(_("# Remove the line if the option is not needed."));
+ g_printf(_("# Example: cleanmax if you have no cleaning tape"));
+ g_printf(_("#\n"));
+ g_printf(_(
+ "number_configs 1 # Number of configs, you can have more than 1 config\n"
+ " # if you have for example more than one drive, or you\n"
+ " # to split your lib to use different dump levels\n"
+ " #\n"));
+ g_printf(_(
+ "emubarcode 1 # If you drive has no barcode reader this will try\n"
+ " # keep an inventory of your tapes to find them faster\n"
+ " #\n"));
+ g_printf(_(
+ "havebarcode 0 # Set this to 1 if you have a library with a\n"
+ " # barcode reader\n"
+ " #\n"));
+ g_printf(_(
+ "debuglevel 0:0 # For debuging, see the docs /docs/TAPE-CHANGER\n"
+ " #\n"));
+ g_printf(_(
+ "eject ??? # set this to 1 if your drive needs an eject before move\n"
+ " #\n"));
+ g_printf(_(
+ "sleep ??? # How long to wait after an eject command before moving\n"
+ " # the tape\n"
+ " #\n"));
+
for (count = 0; count < CHG_MAXDEV ; count++)
{
if (pDev[count].dev)
{
if (pDev[count].inquiry != NULL && pDev[count].inquiry->type == TYPE_CHANGER)
{
- printf("changerdev %s # This is the device to communicate with the robot\n", pDev[count].dev);
+ g_printf(_("changerdev %s # This is the device to communicate with the robot\n"), pDev[count].dev);
break;
}
}
}
-
+
/*
* Did we reach the end of the list ?
* If no we found an changer and now we try to
*/
if (count < CHG_MAXDEV)
{
- pDev[count].functions->function_status(count, 1);
+ pDev[count].functions->function_status(count, 1);
} else {
- printf("changerdev ??? # Ups nothing found. Please check the docs\n");
+ g_printf(_("changerdev ??? # Ups nothing found. Please check the docs\n"));
}
-
- printf(" #\n");
- printf(" # Here now comes the config for the first tape\n");
- printf("config 0 # This value is the one which is used in the amanda\n");
- printf(" # config file to tell the chg-scsi programm which tape\n");
- printf(" # and which slots to use\n");
- printf(" #\n");
- printf("cleancart ??? # The slot where the cleaning tape is located\n");
- printf(" # remove it if you have no cleaning tape\n");
- printf(" #\n");
- printf("drivenum 0 # Which tape drive to use if there are more than one drive\n");
- printf(" #\n");
- printf("dev ??? # Which is the raw device to read/write data from the tape\n");
- printf(" # It is important to use the non rewinding tape, like\n");
- printf(" # /dev/nrst0 on linux, /dev/nrsa0 on BSD ....\n");
- printf(" #\n");
+
+ g_printf(_(
+ " #\n"));
+ g_printf(_(
+ " # Here now comes the config for the first tape\n"));
+ g_printf(_(
+ "config 0 # This value is the one which is used in the amanda\n"
+ " # config file to tell the chg-scsi programm which tape\n"
+ " # and which slots to use\n"
+ " #\n"));
+ g_printf(_(
+ "cleancart ??? # The slot where the cleaning tape is located\n"
+ " # remove it if you have no cleaning tape\n"
+ " #\n"));
+ g_printf(_(
+ "drivenum 0 # Which tape drive to use if there are more than one drive\n"
+ " #\n"));
+ g_printf(_(
+ "dev ??? # Which is the raw device to read/write data from the tape\n"
+ " # It is important to use the non rewinding tape, like\n"
+ " # /dev/nrst0 on linux, /dev/nrsa0 on BSD ....\n"
+ " #\n"));
/*
* OK now lets see if we have an direct SCSI channel
{
if (pDev[count].inquiry != NULL && pDev[count].inquiry->type == TYPE_TAPE)
{
- printf("scsitapedev %s # This is the device to communicate with the tape\n", pDev[count].dev);
- printf(" # to get some device stats, not so importatn, and\n");
- printf(" # if you run in problems delete it complete\n");
- printf(" #\n");
+ g_printf(_(
+ "scsitapedev %s # This is the device to communicate with the tape\n"
+ " # to get some device stats, not so important, and\n"
+ " # if you run into problems delete it completely\n"
+ " #\n"), pDev[count].dev);
break;
}
}
if (STE != 0)
{
- printf("startuse 0 # Which is the first slot to use\n");
- printf(" #\n");
- printf("enduse %d # Which is the last slot to use\n", STE);
+ g_printf(_(
+ "startuse 0 # Which is the first slot to use\n"
+ " #\n"));
+ g_printf(_(
+ "enduse %zu # Which is the last slot to use.\n"), STE);
} else {
- printf("startuse ??? # Which is the first slot to use\n");
- printf(" #\n");
- printf("enduse ??? # Which is the last slot to use\n");
+ g_printf(_(
+ "startuse ??? # Which is the first slot to use\n"
+ " #\n"));
+ g_printf(_(
+ "enduse ??? # Which is the last slot to use.\n"));
}
- printf(" # decrement this value by 1 if you have an\n");
- printf(" # cleaning tape in the last slot\n");
- printf(" #\n");
-
- cwd = getcwd(NULL, 0);
-
- printf("statfile %s/tape0-slot #\n",cwd);
- printf("cleanfile %s/tape0-clean #\n", cwd);
- printf("usagecount %s/tape0-totaltime #\n", cwd);
- printf("tapestatus %s/tape0-tapestatus #\n", cwd);
- printf("labelfile %s/labelfile #\n", cwd);
+ g_printf(_(
+ " # Decrement this value by 1 if you have a\n"
+ " # cleaning tape in the last slot\n"
+ " #\n"));
+
+ if ((cwd = getcwd(NULL, 0)) == NULL) {
+ cwd = _("<unknown>");
+ }
+
+ g_printf(_("statfile %s/tape0-slot #\n"),cwd);
+ g_printf(_("cleanfile %s/tape0-clean #\n"), cwd);
+ g_printf(_("usagecount %s/tape0-totaltime #\n"), cwd);
+ g_printf(_("tapestatus %s/tape0-tapestatus #\n"), cwd);
+ g_printf(_("labelfile %s/labelfile #\n"), cwd);
}
-
+
/*
* Try to create a list of tapes and labels which are in the current
* magazin. The drive must be empty !!
- *
+ *
* labelfile -> file name of the db
* drive -> which drive should we use
* eject -> the tape device needs an eject before move
* stop -> stop at slot stop
* clean -> if we have an cleaning tape than this is the slot number of it
*
- * return
+ * return
* 0 -> fail
* 1 -> successfull
*
* If an tape is loaded unload it and do initialize element status to
* get all labels if an bar code reader is installed
*/
-void Inventory(char *labelfile, int drive, int eject, int start, int stop, int clean)
+void
+Inventory(
+ char * labelfile,
+ int drive,
+ int eject,
+ int start,
+ int stop,
+ int clean)
{
extern OpenFiles_T *pDev;
- int x;
- char *datestamp = malloc(1); /* stupid, but tapefd_rdlabel does an free at the begining ... */
- char *label = malloc(1); /* the same here ..... */
- char *result; /* Used to store the result of MapBarCode */
- int barcode; /* cache the result from the BarCode function */
- static int inv_done = 0; /* Inventory function called ?, marker to disable recursion */
- MBC_T *pbarcoderes = malloc(sizeof(MBC_T)); /* Here we will pass the parameter to MapBarCode and get the result */
-
- DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, "##### START Inventory\n");
- memset(pbarcoderes, 0 , sizeof(MBC_T));
+ size_t x;
+ static int inv_done = 0; /* Inventory function called ?, marker to disable recursion */
+ MBC_T *pbarcoderes; /* Here we will pass the parameter to MapBarCode and get the result */
+
+ (void)start; /* Quiet unused parameter warning */
+ (void)stop; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, _("##### START Inventory\n"));
+ pbarcoderes = alloc(SIZEOF(MBC_T));
+ memset(pbarcoderes, 0 , SIZEOF(MBC_T));
if (inv_done != 0)
{
- DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, "##### STOP inv_done -> %d Inventory\n",inv_done);
+ DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, _("##### STOP inv_done -> %d Inventory\n"),inv_done);
+ free(pbarcoderes);
return;
+ /*NOTREACHED*/
}
inv_done = 1;
barcode = BarCode(INDEX_CHANGER);
-
+
pbarcoderes->action = RESET_VALID;
MapBarCode(labelfile,pbarcoderes);
-
+
/*
* Check if an tape is loaded, if yes unload it
* and do an INIT ELEMENT STATUS
*/
-
+
if (pDTE[0].status == 'F')
{
if (eject)
{
- eject_tape("", eject);
+ (void)eject_tape("", eject);
}
(void)unload(INDEX_TAPE, 0, 0);
}
-
+
GenericResetStatus(INDEX_CHANGER);
-
+
for (x = 0; x < STE; x++)
{
- if (x == clean)
+ if (x == (size_t)clean)
{
continue;
}
-
+
/*
* Load the tape, on error try the next
* error could be an empty slot for example
*/
if (load(INDEX_CHANGER, drive, x ) != 0)
{
- DebugPrint(DEBUG_ERROR,SECTION_MAP_BARCODE, "Load drive(%d) from(%d) failed\n", drive, x);
+ DebugPrint(DEBUG_ERROR,SECTION_MAP_BARCODE, _("Load drive(%d) from(%d) failed\n"), drive, x);
continue;
}
SCSI_CloseDevice(INDEX_TAPE);
- if ((result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &datestamp, &label)) == NULL)
+ if ((chgscsi_result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label)) == NULL)
{
pbarcoderes->action = UPDATE_SLOT;
- strcpy(pbarcoderes->data.voltag, label);
+ strncpy(pbarcoderes->data.voltag, chgscsi_label,
+ SIZEOF(pbarcoderes->data.voltag));
pbarcoderes->data.slot = x;
pbarcoderes->data.from = 0;
pbarcoderes->data.LoadCount = 1;
if (BarCode(INDEX_CHANGER) == 1)
{
- strcpy(pbarcoderes->data.barcode, pDTE[drive].VolTag);
+ strncpy(pbarcoderes->data.barcode, pDTE[drive].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
MapBarCode(labelfile, pbarcoderes);
} else {
MapBarCode(labelfile, pbarcoderes);
}
} else {
- DebugPrint(DEBUG_ERROR,SECTION_MAP_BARCODE, "Read label failed\n");
+ DebugPrint(DEBUG_ERROR,SECTION_MAP_BARCODE, _("Read label failed\n"));
}
if (eject)
{
- eject_tape("", eject);
+ (void)eject_tape("", eject);
}
(void)unload(INDEX_TAPE, drive, x);
}
- DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, "##### STOP Inventory\n");
+ DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, _("##### STOP Inventory\n"));
+ free(pbarcoderes);
}
/*
* Check if the slot ist empty
* slot -> slot number to check
*/
-int isempty(int fd, int slot)
+int
+isempty(
+ int fd,
+ int slot)
{
extern OpenFiles_T *pDev;
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### START isempty\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### START isempty\n"));
if (ElementStatusValid == 0)
{
if ( pDev[fd].functions->function_status(fd, 1) != 0)
{
- DebugPrint(DEBUG_ERROR,SECTION_TAPE,"##### STOP isempty [-1]\n");
+ DebugPrint(DEBUG_ERROR,SECTION_TAPE,_("##### STOP isempty [-1]\n"));
return(-1);
+ /*NOTREACHED*/
}
}
if (pSTE[slot].status == 'E')
{
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP isempty [1]\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP isempty [1]\n"));
return(1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP isempty [0]\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP isempty [0]\n"));
return(0);
}
-int get_clean_state(char *tapedev)
+int
+get_clean_state(
+ char *tapedev)
{
extern OpenFiles_T *pDev;
/* Return 1 if cleaning is needed */
int ret;
-
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### START get_clean_state\n");
+
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### START get_clean_state\n"));
if (pDev[INDEX_TAPECTL].SCSI == 0)
{
- DebugPrint(DEBUG_ERROR,SECTION_TAPE,"##### STOP get_clean_state [-1]\n");
+ DebugPrint(DEBUG_ERROR,SECTION_TAPE,_("##### STOP get_clean_state [-1]\n"));
return(-1);
+ /*NOTREACHED*/
}
ret=pDev[INDEX_TAPECTL].functions->function_clean(tapedev);
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP get_clean_state [%d]\n", ret);
- return(ret);
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP get_clean_state [%d]\n"), ret);
+ return(ret);
}
/*
* Type describes if we should force the SCSI eject if available
* normal eject is done with the ioctl
*/
-int eject_tape(char *tapedev, int type)
- /* This function ejects the tape from the drive */
+/* This function ejects the tape from the drive */
+
+int
+eject_tape(
+ char * tapedev,
+ int type)
{
extern OpenFiles_T *pDev;
- int ret = 0;
- extern changer_t chg; /* Needed for the infos about emubarcode and labelfile */
+ int ret;
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### START eject_tape\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### START eject_tape %s\n"),tapedev);
+ if (pDev[INDEX_TAPECTL].functions == NULL)
+ return(-1);
/*
* Try to read the label
*/
- if (pDev[INDEX_TAPE].avail == 1 && (chg.emubarcode == 1 || BarCode(INDEX_CHANGER)))
+ if (pDev[INDEX_TAPE].avail == 1 && (changer->emubarcode == 1 || BarCode(INDEX_CHANGER)))
{
if (pDev[INDEX_TAPECTL].SCSI == 1 && pDev[INDEX_TAPECTL].avail) {
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### eject_tape rewind\n");
pDev[INDEX_TAPECTL].functions->function_rewind(INDEX_TAPECTL);
} else {
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### eject_tape rewind2\n");
pDev[INDEX_TAPE].functions->function_rewind(INDEX_TAPE);
}
if (pDev[INDEX_TAPE].devopen == 1)
{
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### eject_tape close\n");
SCSI_CloseDevice(INDEX_TAPE);
}
-
+
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### tape_eject tape_rdlabel\n");
chgscsi_result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label);
}
if (pDev[INDEX_TAPECTL].SCSI == 1 && pDev[INDEX_TAPECTL].avail == 1 && type == 1)
{
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### tape_eject eject\n");
ret=pDev[INDEX_TAPECTL].functions->function_eject(tapedev, type);
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP (SCSI)eject_tape [%d]\n", ret);
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP (SCSI)eject_tape [%d]\n"), ret);
return(ret);
+ /*NOTREACHED*/
}
-
+
if (pDev[INDEX_TAPE].avail == 1)
{
ret=Tape_Ioctl(INDEX_TAPE, IOCTL_EJECT);
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP (ioctl)eject_tape [%d]\n", ret);
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP (ioctl)eject_tape [%d]\n"), ret);
return(ret);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"##### STOP eject_tape [-1]\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP eject_tape [-1]\n"));
return(-1);
}
/* Find an empty slot, starting at start, ending at start+count */
-int find_empty(int fd, int start, int count)
+int
+find_empty(
+ int fd,
+ int start,
+ int count)
{
extern OpenFiles_T *pDev;
- int x;
- int end;
+ size_t x;
+ size_t end;
- DebugPrint(DEBUG_INFO,SECTION_ELEMENT,"###### START find_empty\n");
+ DebugPrint(DEBUG_INFO,SECTION_ELEMENT,_("###### START find_empty\n"));
if (ElementStatusValid == 0)
{
if ( pDev[fd].functions->function_status(fd , 1) != 0)
{
- DebugPrint(DEBUG_ERROR,SECTION_ELEMENT,"###### END find_empty [%d]\n", -1);
- return(-1);
+ DebugPrint(DEBUG_ERROR,SECTION_ELEMENT,
+ _("###### END find_empty [-1]\n"));
+ return((ssize_t)-1);
+ /*NOTREACHED*/
}
}
-
+
if (count == 0)
{
end = STE;
} else {
end = start + count;
}
-
+
if (end > STE)
{
end = STE;
}
-
- DebugPrint(DEBUG_INFO,SECTION_ELEMENT,"start at %d, end at %d\n", start, end);
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,
+ _("start at %zu, end at %zu\n"),
+ (size_t)start,
+ (size_t)end);
for (x = start; x < end; x++)
{
if (pSTE[x].status == 'E')
{
- DebugPrint(DEBUG_INFO,SECTION_ELEMENT,"###### END find_empty [%d]\n", x);
- return(x);
+ DebugPrint(DEBUG_INFO,SECTION_ELEMENT,
+ _("###### END find_empty [%lu]\n"), x);
+ return((ssize_t)x);
+ /*NOTREACHED*/
}
}
- DebugPrint(DEBUG_ERROR,SECTION_ELEMENT,"###### END find_empty [%d]\n", -1);
- return(-1);
+ DebugPrint(DEBUG_ERROR,SECTION_ELEMENT,_("###### END find_empty [-1]\n"));
+ return((ssize_t)-1);
}
/*
* 0 -> drive is empty
* 1 -> drive is loaded
*/
-int drive_loaded(int fd, int drivenum)
+int
+drive_loaded(
+ int fd,
+ int drivenum)
{
extern OpenFiles_T *pDev;
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"###### START drive_loaded\n");
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"%-20s : fd %d drivenum %d \n", "drive_loaded", fd, drivenum);
-
-
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("###### START drive_loaded\n"));
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,
+ _(" drive_loaded : fd %d drivenum %d \n"), fd, drivenum);
+
+
if (ElementStatusValid == 0)
{
if (pDev[INDEX_CHANGER].functions->function_status(INDEX_CHANGER, 1) != 0)
{
- DebugPrint(DEBUG_ERROR,SECTION_TAPE,"Fatal error\n");
+ DebugPrint(DEBUG_ERROR,SECTION_TAPE,_("Fatal error\n"));
return(-1);
+ /*NOTREACHED*/
}
}
-
+
if (pDTE[drivenum].status == 'E') {
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"###### STOP drive_loaded (empty)\n");
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("###### STOP drive_loaded (empty)\n"));
return(0);
- } else {
- DebugPrint(DEBUG_INFO,SECTION_TAPE,"###### STOP drive_loaded (not empty)\n");
- return(1);
+ /*NOTREACHED*/
}
+ DebugPrint(DEBUG_INFO,SECTION_TAPE,_("###### STOP drive_loaded (not empty)\n"));
+ return(1);
}
* TODO:
* Check if the MTE is empty
*/
-int unload(int fd, int drive, int slot)
+int
+unload(
+ int fd,
+ int drive,
+ int slot)
{
extern OpenFiles_T *pDev;
- int ret;
- extern changer_t chg; /* Needed for the infos about emubarcode and labelfile */
extern int do_inventory;
- MBC_T *pbarcoderes = malloc(sizeof(MBC_T));
+ MBC_T *pbarcoderes;
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("###### START unload\n"));
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,
+ _(" unload : fd %d, slot %d, drive %d \n"),
+ fd, slot, drive);
+ pbarcoderes = alloc(SIZEOF(MBC_T));
+ memset(pbarcoderes, 0, SIZEOF(MBC_T));
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"###### START unload\n");
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"%-20s : fd %d, slot %d, drive %d \n", "unload", fd, slot, drive);
- memset(pbarcoderes, 0, sizeof(MBC_T));
-
/*
* If the Element Status is not valid try to
* init it
{
if (pDev[INDEX_CHANGER].functions->function_status(INDEX_CHANGER , 1) != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"Element Status not valid, reset failed\n");
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP unload (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("Element Status not valid, reset failed\n"));
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP unload (-1)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
}
-
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"%-20s : unload drive %d[%d] slot %d[%d]\n", "unload",
- drive,
- pDTE[drive].address,
- slot,
- pSTE[slot].address);
-
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,
+ _(" unload : unload drive %d[%d] slot %d[%d]\n"),
+ drive, pDTE[drive].address, slot, pSTE[slot].address);
+
/*
* Unloading an empty tape unit makes no sense
* so return with an error
*/
if (pDTE[drive].status == 'E')
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"unload : Drive %d address %d is empty\n", drive, pDTE[drive].address);
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP unload (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("unload : Drive %d address %d is empty\n"), drive, pDTE[drive].address);
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP unload (-1)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
-
+
/*
* If the destination slot is full
* try to find an enpty slot
*/
- if (pSTE[slot].status == 'F')
+ if (pSTE[slot].status == 'F')
{
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"unload : Slot %d address %d is full\n", drive, pSTE[slot].address);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("unload : Slot %d address %d is full\n"), drive, pSTE[slot].address);
if ( ElementStatusValid == 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "unload: Element Status not valid, can't find an empty slot\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("unload: Element Status not valid, can't find an empty slot\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
-
+
slot = find_empty(fd, 0, 0);
if (slot == -1 )
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "unload: No Empty slot found\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("unload: No Empty slot found\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"unload : found empty one, try to unload to slot %d\n", slot);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("unload : found empty one, try to unload to slot %d\n"), slot);
}
-
+
/*
* If eject is not set we must read the label info
*/
- if (chg.eject == 0)
+ if (changer->eject == 0)
{
- if (pDev[INDEX_TAPE].avail == 1 && (chg.emubarcode == 1 || BarCode(INDEX_CHANGER)))
+ if (pDev[INDEX_TAPE].avail == 1 && (changer->emubarcode == 1 || BarCode(INDEX_CHANGER)))
{
if (pDev[INDEX_TAPECTL].SCSI == 1 && pDev[INDEX_TAPECTL].avail) {
} else {
pDev[INDEX_TAPE].functions->function_rewind(INDEX_TAPE);
}
-
+
if (pDev[INDEX_TAPE].devopen == 1)
{
SCSI_CloseDevice(INDEX_TAPE);
}
-
+
chgscsi_result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label);
- }
+ }
}
/*
* Do the unload/move
*/
- ret = pDev[INDEX_CHANGER].functions->function_move(INDEX_CHANGER , pDTE[drive].address, pSTE[slot].address);
+ if (pDev[INDEX_CHANGER].functions->function_move(INDEX_CHANGER,
+ pDTE[drive].address, pSTE[slot].address) != 0) {
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP unload (-1 move failed)\n"));
+ free(pbarcoderes);
+ return(-1);
+ /*NOTREACHED*/
+ }
+
/*
* Update the Status
*/
if (pDev[INDEX_CHANGER].functions->function_status(INDEX_CHANGER , 1) != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP unload (-1 update status failed)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP unload (-1 update status failed)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
-
+
/*
* Did we get an error from tape_rdlabel
* if no update the vol/label mapping
* If chgscsi_label is NULL don't do it
*/
- if (chgscsi_result == NULL && chgscsi_label != NULL && chg.labelfile != NULL)
+ if (chgscsi_result == NULL && chgscsi_label != NULL && changer->labelfile != NULL)
{
/*
* OK this is only needed if we have emubarcode set
* There we need an exact inventory to get the search function working
* and returning correct results
*/
- if (BarCode(INDEX_CHANGER) == 0 && chg.emubarcode == 1)
+ if (BarCode(INDEX_CHANGER) == 0 && changer->emubarcode == 1)
{
- /*
+ /*
* We got something, update the db
* but before check if the db has as entry the slot
* to where we placed the tape, if no force an inventory
*/
pbarcoderes->action = FIND_SLOT;
- strcpy(pbarcoderes->data.voltag, chgscsi_label);
- strcpy(pbarcoderes->data.barcode, pSTE[slot].VolTag );
+ strncpy(pbarcoderes->data.voltag, chgscsi_label,
+ SIZEOF(pbarcoderes->data.voltag));
+ strncpy(pbarcoderes->data.barcode, pSTE[slot].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
pbarcoderes->data.slot = 0;
pbarcoderes->data.from = 0;
pbarcoderes->data.LoadCount = 0;
-
-
- if ( MapBarCode(chg.labelfile, pbarcoderes) == 0) /* Nothing known about this, do an Inventory */
+
+
+ if ( MapBarCode(changer->labelfile, pbarcoderes) == 0) /* Nothing known about this, do an Inventory */
{
do_inventory = 1;
} else {
if (slot != pbarcoderes->data.slot)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"Slot DB out of sync, slot %d != map %d",slot, pbarcoderes->data.slot);
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("Slot DB out of sync, slot %d != map %d"),slot, pbarcoderes->data.slot);
do_inventory = 1;
}
}
}
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP unload(0)\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP unload(0)\n"));
+ free(pbarcoderes);
return(0);
}
* return -> 0 = success
* !0 = failure
*/
-int load(int fd, int drive, int slot)
+int
+load(
+ int fd,
+ int drive,
+ int slot)
{
- extern changer_t chg; /* Needed for the infos about emubarcode and labelfile */
char *result = NULL; /* Needed for the result of tape_rdlabel */
- char *datestamp = NULL; /* Result pointer for tape_rdlabel */
- char *label = NULL; /* Result pointer for tape_rdlabel */
int ret;
extern OpenFiles_T *pDev;
extern int do_inventory;
- MBC_T *pbarcoderes = malloc(sizeof(MBC_T));
+ MBC_T *pbarcoderes;
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"###### START load\n");
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"%-20s : fd %d, drive %d, slot %d \n", "load", fd, drive, slot);
- memset(pbarcoderes, 0 , sizeof(MBC_T));
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("###### START load\n"));
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("%-20s : fd %d, drive %d, slot %d \n"), "load", fd, drive, slot);
+ pbarcoderes = alloc(SIZEOF(MBC_T));
+ memset(pbarcoderes, 0 , SIZEOF(MBC_T));
if (ElementStatusValid == 0)
{
if (pDev[fd].functions->function_status(fd, 1) != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### STOP load (-1)\n");
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### STOP load (-1 update status failed)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("##### STOP load (-1)\n"));
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("##### STOP load (-1 update status failed)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
}
* is ge than the value we got from the ModeSense fail with an return value
* of 2
*/
- if (slot >= STE)
+ if ((size_t)slot >= STE)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"load : slot %d ge STE %d\n",slot, STE);
- ChgExit("load", "slot >= STE", FATAL);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("load : slot %d ge STE %d\n"),slot, STE);
+ ChgExit("load", _("slot >= STE"), FATAL);
+ /*NOTREACHED*/
}
-
- /*
+
+ /*
* And the same for the tape drives
*/
- if (drive >= DTE)
+ if (drive >= (int)DTE)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"load : drive %d ge DTE %d\n",drive, DTE);
- ChgExit("load", "drive >= DTE", FATAL);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("load : drive %d ge DTE %d\n"),drive, DTE);
+ ChgExit("load", _("drive >= DTE"), FATAL);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"load : load drive %d[%d] slot %d[%d]\n",drive,
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("load : load drive %d[%d] slot %d[%d]\n"),drive,
pDTE[drive].address,
slot,
pSTE[slot].address);
-
+
if (pDTE[drive].status == 'F')
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"load : Drive %d address %d is full\n", drive, pDTE[drive].address);
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### STOP load (-1 update status failed)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("load : Drive %d address %d is full\n"), drive, pDTE[drive].address);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("##### STOP load (-1 update status failed)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
-
+
if (pSTE[slot].status == 'E')
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"load : Slot %d address %d is empty\n", drive, pSTE[slot].address);
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### STOP load (-1 update status failed)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("load : Slot %d address %d is empty\n"), drive, pSTE[slot].address);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("##### STOP load (-1 update status failed)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
-
+
ret = pDev[fd].functions->function_move(fd, pSTE[slot].address, pDTE[drive].address);
/*
*/
if (pDev[fd].functions->function_status(fd, 1) != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### STOP load (-1 update status failed)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("##### STOP load (-1 update status failed)\n"));
+ free(pbarcoderes);
return(-1);
+ /*NOTREACHED*/
}
/*
* Try to read the label
* and update the label/slot database
*/
- if (pDev[INDEX_TAPE].avail == 1 && (chg.emubarcode == 1 || BarCode(INDEX_CHANGER)))
+ if (pDev[INDEX_TAPE].avail == 1 && (changer->emubarcode == 1 || BarCode(INDEX_CHANGER)))
{
if (pDev[INDEX_TAPECTL].SCSI == 1 && pDev[INDEX_TAPECTL].avail) {
} else {
pDev[INDEX_TAPE].functions->function_rewind(INDEX_TAPE);
}
-
+
if (pDev[INDEX_TAPE].devopen == 1)
{
SCSI_CloseDevice(INDEX_TAPE);
}
-
- result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &datestamp, &label);
+
+ result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label);
}
-
+
/*
* Did we get an error from tape_rdlabel
* if no update the vol/label mapping
*/
- if (result == NULL && chg.labelfile != NULL && label != NULL )
+ if (result == NULL && changer->labelfile != NULL && chgscsi_label != NULL )
{
- /*
+ /*
* We got something, update the db
* but before check if the db has as entry the slot
* to where we placed the tape, if no force an inventory
*/
- strcpy(pbarcoderes->data.voltag, label);
+ strncpy(pbarcoderes->data.voltag, chgscsi_label,
+ SIZEOF(pbarcoderes->data.voltag));
pbarcoderes->data.slot = 0;
pbarcoderes->data.from = 0;
pbarcoderes->data.LoadCount = 0;
-
-
+
+
/*
* If we have an barcode reader we only do an update
* If emubarcode is set we check if the
* info in the DB is up to date, if no we set the do_inventory flag
*/
-
- if (BarCode(INDEX_CHANGER) == 1 && chg.emubarcode == 0)
+
+ if (BarCode(INDEX_CHANGER) == 1 && changer->emubarcode == 0)
{
pbarcoderes->action = UPDATE_SLOT;
- strcpy(pbarcoderes->data.barcode, pDTE[drive].VolTag);
+ strncpy(pbarcoderes->data.barcode, pDTE[drive].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
pbarcoderes->data.LoadCount = 1;
pbarcoderes->data.slot = slot;
- MapBarCode(chg.labelfile, pbarcoderes);
+ MapBarCode(changer->labelfile, pbarcoderes);
}
-
- if (BarCode(INDEX_CHANGER) == 0 && chg.emubarcode == 1)
+
+ if (BarCode(INDEX_CHANGER) == 0 && changer->emubarcode == 1)
{
pbarcoderes->action = FIND_SLOT;
- if (MapBarCode(chg.labelfile, pbarcoderes) == 0) /* Nothing found, do an inventory */
+ if (MapBarCode(changer->labelfile, pbarcoderes) == 0) /* Nothing found, do an inventory */
{
do_inventory = 1;
} else { /* We got something, is it correct ? */
if (slot != pbarcoderes->data.slot && do_inventory == 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"Slot DB out of sync, slot %d != map %d",slot, pbarcoderes->data.slot);
- ChgExit("Load", "Label DB out of sync", FATAL);
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("Slot DB out of sync, slot %d != map %d"),slot, pbarcoderes->data.slot);
+ ChgExit("Load", _("Label DB out of sync"), FATAL);
+ /*NOTREACHED*/
} else { /* OK, so increment the load count */
pbarcoderes->action = UPDATE_SLOT;
pbarcoderes->data.LoadCount = 1;
pbarcoderes->data.slot = slot;
- MapBarCode(chg.labelfile, pbarcoderes);
+ MapBarCode(changer->labelfile, pbarcoderes);
}
}
}
-
- if (BarCode(INDEX_CHANGER) == 1 && chg.emubarcode == 1)
+
+ if (BarCode(INDEX_CHANGER) == 1 && changer->emubarcode == 1)
{
- ChgExit("Load", "BarCode == 1 and emubarcode == 1", FATAL);
+ ChgExit("Load", _("BarCode == 1 and emubarcode == 1"), FATAL);
+ /*NOTREACHED*/
}
-
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"##### STOP load (%d)\n",ret);
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("##### STOP load (%d)\n"),ret);
+ free(pbarcoderes);
return(ret);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"##### STOP load (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("##### STOP load (%d)\n"),ret);
+ free(pbarcoderes);
return(ret);
}
* Returns the number of Storage Slots which the library has
* fd -> pointer to the internal devie structure pDev
* return -> Number of slots
- */
-int get_slot_count(int fd)
+ */
+int
+get_slot_count(
+ int fd)
{
extern OpenFiles_T *pDev;
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"###### START get_slot_count\n");
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"%-20s : fd %d\n", "get_slot_count", fd);
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("###### START get_slot_count\n"));
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("%-20s : fd %d\n"), "get_slot_count", fd);
if (ElementStatusValid == 0)
{
pDev[fd].functions->function_status(fd, 1);
}
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"##### STOP get_slot_count (%d)\n",STE);
- return(STE);
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,
+ _("##### STOP get_slot_count (%zu)\n"), STE);
+ return((ssize_t)STE);
/*
* return the number of slots in the robot
* to the caller
*/
-
}
* retreive the number of data-transfer devices /Tape drives)
* fd -> pointer to the internal devie structure pDev
* return -> -1 on failure
- */
-int get_drive_count(int fd)
+ */
+int
+get_drive_count(
+ int fd)
{
extern OpenFiles_T *pDev;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"###### START get_drive_count\n");
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-20s : fd %d\n", "get_drive_count", fd);
-
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### START get_drive_count\n"));
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-20s : fd %d\n"), "get_drive_count", fd);
if (ElementStatusValid == 0)
{
if ( pDev[fd].functions->function_status(fd, 1) != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_SCSI, "Error getting drive count\n");
- DebugPrint(DEBUG_ERROR, SECTION_SCSI, "##### STOP get_drive_count (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI, _("Error getting drive count\n"));
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI, _("##### STOP get_drive_count (-1)\n"));
return(-1);
+ /*NOTREACHED*/
}
}
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"###### STOP get_drive_count (%d drives)\n",DTE);
- return(DTE);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,
+ _("###### STOP get_drive_count (%zu drives)\n"), DTE);
+ return((ssize_t)DTE);
}
/*
* The OS has to decide if it is an SCSI Commands capable device
*/
-int OpenDevice(int ip , char *DeviceName, char *ConfigName, char *ident)
+int
+OpenDevice(
+ int ip,
+ char * DeviceName,
+ char * ConfigName,
+ char * ident)
{
extern OpenFiles_T *pDev;
- char tmpstr[15];
+ char tmpstr[16];
ChangerCMD_T *p = (ChangerCMD_T *)&ChangerIO;
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START OpenDevice\n");
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"OpenDevice : %s\n", DeviceName);
-
- pDev[ip].ConfigName = stralloc(ConfigName);
- pDev[ip].dev = stralloc(DeviceName);
+
+ if (!ConfigName)
+ return 1;
+ if (!DeviceName)
+ return 1;
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START OpenDevice\n"));
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("OpenDevice : %s\n"), DeviceName);
+
+ pDev[ip].ConfigName = strdup(ConfigName);
+ pDev[ip].dev = strdup(DeviceName);
if (SCSI_OpenDevice(ip) != 0 )
{
{
pDev[ip].functions = p;
strncpy(pDev[ip].ident, ident, 17);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"override using ident = %s, type = %s\n",p->ident, p->type);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP OpenDevice\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("override using ident = %s, type = %s\n"),p->ident, p->type);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP OpenDevice\n"));
return(1);
+ /*NOTREACHED*/
}
p++;
}
- ChgExit("OpenDevice", "ident not found", FATAL);
+ ChgExit("OpenDevice", _("ident not found"), FATAL);
+ /*NOTREACHED*/
} else {
while(p->ident != NULL)
{
if (strcmp(pDev[ip].ident, p->ident) == 0)
{
pDev[ip].functions = p;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"using ident = %s, type = %s\n",p->ident, p->type);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP OpenDevice\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("using ident = %s, type = %s\n"),p->ident, p->type);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP OpenDevice\n"));
return(1);
+ /*NOTREACHED*/
}
p++;
}
/* divide generic in generic_type, where type is the */
/* num returned by the inquiry command */
p = (ChangerCMD_T *)&ChangerIO;
- sprintf(&tmpstr[0],"%s_%s","generic",pDev[0].type);
+ g_snprintf(&tmpstr[0], SIZEOF(tmpstr), "%s_%s","generic",pDev[0].type);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### OpenDevice trying GENERIC Device %s\n",tmpstr);
while(p->ident != NULL)
{
if (strcmp(tmpstr, p->ident) == 0)
{
pDev[ip].functions = p;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"using ident = %s, type = %s\n",p->ident, p->type);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP OpenDevice\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("using ident = %s, type = %s\n"),p->ident, p->type);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP OpenDevice\n"));
return(1);
+ /*NOTREACHED*/
}
p++;
- }
+ }
} else { /* Something failed, lets see what */
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"##### STOP OpenDevice failed\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("##### STOP OpenDevice failed\n"));
}
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP OpenDevice (nothing found) !!\n");
- return(0);
+ pDev[ip].functions = NULL;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP OpenDevice (nothing found) !!\n"));
+ return(0);
}
* This functions checks if the library has an barcode reader.
* fd -> pointer to the internal devie structure pDev
*/
-int BarCode(int fd)
+int
+BarCode(
+ int fd)
{
- int ret = 0;
+ int ret;
extern OpenFiles_T *pDev;
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### START BarCode\n");
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"%-20s : fd %d\n", "BarCode", fd);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### START BarCode\n"));
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("%-20s : fd %d\n"), "BarCode", fd);
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"Ident = [%s], function = [%s]\n", pDev[fd].ident,
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("Ident = [%s], function = [%s]\n"), pDev[fd].ident,
pDev[fd].functions->ident);
ret = pDev[fd].functions->function_barcode(fd);
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### STOP BarCode (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### STOP BarCode (%d)\n"),ret);
return(ret);
}
* wait -> time to wait for the ready status
*
*/
-int Tape_Ready(int fd, int wait_time)
+int
+Tape_Ready(
+ int fd,
+ time_t wait_time)
{
extern OpenFiles_T *pDev;
- int true = 1;
+ int done;
int ret;
- int cnt = 0;
-
+ time_t cnt = 0;
+
RequestSense_T *pRequestSense;
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START Tape_Ready\n");
-
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### START Tape_Ready\n"));
+
/*
- * Which device should we use to get the
+ * Which device should we use to get the
* tape status
*/
{
fd = INDEX_TAPE;
}
-
+
/*
* But if available and can do SCSI
* the scsitapedev
{
fd = INDEX_TAPECTL;
}
-
+
if (pDev[fd].avail == 1 && pDev[fd].SCSI == 0)
{
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready : Can't send SCSI commands, try ioctl\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Tape_Ready : Can't send SCSI commands, try ioctl\n"));
/*
* Do we get an non negative result.
* If yes this function is available
- * and we can use it to get the status
+ * and we can use it to get the status
* of the tape
*/
ret = Tape_Status(fd);
{
if ( ret & TAPE_ONLINE)
{
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready : Ready after %d seconds\n",cnt);
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Tape_Ready : Ready after %d seconds\n"),cnt);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP Tape_Ready\n"));
return(0);
+ /*NOTREACHED*/
}
cnt++;
sleep(1);
ret = Tape_Status(fd);
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready : not ready, stop after %d seconds\n",cnt);
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
- return(0);
-
- } else {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready : no ioctl interface, will sleep for %d seconds\n", wait_time);
- sleep(wait_time);
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Tape_Ready : not ready, stop after %d seconds\n"),cnt);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP Tape_Ready\n"));
return(0);
+ /*NOTREACHED*/
+
}
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Tape_Ready : no ioctl interface, will sleep for %d seconds\n"), wait_time);
+ sleep(wait_time);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP Tape_Ready\n"));
+ return(0);
+ /*NOTREACHED*/
}
-
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready : malloc failed\n");
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
- return(-1);
- }
-
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
/*
* Ignore errors at this point
*/
GenericRewind(fd);
-
+
/*
* Wait until we get an ready condition
*/
-
- while (true && cnt < wait_time)
+
+ done = 0;
+ while (!done && (cnt < wait_time))
{
ret = SCSI_TestUnitReady(fd, pRequestSense );
switch (ret)
{
case SCSI_OK:
- true = 0;
+ done = 1;
break;
case SCSI_SENSE:
- switch (SenseHandler(fd, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(fd, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SENSE_NO\n");
- true=0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SENSE_NO\n"));
+ done = 1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
break;
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SENSE_IGNORE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SENSE_IGNORE\n"));
+ done = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeReady (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeReady (TestUnitReady) SENSE_ABORT\n"));
+ amfree(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) default (SENSE)\n");
- true=0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) default (SENSE)\n"));
+ done = 1;
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeReady (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeReady (TestUnitReady) SCSI_ERROR\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeReady (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeReady (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeReady (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeReady (TestUnitReady) unknown (%d)\n"),ret);
break;
}
sleep(1);
cnt++;
}
- free(pRequestSense);
-
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready after %d sec\n", cnt);
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
+ amfree(pRequestSense);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Tape_Ready after %d sec\n"), cnt);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP Tape_Ready\n"));
return(0);
}
-int DecodeSCSI(CDB_T CDB, char *string)
+int
+DecodeSCSI(
+ CDB_T CDB,
+ char * string)
{
SC_COM_T *pSCSICommand;
int x;
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "##### START DecodeSCSI\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("##### START DecodeSCSI\n"));
pSCSICommand = (SC_COM_T *)&SCSICommand;
while (pSCSICommand->name != NULL)
{
if (CDB[0] == pSCSICommand->command)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%s %s", string, pSCSICommand->name);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%s %s"), string, pSCSICommand->name);
for (x=0; x < pSCSICommand->length; x++)
{
DebugPrint(DEBUG_INFO, SECTION_SCSI," %02X", CDB[x]);
}
DebugPrint(DEBUG_INFO, SECTION_SCSI,"\n");
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP DecodeSCSI\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP DecodeSCSI\n"));
return(0);
+ /*NOTREACHED*/
}
pSCSICommand++;
}
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"Not found %X\n", CDB[0]);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP DecodeSCSI\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("Not found %X\n"), CDB[0]);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP DecodeSCSI\n"));
return(0);
}
-int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *out)
+int
+DecodeModeSense(
+ u_char * buffer,
+ size_t offset,
+ char * pstring,
+ char block,
+ FILE * out)
{
ReadWriteErrorRecoveryPage_T *prp;
DisconnectReconnectPage_T *pdrp;
- int length = (unsigned char)*buffer - 4 - offset;
+ size_t length = (size_t)buffer[0] - 4 - offset;
+
+ (void)pstring; /* Quiet unused parameter warning */
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START DecodeModeSense\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START DecodeModeSense\n"));
dump_hex(buffer, 255, DEBUG_INFO, SECTION_SCSI);
/* Jump over the Parameter List header and an offset if we have something
* Unknown at the start (ADIC-218) at the moment
- *
+ *
*/
buffer = buffer + 4 + offset;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"buffer length = %d\n", length);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("buffer length = %d\n"), length);
if (block) /* Do we have an block descriptor page ?*/
{
if (out != NULL)
- fprintf(out, "DecodeModeSense : Density Code %x\n", buffer[0]);
+ g_fprintf(out, _("DecodeModeSense : Density Code %x\n"), (unsigned)buffer[0]);
buffer++;
if (out != NULL)
- fprintf(out, "DecodeModeSense : Number of Blocks %d\n", V3(buffer));
+ g_fprintf(out, _("DecodeModeSense : Number of Blocks %d\n"), V3(buffer));
buffer = buffer + 4;
if (out != NULL)
- fprintf(out, "DecodeModeSense : Block Length %d\n", V3(buffer));
+ g_fprintf(out, _("DecodeModeSense : Block Length %d\n"), V3(buffer));
buffer = buffer + 3;
}
-
+
while (length > 0)
{
switch (*buffer & 0x3f)
case 0x1:
prp = (ReadWriteErrorRecoveryPage_T *)buffer;
if (out != NULL)
- {
- fprintf(out, "DecodeModeSense : Read/Write Error Recovery Page\n");
- fprintf(out,"\tTransfer Block %d\n", prp->tb);
- fprintf(out,"\tEnable Early Recovery %d\n", prp->eer);
- fprintf(out,"\tPost Error %d\n", prp->per);
- fprintf(out,"\tDisable Transfer on Error %d\n", prp->dte);
- fprintf(out,"\tDisable ECC Correction %d\n", prp->dcr);
- fprintf(out,"\tRead Retry Count %d\n", prp->ReadRetryCount);
- fprintf(out,"\tWrite Retry Count %d\n", prp->WriteRetryCount);
+ {
+ g_fprintf(out, _("DecodeModeSense : Read/Write Error Recovery Page\n"));
+ g_fprintf(out,_("\tTransfer Block %d\n"), prp->tb);
+ g_fprintf(out,_("\tEnable Early Recovery %d\n"), prp->eer);
+ g_fprintf(out,_("\tPost Error %d\n"), prp->per);
+ g_fprintf(out,_("\tDisable Transfer on Error %d\n"), prp->dte);
+ g_fprintf(out,_("\tDisable ECC Correction %d\n"), prp->dcr);
+ g_fprintf(out,_("\tRead Retry Count %d\n"), prp->ReadRetryCount);
+ g_fprintf(out,_("\tWrite Retry Count %d\n"), prp->WriteRetryCount);
}
buffer++;
break;
pdrp = (DisconnectReconnectPage_T *)buffer;
if (out != NULL)
{
- fprintf(out, "DecodeModeSense : Disconnect/Reconnect Page\n");
- fprintf(out,"\tBuffer Full Ratio %d\n", pdrp->BufferFullRatio);
- fprintf(out,"\tBuffer Empty Ratio %d\n", pdrp->BufferEmptyRatio);
- fprintf(out,"\tBus Inactivity Limit %d\n",
+ g_fprintf(out, _("DecodeModeSense : Disconnect/Reconnect Page\n"));
+ g_fprintf(out,_("\tBuffer Full Ratio %d\n"), pdrp->BufferFullRatio);
+ g_fprintf(out,_("\tBuffer Empty Ratio %d\n"), pdrp->BufferEmptyRatio);
+ g_fprintf(out,_("\tBus Inactivity Limit %d\n"),
V2(pdrp->BusInactivityLimit));
- fprintf(out,"\tDisconnect Time Limit %d\n",
+ g_fprintf(out,_("\tDisconnect Time Limit %d\n"),
V2(pdrp->DisconnectTimeLimit));
- fprintf(out,"\tConnect Time Limit %d\n",
+ g_fprintf(out,_("\tConnect Time Limit %d\n"),
V2(pdrp->ConnectTimeLimit));
- fprintf(out,"\tMaximum Burst Size %d\n",
+ g_fprintf(out,_("\tMaximum Burst Size %d\n"),
V2(pdrp->MaximumBurstSize));
- fprintf(out,"\tDTDC %d\n", pdrp->DTDC);
+ g_fprintf(out,_("\tDTDC %d\n"), pdrp->DTDC);
}
buffer++;
break;
pEAAPage = (EAAPage_T *)buffer;
if (out != NULL)
{
- fprintf(out,"DecodeModeSense : Element Address Assignment Page\n");
- fprintf(out,"\tMedium Transport Element Address %d\n",
+ g_fprintf(out,_("DecodeModeSense : Element Address Assignment Page\n"));
+ g_fprintf(out,_("\tMedium Transport Element Address %d\n"),
V2(pEAAPage->MediumTransportElementAddress));
- fprintf(out,"\tNumber of Medium Transport Elements %d\n",
+ g_fprintf(out,_("\tNumber of Medium Transport Elements %d\n"),
V2(pEAAPage->NoMediumTransportElements));
- fprintf(out, "\tFirst Storage Element Address %d\n",
+ g_fprintf(out, _("\tFirst Storage Element Address %d\n"),
V2(pEAAPage->FirstStorageElementAddress));
- fprintf(out, "\tNumber of Storage Elements %d\n",
+ g_fprintf(out, _("\tNumber of Storage Elements %d\n"),
V2(pEAAPage->NoStorageElements));
- fprintf(out, "\tFirst Import/Export Element Address %d\n",
+ g_fprintf(out, _("\tFirst Import/Export Element Address %d\n"),
V2(pEAAPage->FirstImportExportElementAddress));
- fprintf(out, "\tNumber of ImportExport Elements %d\n",
+ g_fprintf(out, _("\tNumber of ImportExport Elements %d\n"),
V2(pEAAPage->NoImportExportElements));
- fprintf(out, "\tFirst Data Transfer Element Address %d\n",
+ g_fprintf(out, _("\tFirst Data Transfer Element Address %d\n"),
V2(pEAAPage->FirstDataTransferElementAddress));
- fprintf(out, "\tNumber of Data Transfer Elements %d\n",
+ g_fprintf(out, _("\tNumber of Data Transfer Elements %d\n"),
V2(pEAAPage->NoDataTransferElements));
}
buffer++;
pDeviceCapabilitiesPage = (DeviceCapabilitiesPage_T *)buffer;
if (out != NULL)
{
- fprintf(out, "DecodeModeSense : MT can store data cartridges %d\n",
+ g_fprintf(out, _("DecodeModeSense : MT can store data cartridges %d\n"),
pDeviceCapabilitiesPage->MT);
- fprintf(out, "DecodeModeSense : ST can store data cartridges %d\n",
+ g_fprintf(out, _("DecodeModeSense : ST can store data cartridges %d\n"),
pDeviceCapabilitiesPage->ST);
- fprintf(out, "DecodeModeSense : IE can store data cartridges %d\n",
+ g_fprintf(out, _("DecodeModeSense : IE can store data cartridges %d\n"),
pDeviceCapabilitiesPage->IE);
- fprintf(out, "DecodeModeSense : DT can store data cartridges %d\n",
+ g_fprintf(out, _("DecodeModeSense : DT can store data cartridges %d\n"),
pDeviceCapabilitiesPage->DT);
- fprintf(out, "DecodeModeSense : MT to MT %d\n",
+ g_fprintf(out, _("DecodeModeSense : MT to MT %d\n"),
pDeviceCapabilitiesPage->MT2MT);
- fprintf(out, "DecodeModeSense : MT to ST %d\n",
+ g_fprintf(out, _("DecodeModeSense : MT to ST %d\n"),
pDeviceCapabilitiesPage->MT2ST);
- fprintf(out, "DecodeModeSense : MT to IE %d\n",
+ g_fprintf(out, _("DecodeModeSense : MT to IE %d\n"),
pDeviceCapabilitiesPage->MT2IE);
- fprintf(out, "DecodeModeSense : MT to DT %d\n",
+ g_fprintf(out, _("DecodeModeSense : MT to DT %d\n"),
pDeviceCapabilitiesPage->MT2DT);
- fprintf(out, "DecodeModeSense : ST to MT %d\n",
+ g_fprintf(out, _("DecodeModeSense : ST to MT %d\n"),
pDeviceCapabilitiesPage->ST2ST);
- fprintf(out, "DecodeModeSense : ST to MT %d\n",
+ g_fprintf(out, _("DecodeModeSense : ST to MT %d\n"),
pDeviceCapabilitiesPage->ST2ST);
- fprintf(out, "DecodeModeSense : ST to DT %d\n",
+ g_fprintf(out, _("DecodeModeSense : ST to DT %d\n"),
pDeviceCapabilitiesPage->ST2DT);
- fprintf(out, "DecodeModeSense : IE to MT %d\n",
+ g_fprintf(out, _("DecodeModeSense : IE to MT %d\n"),
pDeviceCapabilitiesPage->IE2MT);
- fprintf(out, "DecodeModeSense : IE to ST %d\n",
+ g_fprintf(out, _("DecodeModeSense : IE to ST %d\n"),
pDeviceCapabilitiesPage->IE2IE);
- fprintf(out, "DecodeModeSense : IE to ST %d\n",
+ g_fprintf(out, _("DecodeModeSense : IE to ST %d\n"),
pDeviceCapabilitiesPage->IE2DT);
- fprintf(out, "DecodeModeSense : IE to ST %d\n",
+ g_fprintf(out, _("DecodeModeSense : IE to ST %d\n"),
pDeviceCapabilitiesPage->IE2DT);
- fprintf(out, "DecodeModeSense : DT to MT %d\n",
+ g_fprintf(out, _("DecodeModeSense : DT to MT %d\n"),
pDeviceCapabilitiesPage->DT2MT);
- fprintf(out, "DecodeModeSense : DT to ST %d\n",
+ g_fprintf(out, _("DecodeModeSense : DT to ST %d\n"),
pDeviceCapabilitiesPage->DT2ST);
- fprintf(out, "DecodeModeSense : DT to IE %d\n",
+ g_fprintf(out, _("DecodeModeSense : DT to IE %d\n"),
pDeviceCapabilitiesPage->DT2IE);
- fprintf(out, "DecodeModeSense : DT to DT %d\n",
+ g_fprintf(out, _("DecodeModeSense : DT to DT %d\n"),
pDeviceCapabilitiesPage->DT2DT);
}
buffer++;
/* EAAPage = NULL; */
/* DeviceCapabilitiesPage = NULL; */
return(-1);
+ /*NOTREACHED*/
}
- length = length - *buffer - 2;
- buffer = buffer + *buffer + 1;
+ length = length - (size_t)*buffer - 2;
+ buffer = buffer + (size_t)*buffer + 1;
}
return(0);
}
-int DecodeSense(RequestSense_T *sense, char *pstring, FILE *out)
+int
+DecodeSense(
+ RequestSense_T * sense,
+ char * pstring,
+ FILE * out)
{
if (out == NULL)
{
return(0);
+ /*NOTREACHED*/
}
- fprintf(out,"##### START DecodeSense\n");
- fprintf(out,"%sSense Keys\n", pstring);
+ g_fprintf(out,_("##### START DecodeSense\n"));
+ g_fprintf(out,_("%sSense Keys\n"), pstring);
if (sense->ErrorCode == 0x70)
{
- fprintf(out,"\tExtended Sense \n");
+ g_fprintf(out,_("\tExtended Sense \n"));
} else {
- fprintf(out,"\tErrorCode %02x\n", sense->ErrorCode);
- fprintf(out,"\tValid %d\n", sense->Valid);
+ g_fprintf(out,_("\tErrorCode %02x\n"), sense->ErrorCode);
+ g_fprintf(out,_("\tValid %d\n"), sense->Valid);
}
- fprintf(out,"\tASC %02X\n", sense->AdditionalSenseCode);
- fprintf(out,"\tASCQ %02X\n", sense->AdditionalSenseCodeQualifier);
- fprintf(out,"\tSense key %02X\n", sense->SenseKey);
+ g_fprintf(out,_("\tASC %02X\n"), sense->AdditionalSenseCode);
+ g_fprintf(out,_("\tASCQ %02X\n"), sense->AdditionalSenseCodeQualifier);
+ g_fprintf(out,_("\tSense key %02X\n"), sense->SenseKey);
switch (sense->SenseKey)
{
case 0:
- fprintf(out,"\t\tNo Sense\n");
+ g_fprintf(out,_("\t\tNo Sense\n"));
break;
case 1:
- fprintf(out,"\t\tRecoverd Error\n");
+ g_fprintf(out,_("\t\tRecoverd Error\n"));
break;
case 2:
- fprintf(out,"\t\tNot Ready\n");
+ g_fprintf(out,_("\t\tNot Ready\n"));
break;
case 3:
- fprintf(out,"\t\tMedium Error\n");
+ g_fprintf(out,_("\t\tMedium Error\n"));
break;
case 4:
- fprintf(out,"\t\tHardware Error\n");
+ g_fprintf(out,_("\t\tHardware Error\n"));
break;
case 5:
- fprintf(out,"\t\tIllegal Request\n");
+ g_fprintf(out,_("\t\tIllegal Request\n"));
break;
case 6:
- fprintf(out,"\t\tUnit Attention\n");
+ g_fprintf(out,_("\t\tUnit Attention\n"));
break;
case 7:
- fprintf(out,"\t\tData Protect\n");
+ g_fprintf(out,_("\t\tData Protect\n"));
break;
case 8:
- fprintf(out,"\t\tBlank Check\n");
+ g_fprintf(out,_("\t\tBlank Check\n"));
break;
case 9:
- fprintf(out,"\t\tVendor uniq\n");
+ g_fprintf(out,_("\t\tVendor uniq\n"));
break;
case 0xa:
- fprintf(out,"\t\tCopy Aborted\n");
+ g_fprintf(out,_("\t\tCopy Aborted\n"));
break;
case 0xb:
- fprintf(out,"\t\tAborted Command\n");
+ g_fprintf(out,_("\t\tAborted Command\n"));
break;
case 0xc:
- fprintf(out,"\t\tEqual\n");
+ g_fprintf(out,_("\t\tEqual\n"));
break;
case 0xd:
- fprintf(out,"\t\tVolume Overflow\n");
+ g_fprintf(out,_("\t\tVolume Overflow\n"));
break;
case 0xe:
- fprintf(out,"\t\tMiscompare\n");
+ g_fprintf(out,_("\t\tMiscompare\n"));
break;
case 0xf:
- fprintf(out,"\t\tReserved\n");
+ g_fprintf(out,_("\t\tReserved\n"));
break;
}
- return(0);
+ return(0);
}
-int DecodeExtSense(ExtendedRequestSense_T *sense, char *pstring, FILE *out)
+int
+DecodeExtSense(
+ ExtendedRequestSense_T * sense,
+ char * pstring,
+ FILE * out)
{
ExtendedRequestSense_T *p;
- fprintf(out,"##### START DecodeExtSense\n");
+ g_fprintf(out,_("##### START DecodeExtSense\n"));
p = sense;
- fprintf(out,"%sExtended Sense\n", pstring);
+ g_fprintf(out,_("%sExtended Sense\n"), pstring);
DecodeSense((RequestSense_T *)p, pstring, out);
- fprintf(out,"\tLog Parameter Page Code %02X\n", sense->LogParameterPageCode);
- fprintf(out,"\tLog Parameter Code %02X\n", sense->LogParameterCode);
- fprintf(out,"\tUnderrun/Overrun Counter %02X\n", sense->UnderrunOverrunCounter);
- fprintf(out,"\tRead/Write Error Counter %d\n", V3((char *)sense->ReadWriteDataErrorCounter));
- if (sense->AdditionalSenseLength > sizeof(RequestSense_T))
+ g_fprintf(out,_("\tLog Parameter Page Code %02X\n"), sense->LogParameterPageCode);
+ g_fprintf(out,_("\tLog Parameter Code %02X\n"), sense->LogParameterCode);
+ g_fprintf(out,_("\tUnderrun/Overrun Counter %02X\n"), sense->UnderrunOverrunCounter);
+ g_fprintf(out,_("\tRead/Write Error Counter %d\n"), V3((char *)sense->ReadWriteDataErrorCounter));
+ if (sense->AdditionalSenseLength > (u_char)sizeof(RequestSense_T))
{
if (sense->PF)
- fprintf(out,"\tPower Fail\n");
+ g_fprintf(out,_("\tPower Fail\n"));
if (sense->BPE)
- fprintf(out,"\tSCSI Bus Parity Error\n");
+ g_fprintf(out,_("\tSCSI Bus Parity Error\n"));
if (sense->FPE)
- fprintf(out,"\tFormatted Buffer parity Error\n");
+ g_fprintf(out,_("\tFormatted Buffer parity Error\n"));
if (sense->ME)
- fprintf(out,"\tMedia Error\n");
+ g_fprintf(out,_("\tMedia Error\n"));
if (sense->ECO)
- fprintf(out,"\tError Counter Overflow\n");
+ g_fprintf(out,_("\tError Counter Overflow\n"));
if (sense->TME)
- fprintf(out,"\tTapeMotion Error\n");
+ g_fprintf(out,_("\tTapeMotion Error\n"));
if (sense->TNP)
- fprintf(out,"\tTape Not Present\n");
+ g_fprintf(out,_("\tTape Not Present\n"));
if (sense->LBOT)
- fprintf(out,"\tLogical Beginning of tape\n");
+ g_fprintf(out,_("\tLogical Beginning of tape\n"));
if (sense->TMD)
- fprintf(out,"\tTape Mark Detect Error\n");
+ g_fprintf(out,_("\tTape Mark Detect Error\n"));
if (sense->WP)
- fprintf(out,"\tWrite Protect\n");
+ g_fprintf(out,_("\tWrite Protect\n"));
if (sense->FMKE)
- fprintf(out,"\tFilemark Error\n");
+ g_fprintf(out,_("\tFilemark Error\n"));
if (sense->URE)
- fprintf(out,"\tUnder Run Error\n");
+ g_fprintf(out,_("\tUnder Run Error\n"));
if (sense->WEI)
- fprintf(out,"\tWrite Error 1\n");
+ g_fprintf(out,_("\tWrite Error 1\n"));
if (sense->SSE)
- fprintf(out,"\tServo System Error\n");
+ g_fprintf(out,_("\tServo System Error\n"));
if (sense->FE)
- fprintf(out,"\tFormatter Error\n");
+ g_fprintf(out,_("\tFormatter Error\n"));
if (sense->UCLN)
- fprintf(out,"\tCleaning Cartridge is empty\n");
+ g_fprintf(out,_("\tCleaning Cartridge is empty\n"));
if (sense->RRR)
- fprintf(out,"\tReverse Retries Required\n");
+ g_fprintf(out,_("\tReverse Retries Required\n"));
if (sense->CLND)
- fprintf(out,"\tTape Drive has been cleaned\n");
+ g_fprintf(out,_("\tTape Drive has been cleaned\n"));
if (sense->CLN)
- fprintf(out,"\tTape Drive needs to be cleaned\n");
+ g_fprintf(out,_("\tTape Drive needs to be cleaned\n"));
if (sense->PEOT)
- fprintf(out,"\tPhysical End of Tape\n");
+ g_fprintf(out,_("\tPhysical End of Tape\n"));
if (sense->WSEB)
- fprintf(out,"\tWrite Splice Error\n");
+ g_fprintf(out,_("\tWrite Splice Error\n"));
if (sense->WSEO)
- fprintf(out,"\tWrite Splice Error\n");
- fprintf(out,"\tRemaing 1024 byte tape blocks %d\n", V3((char *)sense->RemainingTape));
- fprintf(out,"\tTracking Retry Counter %02X\n", sense->TrackingRetryCounter);
- fprintf(out,"\tRead/Write Retry Counter %02X\n", sense->ReadWriteRetryCounter);
- fprintf(out,"\tFault Sympton Code %02X\n", sense->FaultSymptomCode);
+ g_fprintf(out,_("\tWrite Splice Error\n"));
+ g_fprintf(out,_("\tRemaing 1024 byte tape blocks %d\n"), V3((char *)sense->RemainingTape));
+ g_fprintf(out,_("\tTracking Retry Counter %02X\n"), sense->TrackingRetryCounter);
+ g_fprintf(out,_("\tRead/Write Retry Counter %02X\n"), sense->ReadWriteRetryCounter);
+ g_fprintf(out,_("\tFault Sympton Code %02X\n"), sense->FaultSymptomCode);
}
return(0);
}
-int PrintInquiry(SCSIInquiry_T *SCSIInquiry)
+int
+PrintInquiry(
+ SCSIInquiry_T * SCSIInquiry)
+{
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START PrintInquiry\n"));
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %x\n"), "qualifier", SCSIInquiry->qualifier);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %x\n"), "type", SCSIInquiry->type);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %x\n"), "data_format", SCSIInquiry->data_format);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %X\n"), "ansi_version", SCSIInquiry->ansi_version);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %X\n"), "ecma_version", SCSIInquiry->ecma_version);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %X\n"), "iso_version", SCSIInquiry->iso_version);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %X\n"), "type_modifier", SCSIInquiry->type_modifier);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %x\n"), "removable", SCSIInquiry->removable);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %.8s\n"), "vendor_info", SCSIInquiry->vendor_info);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %.16s\n"), "prod_ident", SCSIInquiry->prod_ident);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %.4s\n"), "prod_version", SCSIInquiry->prod_version);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("%-15s %.19s\n"), "vendor_specific", SCSIInquiry->vendor_specific);
+ return(0);
+}
+
+
+int
+DoNothing0(void)
+{
+ dbprintf(_("##### START DoNothing\n"));
+ return(0);
+}
+
+int
+DoNothing1(
+ int unused1)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START PrintInquiry\n");
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %x\n", "qualifier", SCSIInquiry->qualifier);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %x\n", "type", SCSIInquiry->type);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %x\n", "data_format", SCSIInquiry->data_format);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %X\n", "ansi_version", SCSIInquiry->ansi_version);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %X\n", "ecma_version", SCSIInquiry->ecma_version);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %X\n", "iso_version", SCSIInquiry->iso_version);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %X\n", "type_modifier", SCSIInquiry->type_modifier);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %x\n", "removable", SCSIInquiry->removable);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %.8s\n", "vendor_info", SCSIInquiry->vendor_info);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %.16s\n", "prod_ident", SCSIInquiry->prod_ident);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %.4s\n", "prod_version", SCSIInquiry->prod_version);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"%-15s %.19s\n", "vendor_specific", SCSIInquiry->vendor_specific);
+ (void)unused1; /* Quiet unused parameter warning */
+
+ dbprintf(_("##### START DoNothing\n"));
return(0);
}
+int
+DoNothing2(
+ int unused1,
+ int unused2)
+{
+ (void)unused1; /* Quiet unused parameter warning */
+ (void)unused2; /* Quiet unused parameter warning */
+
+ dbprintf(_("##### START DoNothing\n"));
+ return(0);
+}
-int DoNothing()
+int
+DoNothing3(
+ int unused1,
+ int unused2,
+ int unused3)
{
- dbprintf(("##### START DoNothing\n"));
+ (void)unused1; /* Quiet unused parameter warning */
+ (void)unused2; /* Quiet unused parameter warning */
+ (void)unused3; /* Quiet unused parameter warning */
+
+ dbprintf(_("##### START DoNothing\n"));
return(0);
}
-int GenericFree()
+int
+GenericFree(void)
{
- dbprintf(("##### START GenericFree\n"));
+ dbprintf(_("##### START GenericFree\n"));
return(0);
}
-int GenericSearch()
+int
+GenericSearch(void)
{
- dbprintf(("##### START GenericSearch\n"));
+ dbprintf(_("##### START GenericSearch\n"));
return(0);
}
-int TreeFrogBarCode(int DeviceFD)
+int
+TreeFrogBarCode(
+ int DeviceFD)
{
extern OpenFiles_T *pDev;
ModePageTreeFrogVendorUnique_T *pVendor;
- dbprintf(("##### START TreeFrogBarCode\n"));
+ dbprintf(_("##### START TreeFrogBarCode\n"));
if (pModePage == NULL)
{
- if ((pModePage = malloc(0xff)) == NULL)
- {
- dbprintf(("TreeFrogBarCode : malloc failed\n"));
- return(-1);
- }
+ pModePage = alloc(0xff);
}
-
+
if (SCSI_ModeSense(DeviceFD, pModePage, 0xff, 0x0, 0x3f) == 0)
{
- DecodeModeSense(pModePage, 0, "TreeFrogBarCode :", 0, debug_file);
-
+ DecodeModeSense(pModePage, 0, _("TreeFrogBarCode :"), 0, debug_file);
+
if (pVendorUnique == NULL)
{
- dbprintf(("TreeFrogBarCode : no pVendorUnique\n"));
+ dbprintf(_("TreeFrogBarCode : no pVendorUnique\n"));
return(0);
+ /*NOTREACHED*/
}
pVendor = ( ModePageTreeFrogVendorUnique_T *)pVendorUnique;
-
- dbprintf(("TreeFrogBarCode : EBARCO %d\n", pVendor->EBARCO));
- dbprintf(("TreeFrogCheckSum : CHKSUM %d\n", pVendor->CHKSUM));
- dump_hex((char *)pDev[INDEX_CHANGER].inquiry, INQUIRY_SIZE, DEBUG_INFO, SECTION_ELEMENT);
+ dbprintf(_("TreeFrogBarCode : EBARCO %d\n"), pVendor->EBARCO);
+ dbprintf(_("TreeFrogCheckSum : CHKSUM %d\n"), pVendor->CHKSUM);
+
+ dump_hex((u_char *)pDev[INDEX_CHANGER].inquiry, INQUIRY_SIZE, DEBUG_INFO, SECTION_ELEMENT);
return(pVendor->EBARCO);
+ /*NOTREACHED*/
}
return(0);
}
-int EXB_BarCode(int DeviceFD)
+int
+EXB_BarCode(
+ int DeviceFD)
{
extern OpenFiles_T *pDev;
ModePageEXB120VendorUnique_T *pVendor;
ModePageEXB120VendorUnique_T *pVendorWork;
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### START EXB_BarCode\n");
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### START EXB_BarCode\n"));
if (pModePage == NULL && LibModeSenseValid == 0)
{
- if ((pModePage = malloc(0xff)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_BARCODE,"EXB_BarCode : malloc failed\n");
- return(-1);
- }
+ pModePage = alloc(0xff);
+
if (SCSI_ModeSense(DeviceFD, pModePage, 0xff, 0x8, 0x3f) == 0)
{
- DecodeModeSense(pModePage, 0, "EXB_BarCode :", 0, debug_file);
+ DecodeModeSense(pModePage, 0, _("EXB_BarCode :"), 0, debug_file);
LibModeSenseValid = 1;
} else {
LibModeSenseValid = -1;
}
}
-
+
if (LibModeSenseValid == 1)
{
if (pVendorUnique == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : no pVendorUnique\n");
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : no pVendorUnique\n"));
return(0);
+ /*NOTREACHED*/
}
pVendor = ( ModePageEXB120VendorUnique_T *)pVendorUnique;
-
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : NBL %d\n", pVendor->NBL);
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : PS %d\n", pVendor->PS);
+
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : NBL %d\n"), pVendor->NBL);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : PS %d\n"), pVendor->PS);
if (pVendor->NBL == 1 && pVendor->PS == 1 )
{
- if ((pVendorWork = ( ModePageEXB120VendorUnique_T *)malloc(pVendor->ParameterListLength + 2)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_BARCODE,"EXB_BarCode : malloc failed\n");
- return(-1);
- }
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : setting NBL to 1\n");
- memcpy(pVendorWork, pVendor, pVendor->ParameterListLength + 2);
+ pVendorWork = alloc((size_t)pVendor->ParameterListLength + 2);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : setting NBL to 1\n"));
+ memcpy(pVendorWork, pVendor, (size_t)pVendor->ParameterListLength + 2);
pVendorWork->NBL = 0;
pVendorWork->PS = 0;
pVendorWork->RSVD0 = 0;
- if (SCSI_ModeSelect(DeviceFD, (char *)pVendorWork, pVendorWork->ParameterListLength + 2, 0, 1, 0) == 0)
+ if (SCSI_ModeSelect(DeviceFD, (u_char *)pVendorWork, (u_char)(pVendorWork->ParameterListLength + 2), 0, 1, 0) == 0)
{
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : SCSI_ModeSelect OK\n");
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : SCSI_ModeSelect OK\n"));
/* Hack !!!!!!
*/
pVendor->NBL = 0;
-
+
/* And now again !!!
*/
GenericResetStatus(DeviceFD);
} else {
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : SCSI_ModeSelect failed\n");
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : SCSI_ModeSelect failed\n"));
}
+ amfree(pVendorWork);
}
- dump_hex((char *)pDev[INDEX_CHANGER].inquiry, INQUIRY_SIZE, DEBUG_INFO, SECTION_BARCODE);
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"EXB_BarCode : vendor_specific[19] %x\n",
+ dump_hex((u_char *)pDev[INDEX_CHANGER].inquiry, INQUIRY_SIZE, DEBUG_INFO, SECTION_BARCODE);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("EXB_BarCode : vendor_specific[19] %x\n"),
pDev[INDEX_CHANGER].inquiry->vendor_specific[19]);
}
-
return(1);
}
-int NoBarCode(int DeviceFD)
+int
+NoBarCode(
+ int DeviceFD)
{
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### START NoBarCode\n");
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### STOP NoBarCode\n");
+ (void)DeviceFD; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### START NoBarCode\n"));
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### STOP NoBarCode\n"));
return(0);
}
-int GenericBarCode(int DeviceFD)
+int
+GenericBarCode(
+ int DeviceFD)
{
- extern changer_t chg;
-
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### START GenericBarCode\n");
- if ( chg.havebarcode >= 1)
+ (void)DeviceFD; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### START GenericBarCode\n"));
+ if ( changer->havebarcode >= 1)
{
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### STOP GenericBarCode (havebarcode) => %d\n",chg.havebarcode);
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### STOP GenericBarCode (havebarcode) => %d\n"),changer->havebarcode);
return(1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### STOP GenericBarCode => 0\n");
+ DebugPrint(DEBUG_INFO, SECTION_BARCODE,_("##### STOP GenericBarCode => 0\n"));
return(0);
}
-int SenseHandler(int DeviceFD, unsigned char flag, unsigned char SenseKey, unsigned char AdditionalSenseCode, unsigned char AdditionalSenseCodeQualifier, char *buffer)
+int
+SenseHandler(
+ int DeviceFD,
+ u_char flag,
+ u_char SenseKey,
+ u_char AdditionalSenseCode,
+ u_char AdditionalSenseCodeQualifier,
+ RequestSense_T * buffer)
{
extern OpenFiles_T *pDev;
int ret = 0;
- dbprintf(("##### START SenseHandler\n"));
+ dbprintf(_("##### START SenseHandler\n"));
if (pDev[DeviceFD].inqdone == 1)
{
- dbprintf(("Ident = [%s], function = [%s]\n", pDev[DeviceFD].ident,
- pDev[DeviceFD].functions->ident));
+ dbprintf(_("Ident = [%s], function = [%s]\n"), pDev[DeviceFD].ident,
+ pDev[DeviceFD].functions->ident);
ret = pDev[DeviceFD].functions->function_error(DeviceFD, flag, SenseKey, AdditionalSenseCode, AdditionalSenseCodeQualifier, buffer);
} else {
- dbprintf((" Ups no sense\n"));
+ dbprintf(_(" Ups no sense\n"));
}
- dbprintf(("#### STOP SenseHandler\n"));
+ dbprintf(_("#### STOP SenseHandler\n"));
return(ret);
}
* if there are more than one
* Implement the SCSI path if available
*/
-int TapeStatus()
+int
+TapeStatus(void)
{
extern OpenFiles_T *pDev;
int ret;
- int true = 1;
- int cnt = 0;
+ int done;
+ int cnt;
RequestSense_T *pRequestSense;
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START TapeStatus\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### START TapeStatus\n"));
/*
* If it is an device which understand SCSI commands the
*/
if (pDev[INDEX_TAPECTL].SCSI == 1)
{
- if ((pRequestSense = malloc(sizeof(RequestSense_T))) == NULL)
- {
- dbprintf(("%-20s : malloc failed\n","TapeStatus"));
- return(-1);
- }
-
- while (true && cnt < 60)
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+ memset(pRequestSense, 0, SIZEOF(RequestSense_T));
+
+ for (done = 0, cnt = 0; !done && (cnt < 60); cnt++)
{
ret = SCSI_TestUnitReady(INDEX_TAPECTL, pRequestSense);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "TapeStatus TestUnitReady ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("TapeStatus TestUnitReady ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
case SCSI_SENSE:
- switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) SENSE_NO\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) SENSE_NO\n"));
pDTE[0].status = 'F';
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### FULL\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### FULL\n"));
+ done = 1;
break;
+
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
pDTE[0].status = 'E';
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### EMPTY\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### EMPTY\n"));
+ done = 1;
break;
+
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeStatus (TestUnitReady) SENSE_ABORT\n");
- true = 0;
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeStatus (TestUnitReady) SENSE_ABORT\n"));
+ done = 1;
break;
+
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) SENSE_RETRY\n"));
break;
+
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) default (SENSE)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) default (SENSE)\n"));
break;
}
break;
+
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeStatus (TestUnitReady) SCSI_ERROR\n");
- true = 0;
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeStatus (TestUnitReady) SCSI_ERROR\n"));
+ done = 1;
break;
+
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) SCSI_BUSY\n"));
break;
+
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"TapeStatus (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("TapeStatus (TestUnitReady) SCSI_CHECK\n"));
break;
+
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"TapeStatus (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("TapeStatus (TestUnitReady) unknown (%d)\n"),ret);
break;
+
}
- sleep(2);
- cnt++;
+ if (!done)
+ sleep(2);
}
+ amfree(pRequestSense);
} else {
ret = Tape_Status(INDEX_TAPE);
if ( ret & TAPE_ONLINE)
{
- pDTE[0].status ='F';
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### FULL\n");
+ pDTE[0].status ='F';
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### FULL\n"));
} else {
pDTE[0].status = 'E';
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### EMPTY\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### EMPTY\n"));
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP TapeStatus\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP TapeStatus\n"));
}
return(0);
}
-int DLT4000Eject(char *Device, int type)
+int
+DLT4000Eject(
+ char * Device,
+ int type)
{
extern OpenFiles_T *pDev;
ExtendedRequestSense_T *pExtendedRequestSense;
int ret;
int cnt = 0;
- int true = 1;
+ int done;
- dbprintf(("##### START DLT4000Eject\n"));
+ (void)Device; /* Quiet unused parameter warning */
- if ((pRequestSense = malloc(sizeof(RequestSense_T))) == NULL)
- {
- dbprintf(("%-20s : malloc failed\n","DLT4000Eject"));
- return(-1);
- }
+ dbprintf(_("##### START DLT4000Eject\n"));
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+ pExtendedRequestSense = alloc(SIZEOF(ExtendedRequestSense_T));
- if ((pExtendedRequestSense = malloc(sizeof(ExtendedRequestSense_T))) == NULL)
- {
- dbprintf(("%-20s : malloc failed\n","DLT4000Eject"));
- return(-1);
- }
-
if ( type > 1)
{
- dbprintf(("DLT4000Eject : use mtio ioctl for eject on %s\n", pDev[INDEX_TAPE].dev));
+ dbprintf(_("DLT4000Eject : use mtio ioctl for eject on %s\n"), pDev[INDEX_TAPE].dev);
+ free(pExtendedRequestSense);
+ free(pRequestSense);
return(Tape_Ioctl(INDEX_TAPE, IOCTL_EJECT));
+ /*NOTREACHED*/
}
-
-
-
+
+
+
if (pDev[INDEX_TAPECTL].SCSI == 0)
{
- dbprintf(("DLT4000Eject : Device %s not able to receive SCSI commands\n", pDev[INDEX_TAPE].dev));
+ dbprintf(_("DLT4000Eject : Device %s not able to receive SCSI commands\n"), pDev[INDEX_TAPE].dev);
+ free(pExtendedRequestSense);
+ free(pRequestSense);
return(Tape_Ioctl(INDEX_TAPE, IOCTL_EJECT));
+ /*NOTREACHED*/
}
-
-
- dbprintf(("DLT4000Eject : SCSI eject on %s = %s\n", pDev[INDEX_TAPECTL].dev, pDev[INDEX_TAPECTL].ConfigName));
-
- RequestSense(INDEX_TAPECTL, pExtendedRequestSense, 0);
- DecodeExtSense(pExtendedRequestSense, "DLT4000Eject : ", debug_file);
+
+
+ dbprintf(_("DLT4000Eject : SCSI eject on %s = %s\n"), pDev[INDEX_TAPECTL].dev, pDev[INDEX_TAPECTL].ConfigName);
+
+ RequestSense(INDEX_TAPECTL, pExtendedRequestSense, 0);
+ DecodeExtSense(pExtendedRequestSense, _("DLT4000Eject : "), debug_file);
/* Unload the tape, 0 == wait for success
- * 0 == unload
+ * 0 == unload
*/
ret = SCSI_LoadUnload(INDEX_TAPECTL, pRequestSense, 0, 0);
- RequestSense(INDEX_TAPECTL, pExtendedRequestSense, 0);
- DecodeExtSense(pExtendedRequestSense, "DLT4000Eject : ", debug_file);
-
+ RequestSense(INDEX_TAPECTL, pExtendedRequestSense, 0);
+ DecodeExtSense(pExtendedRequestSense, _("DLT4000Eject : "), debug_file);
+
/* < 0 == fatal */
- if (ret < 0)
- return(-1);
-
- if ( ret > 0)
- {
+ if (ret >= 0) {
+ free(pExtendedRequestSense);
+ free(pRequestSense);
+ return(-1);
+ /*NOTREACHED*/
}
-
- true = 1;
-
-
- while (true && cnt < 300)
+
+ done = 0;
+ while (!done && cnt < 300)
{
ret = SCSI_TestUnitReady(INDEX_TAPECTL, pRequestSense);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "DLT4000Eject TestUnitReady ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("DLT4000Eject TestUnitReady ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
- true = 0;
+ done = 1;
break;
case SCSI_SENSE:
- switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SENSE_NO\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SENSE_NO\n"));
+ done = 1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
+ done = 1;
break;
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SENSE_IGNORE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SENSE_IGNORE\n"));
+ done = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SENSE_ABORT\n"));
+ free(pExtendedRequestSense);
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) default (SENSE)\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) default (SENSE)\n"));
+ done = 1;
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SCSI_ERROR\n"));
+ free(pExtendedRequestSense);
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"DLT4000Eject (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"DLT4000Eject (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("DLT4000Eject (TestUnitReady) unknown (%d)\n"),ret);
break;
}
-
+
cnt++;
sleep(2);
}
-
-
+
+ dbprintf(_("DLT4000Eject : Ready after %d sec, done = %d\n"), cnt * 2, done);
+
+ free(pExtendedRequestSense);
free(pRequestSense);
-
- dbprintf(("DLT4000Eject : Ready after %d sec, true = %d\n", cnt * 2, true));
+
return(0);
-
}
/*
* Before unload check if there is an tape in the drive
*
*/
-int GenericEject(char *Device, int type)
+int
+GenericEject(
+ char * Device,
+ int type)
{
extern OpenFiles_T *pDev;
RequestSense_T *pRequestSense;
int ret;
int cnt = 0;
- int true = 1;
-
- DebugPrint(DEBUG_INFO, SECTION_TAPE, "##### START GenericEject\n");
-
- if ((pRequestSense = malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE, "%-20s : malloc failed\n","GenericEject");
- return(-1);
- }
-
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericEject : SCSI eject on %s = %s\n", pDev[INDEX_TAPECTL].dev, pDev[INDEX_TAPECTL].ConfigName);
-
+ int done;
+
+ (void)Device; /* Quiet unused parameter warning */
+ (void)type; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE, _("##### START GenericEject\n"));
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("GenericEject : SCSI eject on %s = %s\n"),
+ pDev[INDEX_TAPECTL].dev, pDev[INDEX_TAPECTL].ConfigName);
+
/*
* Can we use SCSI commands ?
*/
if (pDev[INDEX_TAPECTL].SCSI == 1)
{
LogSense(INDEX_TAPECTL);
- /*
+ /*
* Unload the tape, 1 == don't wait for success
- * 0 == unload
+ * 0 == unload
*/
ret = SCSI_LoadUnload(INDEX_TAPECTL, pRequestSense, 1, 0);
-
+
/* < 0 == fatal */
- if (ret < 0)
+ if (ret < 0) {
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject SCSI_LoadUnload failed\n");
+ free(pRequestSense);
return(-1);
-
- if ( ret > 0)
- {
- }
-
- true = 1;
-
-
- while (true && cnt < 300)
+ /*NOTREACHED*/
+ }
+
+ done = 0;
+ while (!done && cnt < 300)
{
ret = SCSI_TestUnitReady(INDEX_TAPECTL, pRequestSense);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "GenericEject TestUnitReady ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("GenericEject TestUnitReady ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
case SCSI_SENSE:
- switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(INDEX_TAPECTL, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SENSE_NO\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SENSE_NO\n"));
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
+ done = 1;
break;
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SENSE_IGNORE\n"));
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericEject (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericEject (TestUnitReady) SENSE_ABORT\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) default (SENSE)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) default (SENSE)\n"));
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericEject (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericEject (TestUnitReady) SCSI_ERROR\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericEject (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericEject (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericEject (TestUnitReady) unknown (%d)\n"),ret);
break;
- }
+ }
cnt++;
sleep(2);
}
-
- free(pRequestSense);
-
} else {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericEject : Device can't understand SCSI try ioctl\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("GenericEject : Device can't understand SCSI try ioctl\n"));
Tape_Ioctl(INDEX_TAPECTL, IOCTL_EJECT);
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericEject : Ready after %d sec, true = %d\n", cnt * 2, true);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,
+ _("GenericEject : Ready after %d sec\n"), cnt * 2);
+ free(pRequestSense);
return(0);
}
/*
- * Rewind the tape
+ * Rewind the tape
*
* TODO:
* Make the retry counter an config option,
* -1 -> error
* 0 -> success
*/
-int GenericRewind(int DeviceFD)
+int
+GenericRewind(
+ int DeviceFD)
{
CDB_T CDB;
- extern OpenFiles_T *pDev;
+ extern OpenFiles_T *pDev;
RequestSense_T *pRequestSense;
- char *errstr; /* Used by tape_rewind */
int ret;
int cnt = 0;
- int true = 1;
+ int done;
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START GenericRewind pDEV -> %d\n",DeviceFD);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### START GenericRewind pDEV -> %d\n"),DeviceFD);
/*
*/
if (pDev[DeviceFD].SCSI == 1)
{
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"GenericRewind : malloc failed\n");
- return(-1);
- }
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
/*
* Before doing the rewind check if the tape is ready to accept commands
*/
-
- while (true == 1)
+
+ done = 0;
+ while (!done)
{
ret = SCSI_TestUnitReady(DeviceFD, (RequestSense_T *)pRequestSense );
- DebugPrint(DEBUG_INFO, SECTION_TAPE, "GenericRewind (TestUnitReady) ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE, _("GenericRewind (TestUnitReady) ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
- true= 0;
+ done = 1;
break;
case SCSI_SENSE:
- switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_NO\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_NO\n"));
+ done = 1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_IGNORE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_IGNORE\n"));
+ done = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_ABORT\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) default (SENSE)\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) default (SENSE)\n"));
+ done = 1;
break;
} /* switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey.... */
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_ERROR\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
+
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) unknown (%d)\n"),ret);
break;
}
-
+
sleep(1);
- DebugPrint(DEBUG_INFO, SECTION_TAPE," Wait .... (%d)\n",cnt);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_(" Wait .... (%d)\n"),cnt);
if (cnt > 180)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP GenericRewind (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP GenericRewind (-1)\n"));
+ free(pRequestSense);
return(-1);
+ /*NOTREACHED*/
}
- } /* while true == 1 */
-
+ } /* while !done */
+
cnt = 0;
- true = 1;
-
+
CDB[0] = SC_COM_REWIND;
- CDB[1] = 1;
+ CDB[1] = 1;
CDB[2] = 0;
CDB[3] = 0;
CDB[4] = 0;
CDB[5] = 0;
-
- while (true)
+
+ done = 0;
+ while (!done)
{
ret = SCSI_Run(DeviceFD, Input, CDB, 6,
- NULL, 0,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
-
- DecodeSense(pRequestSense, "GenericRewind : ", debug_file);
-
- if (ret > 0)
+ NULL, 0,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
+
+ DecodeSense(pRequestSense, _("GenericRewind : "), debug_file);
+
+ if (ret > 0)
{
if (pRequestSense->SenseKey != UNIT_ATTENTION)
{
- true = 0;
+ done = 1;
}
}
if (ret == 0)
{
- true = 0;
+ done = 1;
}
if (ret < 0)
{
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericRewind : failed %d\n", ret);
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("GenericRewind : failed %d\n"), ret);
+ done = 1;
}
}
-
- true = 1;
-
- while (true && cnt < 300)
+
+ done = 0;
+ while (!done && (cnt < 300))
{
ret = SCSI_TestUnitReady(DeviceFD, pRequestSense);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "GenericRewind TestUnitReady ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("GenericRewind TestUnitReady ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
- true = 0;
+ done = 1;
break;
case SCSI_SENSE:
- switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_NO\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_NO\n"));
+ done = 1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_IGNORE\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_IGNORE\n"));
+ done = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_ABORT\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) default (SENSE)\n");
- true = 0;
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) default (SENSE)\n"));
+ done = 1;
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_ERROR\n"));
return(-1);
- break;
+ /*NOTREACHED*/
+
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericRewind (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("GenericRewind (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"GenericRewind (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("GenericRewind (TestUnitReady) unknown (%d)\n"),ret);
break;
}
cnt++;
sleep(2);
}
-
- free(pRequestSense);
-
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericRewind : Ready after %d sec, true = %d\n", cnt * 2, true);
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP GenericRewind (0)\n");
+
+ amfree(pRequestSense);
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("GenericRewind : Ready after %d sec, "
+ "done = %d\n"), cnt * 2, done);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP GenericRewind (0)\n"));
} else {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericRewind : use ioctl rewind\n");
- if (pDev[DeviceFD].devopen == 1)
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("GenericRewind : use ioctl rewind\n"));
+ if (pDev[DeviceFD].devopen == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Close Device\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("Close Device\n"));
SCSI_CloseDevice(DeviceFD);
}
- /*
- * Hmm retry it if it fails ?
- */
- cnt = 0;
- true = 1;
- while (true)
- {
- if ((errstr = tape_rewind(pDev[DeviceFD].dev)) == NULL)
- {
- true = 0;
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Rewind OK, (after %d tries)\n", cnt);
- } else {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"Rewind failed %s\n",errstr);
- /*
- * DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP GenericRewind (-1)\n");
- * return(-1);
- */
- cnt++;
- sleep(1);
- if (cnt > 60)
- {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP GenericRewind (-1), retry limit reached\n");
- return(-1);
- }
- }
- }
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP GenericRewind (0)\n");
+ /* no actual rewind operation here -- the device itself will handle that */
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP GenericRewind (0)\n"));
}
return(0);
* bit set in the return of an request sense
*
*/
-int GenericClean(char * Device)
+int
+GenericClean(
+ char * Device)
{
extern OpenFiles_T *pDev;
ExtendedRequestSense_T ExtRequestSense;
int ret = 0;
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START GenericClean\n");
+ (void)Device; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### START GenericClean\n"));
if (pDev[INDEX_TAPECTL].SCSI == 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"GenericClean : can't send SCSI commands\n");
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP GenericClean\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("GenericClean : can't send SCSI commands\n"));
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("##### STOP GenericClean\n"));
return(0);
+ /*NOTREACHED*/
}
/*
*/
if ( RequestSense(INDEX_TAPECTL, &ExtRequestSense, 1) == 0)
{
-
- DecodeExtSense(&ExtRequestSense, "GenericClean : ", debug_file);
+
+ DecodeExtSense(&ExtRequestSense, _("GenericClean : "), debug_file);
if(ExtRequestSense.CLN) {
ret = 1;
} else {
ret = 0;
}
} else {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"Got error from RequestSense\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,_("Got error from RequestSense\n"));
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP GenericClean (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP GenericClean (%d)\n"),ret);
return(ret);
}
-int GenericResetStatus(int DeviceFD)
-{
+int
+SCSI_LogSenseClean(
+ char * Device)
+{
+ extern OpenFiles_T *pDev;
CDB_T CDB;
RequestSense_T *pRequestSense;
int ret = 0;
- int retry = 1;
-
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "##### START GenericResetStatus\n");
-
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
+ u_char *buffer;
+ size_t size = 128;
+
+ (void)Device; /* Quiet unused parameter warning */
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START SCSI_LogSenseClean\n");
+ if (pDev[INDEX_TAPECTL].SCSI == 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericResetStatus : malloc failed\n");
- return(-1);
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"SCSILogSenseClean : can't send SCSI commands\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP SCSI_LogSenseClean\n");
+ return(0);
+ /*NOTREACHED*/
}
+ if (NULL == (buffer = alloc(size))){
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"SCSI_LogSenseClean : can't alloc buffer\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP SCSI_LogSenseClean\n");
+ return(0);
+ }
+ if (NULL == (pRequestSense = alloc(SIZEOF(RequestSense_T)))){
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"SCSI_LogSenseClean : can't alloc memory\n");
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP SCSI_LogSenseClean\n");
+ return(0);
+ }
+
+ memset(buffer, 0, size);
+ CDB[0] = SC_COM_LOG_SENSE;
+ CDB[1] = 0;
+ CDB[2] = (u_char)(0x40 | 0x33);/* 0x40 for current values 0x33 Head Cleaning Page*/
+ CDB[3] = 0;
+ CDB[4] = 0;
+ CDB[5] = 0;
+ CDB[6] = 00;
+ MSB2(&CDB[7], size);
+ CDB[9] = 0;
+
+ if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
+ buffer,
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T)) != 0)
+ {
+ DecodeSense(pRequestSense, "SCSI_LogSenseClean : ",debug_file);
+ free(pRequestSense);
+ free(buffer);
+ DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### STOP SCSI_LogSenseClean (0) Page could not be read.\n");
+ return(0);
+ /*NOTREACHED*/
+ }
+ if (1==(0x1 & buffer[8])){ /* Bit 0 of the 4th byte in the Clean Head Log Parameter, which are the bytes */
+ /* 4 to 8 on the Log Sense Page 0x33 */
+ ret = 1;
+ }else {
+ ret = 0;
+ }
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP SCSI_LogSenseClean (%d)\n",ret);
+ free(pRequestSense);
+ free(buffer);
+ return(ret);
+}
+
+int
+GenericResetStatus(
+ int DeviceFD)
+{
+ CDB_T CDB;
+ RequestSense_T *pRequestSense;
+ int ret = 0;
+ int retry = 1;
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START GenericResetStatus\n"));
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
while (retry)
{
CDB[0] = SC_COM_IES; /* */
ret = SCSI_Run(DeviceFD, Input, CDB, 6,
NULL, 0,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
+ pRequestSense,
+ SIZEOF(RequestSense_T));
if (ret < 0)
{
- /* fprintf(stderr, "%s: Request Sense[Inquiry]: %02X", */
- /* "chs", ((unsigned char *) &pRequestSense)[0]); */
- /* for (i = 1; i < sizeof(RequestSense_T); i++) */
- /* fprintf(stderr, " %02X", ((unsigned char *) &pRequestSense)[i]); */
- /* fprintf(stderr, "\n"); */
+ /* g_fprintf(stderr, _("%s: Request Sense[Inquiry]: %02X"), */
+ /* "chs", ((u_char *) &pRequestSense)[0]); */
+ /* for (i = 1; i < SIZEOF(RequestSense_T); i++) */
+ /* g_fprintf(stderr, " %02X", ((u_char *) &pRequestSense)[i]); */
+ /* g_fprintf(stderr, "\n"); */
+ free(pRequestSense);
return(ret);
+ /*NOTREACHED*/
}
if ( ret > 0 )
{
- switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch (SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
+ free(pRequestSense);
return(0);
- break;
+ /*NOTREACHED*/
case SENSE_ABORT:
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
retry++;
if (retry < MAX_RETRIES )
{
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "GenericResetStatus : retry %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("GenericResetStatus : retry %d\n"), retry);
sleep(2);
} else {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericResetStatus : return (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericResetStatus : return (-1)\n"));
+ free(pRequestSense);
return(-1);
+ /*NOTREACHED*/
}
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericResetStatus : (default) return (-1)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericResetStatus : (default) return (-1)\n"));
+ free(pRequestSense);
return(-1);
- break;
+ /*NOTREACHED*/
}
}
if (ret == 0)
retry = 0;
}
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "##### STOP GenericResetStatus (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("##### STOP GenericResetStatus (%d)\n"),ret);
+ free(pRequestSense);
return(ret);
}
* pwork is an pointer to the structure OpenFiles_T, which is filled with information
* about the device to which we talk. Information are for example
* The vendor, the ident, which fd, etc. This strucure is filled when we open the
- * device
+ * device
* flag tells how to handle the information passed in the buffer,
* 0 -> Sense Key available
* 1 -> No Sense key available
* TODO:
* Limit recursion, may run in an infinite loop
*/
-int GenericSenseHandler(int ip, int flag, unsigned char SenseKey, unsigned char AdditionalSenseCode, unsigned char AdditionalSenseCodeQualifier, char *buffer)
-{
+int
+GenericSenseHandler(
+ int ip,
+ u_char flag,
+ u_char SenseKey,
+ u_char AdditionalSenseCode,
+ u_char AdditionalSenseCodeQualifier,
+ RequestSense_T * pRequestSense)
+{
extern OpenFiles_T *pDev;
- RequestSense_T *pRequestSense = (RequestSense_T *)buffer;
- int ret = 0;
- unsigned char *info = NULL;
-
- dbprintf(("##### START GenericSenseHandler\n"));
-
- DecodeSense(pRequestSense, "GenericSenseHandler : ", debug_file);
-
+ int ret;
+ char *info = NULL;
+
+ dbprintf(_("##### START GenericSenseHandler\n"));
+
+ DecodeSense(pRequestSense, _("GenericSenseHandler : "), debug_file);
+
ret = Sense2Action(pDev[ip].ident,
pDev[ip].inquiry->type,
flag, SenseKey,
AdditionalSenseCode,
AdditionalSenseCodeQualifier,
- (char **)&info);
-
- dbprintf(("##### STOP GenericSenseHandler\n"));
+ &info);
+
+ dbprintf(_("##### STOP GenericSenseHandler: %s\n"), _(info));
return(ret);
}
* Return:
* == 0 -> success
* != 0 -> error either from the SCSI command or from
- * the element handling
+ * the element handling
* TODO:
*/
-int SDXMove(int DeviceFD, int from, int to)
+int
+SDXMove(
+ int DeviceFD,
+ int from,
+ int to)
{
extern OpenFiles_T *pDev;
ElementInfo_T *pfrom;
ElementInfo_T *pto;
int ret;
int tapestat;
- int moveok = 0;
+ int moveok;
int SDX_MTE = 0; /* This are parameters passed */
int SDX_STE = -1; /* to */
int SDX_DTE = -1; /* AlignElements */
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### START SDXMove\n");
-
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"%-20s : from = %d, to = %d\n", "SDXMove", from, to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### START SDXMove\n"));
+
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("%-20s : from = %d, to = %d\n"), "SDXMove", from, to);
+
-
if ((pfrom = LookupElement(from)) == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"SDXMove : ElementInfo for %d not found\n", from);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("SDXMove : ElementInfo for %d not found\n"), from);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
-
+
if ((pto = LookupElement(to)) == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"SDXMove : ElementInfo for %d not found\n", to);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("SDXMove : ElementInfo for %d not found\n"), to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
-
- if (pfrom->status == 'E')
+
+ if (pfrom->status == 'E')
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"SDXMove : from %d is empty\n", from);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("SDXMove : from %d is empty\n"), from);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
- if (pto->status == 'F')
+ if (pto->status == 'F')
{
switch (pto->status)
{
case CHANGER:
break;
case STORAGE:
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"SDXMove : Destination Element %d Type %d is full\n",
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("SDXMove : Destination Element %d Type %d is full\n"),
pto->address, pto->type);
to = find_empty(DeviceFD, 0, 0);
if (to == -1 )
{
- DebugPrint(DEBUG_ERROR, SECTION_MOVE,"SDXMove : no empty slot found for unload\n");
+ DebugPrint(DEBUG_ERROR, SECTION_MOVE,_("SDXMove : no empty slot found for unload\n"));
return(-1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"SDXMove : Unload to %d\n", to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("SDXMove : Unload to %d\n"), to);
if ((pto = LookupElement(to)) == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "SDXMove : ElementInfo for %d not found\n", to);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("SDXMove : ElementInfo for %d not found\n"), to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
break;
case IMPORT:
if (SDX_DTE >= 0 && SDX_STE >= 0)
{
ret = SCSI_AlignElements(DeviceFD, SDX_MTE, SDX_DTE, SDX_STE);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### SCSI_AlignElemnts ret = %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### SCSI_AlignElemnts ret = %d\n"),ret);
if (ret != 0 )
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
} else {
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### Error setting STE/DTE %d/%d\n", SDX_STE, SDX_DTE);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### Error setting STE/DTE %d/%d\n"), SDX_STE, SDX_DTE);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(-1);
+ /*NOTREACHED*/
}
- /*
- * If from is a tape we must check if it is loaded
- * and if yes we have to eject it
+ /*
+ * If from is a tape we must check if it is loaded
+ * and if yes we have to eject it
*/
if (pfrom->type == TAPETYPE)
{
if ( tapestat & TAPE_ONLINE)
{
if (pDev[INDEX_TAPECTL].SCSI == 1)
- {
+ {
ret = eject_tape(pDev[INDEX_TAPECTL].dev,1);
} else {
ret = eject_tape(pDev[INDEX_TAPE].dev,2);
}
}
- if ( ret == 0)
+ if ((ret == 0) && moveok)
{
ret = SCSI_Move(DeviceFD, 0, from, to);
} else {
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(ret);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP SDXMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP SDXMove\n"));
return(ret);
}
* Return:
* == 0 -> success
* != 0 -> error either from the SCSI command or from
- * the element handling
+ * the element handling
* TODO:
*/
-int GenericMove(int DeviceFD, int from, int to)
+int
+GenericMove(
+ int DeviceFD,
+ int from,
+ int to)
{
ElementInfo_T *pfrom;
ElementInfo_T *pto;
int ret = 0;
-
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "##### START GenericMove\n");
-
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "%-20s : from = %d, to = %d\n", "GenericMove", from, to);
-
-
+
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("##### START GenericMove\n"));
+
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("%-20s : from = %d, to = %d\n"), "GenericMove", from, to);
+
+
if ((pfrom = LookupElement(from)) == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : ElementInfo for %d not found\n", from);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP GenericMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : ElementInfo for %d not found\n"), from);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP GenericMove\n"));
return(-1);
+ /*NOTREACHED*/
}
-
+
if ((pto = LookupElement(to)) == NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : ElementInfo for %d not found\n", to);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP GenericMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : ElementInfo for %d not found\n"), to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP GenericMove\n"));
return(-1);
+ /*NOTREACHED*/
}
-
- if (pfrom->status == 'E')
+
+ if (pfrom->status == 'E')
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : from %d is empty\n", from);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP GenericMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : from %d is empty\n"), from);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP GenericMove\n"));
return(-1);
+ /*NOTREACHED*/
}
-
- if (pto->status == 'F')
+
+ if (pto->status == 'F')
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : Destination Element %d Type %d is full\n",
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : Destination Element %d Type %d is full\n"),
pto->address, pto->type);
to = find_empty(DeviceFD, 0, 0);
if ( to == -1)
{
- DebugPrint(DEBUG_ERROR, SECTION_MOVE, "GenericMove : no empty slot found\n");
+ DebugPrint(DEBUG_ERROR, SECTION_MOVE, _("GenericMove : no empty slot found\n"));
return(-1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : Unload to %d\n", to);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : Unload to %d\n"), to);
if ((pto = LookupElement(to)) == NULL)
{
- DebugPrint(DEBUG_ERROR, SECTION_MOVE, " Ups should not happen\n");
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP GenericMove\n");
+ DebugPrint(DEBUG_ERROR, SECTION_MOVE, _(" Ups should not happen\n"));
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP GenericMove\n"));
return(-1);
+ /*NOTREACHED*/
}
}
-
+
if (CheckMove(pfrom, pto))
{
ret = SCSI_Move(DeviceFD, 0, from, to);
}
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "GenericMove : SCSI_Move return (%d)\n", ret);
- DebugPrint(DEBUG_INFO, SECTION_MOVE,"##### STOP GenericMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("GenericMove : SCSI_Move return (%d)\n"), ret);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE,_("##### STOP GenericMove\n"));
return(ret);
}
* 0 => Not OK
*/
-int CheckMove(ElementInfo_T *from, ElementInfo_T *to)
+int
+CheckMove(
+ ElementInfo_T * from,
+ ElementInfo_T * to)
{
int moveok = 0;
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "##### START CheckMove\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("##### START CheckMove\n"));
if (pDeviceCapabilitiesPage != NULL )
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : checking if move from %d to %d is legal\n", from->address, to->address);
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : checking if move from %d to %d is legal\n"), from->address, to->address);
switch (from->type)
{
case CHANGER:
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : MT2");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : MT2"));
switch (to->type)
{
case CHANGER:
if (pDeviceCapabilitiesPage->MT2MT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "MT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("MT\n"));
moveok = 1;
}
break;
case STORAGE:
if (pDeviceCapabilitiesPage->MT2ST == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "ST\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("ST\n"));
moveok = 1;
}
break;
case IMPORT:
if (pDeviceCapabilitiesPage->MT2IE == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "IE\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("IE\n"));
moveok = 1;
}
break;
case TAPETYPE:
if (pDeviceCapabilitiesPage->MT2DT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "DT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("DT\n"));
moveok = 1;
}
break;
}
break;
case STORAGE:
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : ST2");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : ST2"));
switch (to->type)
{
case CHANGER:
if (pDeviceCapabilitiesPage->ST2MT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "MT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("MT\n"));
moveok = 1;
}
break;
case STORAGE:
if (pDeviceCapabilitiesPage->ST2ST == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "ST\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("ST\n"));
moveok = 1;
}
break;
case IMPORT:
if (pDeviceCapabilitiesPage->ST2IE == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "IE\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("IE\n"));
moveok = 1;
}
break;
case TAPETYPE:
if (pDeviceCapabilitiesPage->ST2DT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "DT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("DT\n"));
moveok = 1;
}
break;
}
break;
case IMPORT:
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : IE2");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : IE2"));
switch (to->type)
{
case CHANGER:
if (pDeviceCapabilitiesPage->IE2MT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "MT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("MT\n"));
moveok = 1;
}
break;
case STORAGE:
if (pDeviceCapabilitiesPage->IE2ST == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "ST\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("ST\n"));
moveok = 1;
}
break;
case IMPORT:
if (pDeviceCapabilitiesPage->IE2IE == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "IE\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("IE\n"));
moveok = 1;
}
break;
case TAPETYPE:
if (pDeviceCapabilitiesPage->IE2DT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "DT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("DT\n"));
moveok = 1;
}
break;
}
break;
case TAPETYPE:
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : DT2");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : DT2"));
switch (to->type)
{
case CHANGER:
if (pDeviceCapabilitiesPage->DT2MT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "MT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("MT\n"));
moveok = 1;
}
break;
case STORAGE:
if (pDeviceCapabilitiesPage->DT2ST == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "ST\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("ST\n"));
moveok = 1;
}
break;
case IMPORT:
if (pDeviceCapabilitiesPage->DT2IE == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "IE\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("IE\n"));
moveok = 1;
}
break;
case TAPETYPE:
if (pDeviceCapabilitiesPage->DT2DT == 1)
{
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "DT\n");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("DT\n"));
moveok = 1;
}
break;
break;
}
} else {
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "CheckMove : pDeviceCapabilitiesPage == NULL");
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("CheckMove : pDeviceCapabilitiesPage == NULL"));
/*
- ChgExit("CheckMove", "DeviceCapabilitiesPage == NULL", FATAL);
+ ChgExit("CheckMove", _("DeviceCapabilitiesPage == NULL"), FATAL);
*/
moveok=1;
}
-
- DebugPrint(DEBUG_INFO, SECTION_MOVE, "###### STOP CheckMove\n");
+
+ DebugPrint(DEBUG_INFO, SECTION_MOVE, _("###### STOP CheckMove\n"));
return(moveok);
}
/*
*/
-
-int GetCurrentSlot(int fd, int drive)
+
+int
+GetCurrentSlot(
+ int fd,
+ int drive)
{
extern OpenFiles_T *pDev;
- int x;
- dbprintf(("##### START GetCurrentSlot\n"));
+ size_t x;
+ dbprintf(_("##### START GetCurrentSlot\n"));
+
+ (void)fd; /* Quiet unused parameter warning */
if (pDev[0].SCSI == 0)
{
- dbprintf(("GetCurrentSlot : can't send SCSI commands\n"));
+ dbprintf(_("GetCurrentSlot : can't send SCSI commands\n"));
return(-1);
+ /*NOTREACHED*/
}
if (ElementStatusValid == 0)
if (pDev[0].functions->function_status(0, 1) != 0)
{
return(-1);
+ /*NOTREACHED*/
}
- }
+ }
/* If the from address is the as the same as the tape address skip it */
if (pDTE[drive].from >= 0 && pDTE[drive].from != pDTE[drive].address)
{
if (pSTE[x].address == pDTE[drive].from)
return(x);
+ /*NOTREACHED*/
}
return(-1);
+ /*NOTREACHED*/
}
for (x = 0; x < STE;x++)
{
- if (pSTE[x].status == 'E')
- return(x);
+ if (pSTE[x].status == 'E') {
+ return(x);
+ /*NOTREACHED*/
+ }
}
/* Ups nothing loaded */
* If there are error conditions try to fix them
*
*/
-int GenericElementStatus(int DeviceFD, int InitStatus)
+int
+GenericElementStatus(
+ int DeviceFD,
+ int InitStatus)
{
int MTEError = 0;
int STEError = 0;
int IEEError = 0;
int DTEError = 0;
- int STEEmpty = 0;
extern OpenFiles_T *pDev;
- int error = 0; /* If set do an INIT ELEMENT STATUS */
- int x; /* The standard loop counter :-) */
- int loop = 2; /* Redo it if an error has been reset */
+ int error = 0; /* If set do an INIT ELEMENT STATUS */
+ size_t x; /* The standard loop counter :-) */
+ int retry = 2; /* Redo it if an error has been reset */
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "##### START GenericElementStatus\n");
+ (void)InitStatus; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START GenericElementStatus\n"));
if (pEAAPage == NULL)
{
*/
if (pModePage == NULL && LibModeSenseValid == 0)
{
- if ((pModePage = malloc(0xff)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
+ pModePage = alloc(0xff);
+
if (SCSI_ModeSense(DeviceFD, pModePage, 0xff, 0x8, 0x3f) == 0)
{
LibModeSenseValid = 1;
- DecodeModeSense(pModePage, 0, "GenericElementStatus :", 0, debug_file);
+ DecodeModeSense(pModePage, 0, _("GenericElementStatus :"), 0, debug_file);
} else {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GetElementStatus : failed SCSI_ModeSense\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("GetElementStatus : failed SCSI_ModeSense\n"));
LibModeSenseValid = -1;
}
}
}
-
- if (GetElementStatus(DeviceFD) == 0 && loop > 0)
+
+ while ((GetElementStatus(DeviceFD) == 0) && (retry-- > 0))
{
- loop--;
for (x = 0; x < MTE; x++)
{
if (pMTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (char *)&pMTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (RequestSense_T *)&pMTE[x]))
{
case SENSE_IES:
MTEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Abort on MTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Abort on MTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pIEE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (char *)&pIEE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (RequestSense_T *)&pIEE[x]))
{
case SENSE_IES:
IEEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Abort on IEE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Abort on IEE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
for (x = 0; x < STE; x++)
{
- /*
- * Needed for the hack to guess the tape status if an error
- * for the tape is pending
- */
- if (pSTE[x].status == 'E')
- {
- STEEmpty = 1;
- }
-
if (pSTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (char *)&pSTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (RequestSense_T *)&pSTE[x]))
{
case SENSE_IES:
STEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Abort on IES\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Abort on IES\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pDTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (char *)&pDTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (RequestSense_T *)&pDTE[x]))
{
case SENSE_IES:
DTEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Abort on DTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Abort on DTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
if (GenericResetStatus(DeviceFD) != 0)
{
ElementStatusValid = 0;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Can't init status STEError(%d) MTEError(%d) DTEError(%d) IEEError(%d)\n", STEError, MTEError, DTEError, IEEError);
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Can't init status STEError(%d) MTEError(%d) DTEError(%d) IEEError(%d)\n"), STEError, MTEError, DTEError, IEEError);
return(-1);
+ /*NOTREACHED*/
}
error = 0;
}
*/
if (pDTE[0].status == 'E')
{
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "GenericElementStatus : try to move tape to tape drive\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("GenericElementStatus : try to move tape to tape drive\n"));
pDev[DeviceFD].functions->function_move(DeviceFD, pDTE[0].address, pDTE[0].address);
}
}
if (error != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericElementStatus : Can't init status (after loop)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("GenericElementStatus : Can't init status (after loop)\n"));
return(-1);
+ /*NOTREACHED*/
}
ElementStatusValid = 1;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "#### STOP GenericElementStatus\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("#### STOP GenericElementStatus\n"));
return(0);
}
* This is for the ADIC changer, it seems that they have an diferent
* offset in the mode sense data before the first mode page (+12)
*/
-int DLT448ElementStatus(int DeviceFD, int InitStatus)
+int
+DLT448ElementStatus(
+ int DeviceFD,
+ int InitStatus)
{
- int MTEError = 0;
- int STEError = 0;
- int IEEError = 0;
int DTEError = 0;
- int STEEmpty = 0;
extern OpenFiles_T *pDev;
int error = 0; /* If set do an INIT ELEMENT STATUS */
- int x; /* The standard loop counter :-) */
+ size_t x; /* The standard loop counter :-) */
int loop = 2; /* Redo it if an error has been reset */
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "##### START DLT448ElementStatus\n");
+ (void)InitStatus; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START DLT448ElementStatus\n"));
if (pEAAPage == NULL)
{
*/
if (pModePage == NULL && LibModeSenseValid == 0)
{
- if ((pModePage = malloc(0xff)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"DLT448ElementStatus : malloc failed\n");
- return(-1);
- }
+ pModePage = alloc(0xff);
+
if (SCSI_ModeSense(DeviceFD, pModePage, 0xff, 0x8, 0x3f) == 0)
{
LibModeSenseValid = 1;
- DecodeModeSense(pModePage, 12, "DLT448ElementStatus :", 0, debug_file);
+ DecodeModeSense(pModePage, 12, _("DLT448ElementStatus :"), 0, debug_file);
} else {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"DLT448ElementStatus : failed SCSI_ModeSense\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("DLT448ElementStatus : failed SCSI_ModeSense\n"));
LibModeSenseValid = -1;
}
}
}
-
- if (GetElementStatus(DeviceFD) == 0 && loop > 0)
+
+ while (GetElementStatus(DeviceFD) == 0 && loop-- > 0)
{
- loop--;
for (x = 0; x < MTE; x++)
{
if (pMTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (char *)&pMTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (RequestSense_T *)&pMTE[x]))
{
case SENSE_IES:
- MTEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Abort on MTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Abort on MTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pIEE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (char *)&pIEE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (RequestSense_T *)&pIEE[x]))
{
case SENSE_IES:
- IEEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Abort on IEE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Abort on IEE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
* Needed for the hack to guess the tape status if an error
* for the tape is pending
*/
- if (pSTE[x].status == 'E')
- {
- STEEmpty = 1;
- }
-
if (pSTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (char *)&pSTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (RequestSense_T *)&pSTE[x]))
{
case SENSE_IES:
- STEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Abort on IES\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Abort on IES\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pDTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (char *)&pDTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (RequestSense_T *)&pDTE[x]))
{
case SENSE_IES:
DTEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Abort on DTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Abort on DTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
if (GenericResetStatus(DeviceFD) != 0)
{
ElementStatusValid = 0;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Can't init status\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Can't init status\n"));
return(-1);
+ /*NOTREACHED*/
}
error = 0;
}
*/
if (pDTE[0].status == 'E')
{
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "DLT448ElementStatus : try to move tape to tape drive\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("DLT448ElementStatus : try to move tape to tape drive\n"));
pDev[DeviceFD].functions->function_move(DeviceFD, pDTE[0].address, pDTE[0].address);
}
}
if (error != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "DLT448ElementStatus : Can't init status (after loop)\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("DLT448ElementStatus : Can't init status (after loop)\n"));
return(-1);
+ /*NOTREACHED*/
}
ElementStatusValid = 1;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "#### STOP DLT448ElementStatus\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("#### STOP DLT448ElementStatus\n"));
return(0);
}
-/*
+/*
* Much the same like GenericElementStatus but
* it seemes that for the STE Elements ASC/ASCQ is not set
* on an error, only the except bit is set
*/
-int SDXElementStatus(int DeviceFD, int InitStatus)
+int
+SDXElementStatus(
+ int DeviceFD,
+ int InitStatus)
{
- int MTEError = 0;
- int STEError = 0;
- int IEEError = 0;
- int DTEError = 0;
-
int error = 0; /* If set do an INIT ELEMENT STATUS */
- int x; /* The standard loop counter :-) */
+ size_t x; /* The standard loop counter :-) */
int loop = 2; /* Redo it if an error has been reset */
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "##### START SDXElementStatus\n");
+ (void)InitStatus; /* Quiet unused parameter warning */
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START SDXElementStatus\n"));
if (pEAAPage == NULL)
{
*/
if (pModePage == NULL && LibModeSenseValid == 0)
{
- if ((pModePage = malloc(0xff)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"SDXElementStatus : malloc failed\n");
- return(-1);
- }
+ pModePage = alloc(0xff);
+
if (SCSI_ModeSense(DeviceFD, pModePage, 0xff, 0x8, 0x3f) == 0)
{
LibModeSenseValid = 1;
- DecodeModeSense(pModePage, 0, "SDXElementStatus :", 0, debug_file);
+ DecodeModeSense(pModePage, 0, _("SDXElementStatus :"), 0, debug_file);
} else {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"SDXElementStatus : failed SCSI_ModeSense\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("SDXElementStatus : failed SCSI_ModeSense\n"));
LibModeSenseValid = -1;
}
}
}
- if (GetElementStatus(DeviceFD) == 0 && loop)
+ while (GetElementStatus(DeviceFD) == 0 && loop--)
{
- loop--;
error = 0;
for (x = 0; x < MTE; x++)
{
if (pMTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (char *)&pMTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pMTE[x].ASC, pMTE[x].ASCQ, (RequestSense_T *)&pMTE[x]))
{
case SENSE_IES:
- MTEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Abort on MTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Abort on MTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pIEE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (char *)&pIEE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pIEE[x].ASC, pIEE[x].ASCQ, (RequestSense_T *)&pIEE[x]))
{
case SENSE_IES:
- IEEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Abort on IEE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Abort on IEE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
for (x = 0; x < STE; x++)
{
- if (pSTE[x].except != 0)
- {
- STEError = 1;
- }
-
if (pSTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (char *)&pSTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pSTE[x].ASC, pSTE[x].ASCQ, (RequestSense_T *)&pSTE[x]))
{
case SENSE_IES:
- STEError = 1;
error = 1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Abort on IES\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Abort on IES\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
{
if (pDTE[x].ASC > 0)
{
- switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (char *)&pDTE[x]))
+ switch(SenseHandler(DeviceFD, 0, SENSE_CHG_ELEMENT_STATUS, pDTE[x].ASC, pDTE[x].ASCQ, (RequestSense_T *)&pDTE[x]))
{
case SENSE_IES:
- DTEError = 1;
/*
error = 1;
*/
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Abort on DTE\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Abort on DTE\n"));
return(-1);
- break;
+ /*NOTREACHED*/
}
}
}
if (GenericResetStatus(DeviceFD) != 0)
{
ElementStatusValid = 0;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Can't init status\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Can't init status\n"));
return(-1);
+ /*NOTREACHED*/
}
}
if (error != 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "SDXElementStatus : Can't init status\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("SDXElementStatus : Can't init status\n"));
return(-1);
+ /*NOTREACHED*/
}
ElementStatusValid = 1;
TapeStatus();
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "#### STOP SDXElementStatus\n");
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, _("#### STOP SDXElementStatus\n"));
return(0);
}
* Only do the read, error handling is done by the calling function
*
* Return Values:
- * < 0 -> Error
+ * < 0 -> Error
* == 0 -> OK
*
* TODO:
*/
-int GetElementStatus(int DeviceFD)
+int
+GetElementStatus(
+ int DeviceFD)
{
- unsigned char *DataBuffer = NULL;
- int DataBufferLength;
+ u_char *DataBuffer = NULL;
+ size_t DataBufferLength;
ElementStatusData_T *ElementStatusData;
ElementStatusPage_T *ElementStatusPage;
MediumTransportElementDescriptor_T *MediumTransportElementDescriptor;
StorageElementDescriptor_T *StorageElementDescriptor;
DataTransferElementDescriptor_T *DataTransferElementDescriptor;
ImportExportElementDescriptor_T *ImportExportElementDescriptor;
- int x = 0;
- int offset = 0;
- int length = 0; /* Length of an Element */
- int barcode = 0; /* To store the result of the BarCode function */
- int NoOfElements;
-
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"##### START GetElementStatus\n");
-
+ size_t x;
+ size_t offset;
+ size_t length; /* Length of an Element */
+ size_t NoOfElements;
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("##### START GetElementStatus\n"));
+
barcode = BarCode(DeviceFD);
- /*
- * If the MODE_SENSE was successfull we use this Information to read the Elelement Info
+ /*
+ * If the MODE_SENSE was successfull we use this Information to read the Elelement Info
*/
if (pEAAPage != NULL)
{
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Reading Element Status with the info from mode sense\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Reading Element Status with the info from mode sense\n"));
/* First the Medim Transport*/
if (V2(pEAAPage->NoMediumTransportElements) > 0)
{
MTE = V2(pEAAPage->NoMediumTransportElements) ;
- if (pMTE == NULL)
- {
- if ((pMTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * MTE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- }
- memset(pMTE, 0, sizeof(ElementInfo_T) * MTE);
-
- if (SCSI_ReadElementStatus(DeviceFD,
- CHANGER,
+ pMTE = alloc(SIZEOF(ElementInfo_T) * MTE);
+ memset(pMTE, 0, SIZEOF(ElementInfo_T) * MTE);
+
+ if (SCSI_ReadElementStatus(DeviceFD,
+ CHANGER,
0,
- barcode,
+ (u_char)barcode,
V2(pEAAPage->MediumTransportElementAddress),
- MTE+1,
- sizeof(MediumTransportElementDescriptor_T),
- (char **)&DataBuffer) != 0)
+ (MTE + (size_t)1),
+ SIZEOF(MediumTransportElementDescriptor_T),
+ &DataBuffer) != 0)
{
- if (DataBuffer != 0)
- {
- free(DataBuffer);
- }
- ChgExit("genericElementStatus","Can't read MTE status", FATAL);
+ ChgExit("genericElementStatus",_("Can't read MTE status"), FATAL);
+ /*NOTREACHED*/
}
- ElementStatusData = (ElementStatusData_T *)DataBuffer;
- offset = sizeof(ElementStatusData_T);
-
+ // ElementStatusData = (ElementStatusData_T *)DataBuffer;
+ offset = SIZEOF(ElementStatusData_T);
+
ElementStatusPage = (ElementStatusPage_T *)&DataBuffer[offset];
- offset = offset + sizeof(ElementStatusPage_T);
+ offset = offset + SIZEOF(ElementStatusPage_T);
length = V2(ElementStatusPage->length);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"MTE Length %d(%d)\n",length,sizeof(MediumTransportElementDescriptor_T));
-
+
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("MTE Length %d(%d)\n"), length,
+ SIZEOF(MediumTransportElementDescriptor_T));
+
for (x = 0; x < MTE; x++)
{
MediumTransportElementDescriptor = (MediumTransportElementDescriptor_T *)&DataBuffer[offset];
-
+
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pMTE[x].VolTag,
- MediumTransportElementDescriptor->pvoltag,
+ strncpy((char *)pMTE[x].VolTag,
+ (char *)MediumTransportElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pMTE[x].VolTag, TAG_SIZE+1);
}
-
+
pMTE[x].type = ElementStatusPage->type;
pMTE[x].address = V2(MediumTransportElementDescriptor->address);
pMTE[x].except = MediumTransportElementDescriptor->except;
- pMTE[x].status = (MediumTransportElementDescriptor->full > 0) ? 'F':'E';
pMTE[x].full = MediumTransportElementDescriptor->full;
-
+ if (MediumTransportElementDescriptor->full > 0)
+ {
+ pMTE[x].status = 'F';
+ } else {
+ pMTE[x].status = 'E';
+ }
+
if (length >= 5)
{
pMTE[x].ASC = MediumTransportElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC MTE\n"));
}
-
+
if (length >= 6)
{
pMTE[x].ASCQ = MediumTransportElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ MTE\n"));
}
-
+
if (length >= 0xa)
{
if (MediumTransportElementDescriptor->svalid == 1)
pMTE[x].from = -1;
}
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source MTE\n"));
}
- offset = offset + length;
+ offset = offset + length;
}
+ free(DataBuffer);
+ DataBuffer = NULL;
}
- /*
- * Storage Elements
+ /*
+ * Storage Elements
*/
if ( V2(pEAAPage->NoStorageElements) > 0)
{
+ free(pSTE);
STE = V2(pEAAPage->NoStorageElements);
- if (pSTE == NULL)
- {
- if ((pSTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * STE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- }
- memset(pSTE, 0, sizeof(ElementInfo_T) * STE);
-
- if (SCSI_ReadElementStatus(DeviceFD,
- STORAGE,
+ pSTE = alloc(SIZEOF(ElementInfo_T) * STE);
+ memset(pSTE, 0, SIZEOF(ElementInfo_T) * STE);
+
+ if (SCSI_ReadElementStatus(DeviceFD,
+ STORAGE,
0,
- barcode,
+ (u_char)barcode,
V2(pEAAPage->FirstStorageElementAddress),
STE,
- sizeof(StorageElementDescriptor_T),
- (char **)&DataBuffer) != 0)
+ SIZEOF(StorageElementDescriptor_T),
+ &DataBuffer) != 0)
{
- if (DataBuffer != 0)
- {
- free(DataBuffer);
- }
- ChgExit("GetElementStatus", "Can't read STE status", FATAL);
+ ChgExit("GetElementStatus", _("Can't read STE status"), FATAL);
+ /*NOTREACHED*/
}
-
- ElementStatusData = (ElementStatusData_T *)DataBuffer;
- offset = sizeof(ElementStatusData_T);
-
+ assert(DataBuffer != NULL);
+
+ // ElementStatusData = (ElementStatusData_T *)DataBuffer;
+ offset = SIZEOF(ElementStatusData_T);
+
ElementStatusPage = (ElementStatusPage_T *)&DataBuffer[offset];
- offset = offset + sizeof(ElementStatusPage_T);
+ offset = offset + SIZEOF(ElementStatusPage_T);
length = V2(ElementStatusPage->length);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"STE Length %d\n",length);
-
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("STE Length %d\n"),length);
+
for (x = 0; x < STE; x++)
{
StorageElementDescriptor = (StorageElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pSTE[x].VolTag,
- StorageElementDescriptor->pvoltag,
+ strncpy(pSTE[x].VolTag,
+ (char *)StorageElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pSTE[x].VolTag, TAG_SIZE+1);
}
-
-
+
+
pSTE[x].type = ElementStatusPage->type;
pSTE[x].address = V2(StorageElementDescriptor->address);
pSTE[x].except = StorageElementDescriptor->except;
- pSTE[x].status = (StorageElementDescriptor->full > 0) ? 'F':'E';
pSTE[x].full = StorageElementDescriptor->full;
-
+ if (StorageElementDescriptor->full > 0)
+ {
+ pSTE[x].status = 'F';
+ } else {
+ pSTE[x].status = 'E';
+ }
+
if (length >= 5)
{
pSTE[x].ASC = StorageElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC STE\n"));
}
-
+
if (length >= 6)
{
pSTE[x].ASCQ = StorageElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ STE\n"));
}
-
+
if (length >= 0xa)
{
if (StorageElementDescriptor->svalid == 1)
pSTE[x].from = V2(StorageElementDescriptor->source);
} else {
pSTE[x].from = -1;
- }
+ }
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source STE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
-
+ free(DataBuffer);
+ DataBuffer = NULL;
}
- /*
+ /*
* Import/Export Elements
*/
if ( V2(pEAAPage->NoImportExportElements) > 0)
{
+ free(pIEE);
IEE = V2(pEAAPage->NoImportExportElements);
- if (pIEE == NULL)
- {
- if ((pIEE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * IEE)) == NULL)
- {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- }
- memset(pIEE, 0, sizeof(ElementInfo_T) * IEE);
- if (SCSI_ReadElementStatus(DeviceFD,
- IMPORT,
+ pIEE = alloc(SIZEOF(ElementInfo_T) * IEE);
+ memset(pIEE, 0, SIZEOF(ElementInfo_T) * IEE);
+
+ if (SCSI_ReadElementStatus(DeviceFD,
+ IMPORT,
0,
- barcode,
+ (u_char)barcode,
V2(pEAAPage->FirstImportExportElementAddress),
IEE,
- sizeof(ImportExportElementDescriptor_T),
- (char **)&DataBuffer) != 0)
+ SIZEOF(ImportExportElementDescriptor_T),
+ &DataBuffer) != 0)
{
- if (DataBuffer != 0)
- {
- free(DataBuffer);
- }
- ChgExit("GetElementStatus", "Can't read IEE status", FATAL);
+ ChgExit("GetElementStatus", _("Can't read IEE status"), FATAL);
+ /*NOTREACHED*/
}
-
- ElementStatusData = (ElementStatusData_T *)DataBuffer;
- offset = sizeof(ElementStatusData_T);
-
+ assert(DataBuffer != NULL);
+
+ // ElementStatusData = (ElementStatusData_T *)DataBuffer;
+ offset = SIZEOF(ElementStatusData_T);
+
ElementStatusPage = (ElementStatusPage_T *)&DataBuffer[offset];
- offset = offset + sizeof(ElementStatusPage_T);
+ offset = offset + SIZEOF(ElementStatusPage_T);
length = V2(ElementStatusPage->length);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"IEE Length %d\n",length);
-
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("IEE Length %d\n"),length);
+
for (x = 0; x < IEE; x++)
{
ImportExportElementDescriptor = (ImportExportElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pIEE[x].VolTag,
- ImportExportElementDescriptor->pvoltag,
+ strncpy(pIEE[x].VolTag,
+ (char *)ImportExportElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pIEE[x].VolTag, TAG_SIZE+1);
}
pIEE[x].type = ElementStatusPage->type;
pIEE[x].address = V2(ImportExportElementDescriptor->address);
pIEE[x].except = ImportExportElementDescriptor->except;
- pIEE[x].status = (ImportExportElementDescriptor->full > 0) ? 'F':'E';
pIEE[x].full = ImportExportElementDescriptor->full;
-
+ if (ImportExportElementDescriptor->full > 0)
+ {
+ pIEE[x].status = 'F';
+ } else {
+ pIEE[x].status = 'E';
+ }
+
if (length >= 5)
{
pIEE[x].ASC = ImportExportElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC IEE\n"));
}
-
+
if (length >= 6)
{
pIEE[x].ASCQ = ImportExportElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ IEE\n"));
}
-
+
if (length >= 0xa)
{
if (ImportExportElementDescriptor->svalid == 1)
pIEE[x].from = V2(ImportExportElementDescriptor->source);
} else {
pIEE[x].from = -1;
- }
+ }
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source IEE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
-
+ free(DataBuffer);
+ DataBuffer = NULL;
}
- /*
+ /*
* Data Transfer Elements
*/
if (V2(pEAAPage->NoDataTransferElements) >0)
{
+ free(pDTE);
DTE = V2(pEAAPage->NoDataTransferElements) ;
- if (pDTE == NULL)
- {
- if ((pDTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * DTE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- }
- memset(pDTE, 0, sizeof(ElementInfo_T) * DTE);
- if (SCSI_ReadElementStatus(DeviceFD,
- TAPETYPE,
+ pDTE = alloc(SIZEOF(ElementInfo_T) * DTE);
+ memset(pDTE, 0, SIZEOF(ElementInfo_T) * DTE);
+
+ if (SCSI_ReadElementStatus(DeviceFD,
+ TAPETYPE,
0,
- barcode,
+ (u_char)barcode,
V2(pEAAPage->FirstDataTransferElementAddress),
DTE,
- sizeof(DataTransferElementDescriptor_T),
- (char **)&DataBuffer) != 0)
+ SIZEOF(DataTransferElementDescriptor_T),
+ &DataBuffer) != 0)
{
- if (DataBuffer != 0)
- {
- free(DataBuffer);
- }
- ChgExit("GenericElementStatus", "Can't read DTE status", FATAL);
+ ChgExit("GenericElementStatus", _("Can't read DTE status"), FATAL);
+ /*NOTREACHED*/
}
-
- ElementStatusData = (ElementStatusData_T *)DataBuffer;
- offset = sizeof(ElementStatusData_T);
-
+ assert(DataBuffer != NULL);
+
+ // ElementStatusData = (ElementStatusData_T *)DataBuffer;
+ offset = SIZEOF(ElementStatusData_T);
+
ElementStatusPage = (ElementStatusPage_T *)&DataBuffer[offset];
- offset = offset + sizeof(ElementStatusPage_T);
+ offset = offset + SIZEOF(ElementStatusPage_T);
length = V2(ElementStatusPage->length);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"DTE Length %d\n",length);
-
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("DTE Length %d\n"),length);
+
for (x = 0; x < DTE; x++)
{
DataTransferElementDescriptor = (DataTransferElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pDTE[x].VolTag,
- DataTransferElementDescriptor->pvoltag,
+ strncpy(pDTE[x].VolTag,
+ (char *)DataTransferElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pDTE[x].VolTag, TAG_SIZE+1);
}
pDTE[x].address = V2(DataTransferElementDescriptor->address);
pDTE[x].except = DataTransferElementDescriptor->except;
pDTE[x].scsi = DataTransferElementDescriptor->scsi;
- pDTE[x].status = (DataTransferElementDescriptor->full > 0) ? 'F':'E';
pDTE[x].full = DataTransferElementDescriptor->full;
-
+ if (DataTransferElementDescriptor->full > 0)
+ {
+ pDTE[x].status = 'F';
+ } else {
+ pDTE[x].status = 'E';
+ }
+
if (length >= 5)
{
pDTE[x].ASC = DataTransferElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC DTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC DTE\n"));
}
-
+
if (length >= 6)
{
pDTE[x].ASCQ = DataTransferElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ DTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ DTE\n"));
}
-
+
if (length >= 0xa)
{
if (DataTransferElementDescriptor->svalid == 1)
pDTE[x].from = -1;
}
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source STE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
+ free(DataBuffer);
+ DataBuffer = NULL;
}
} else {
/*
* And now the old way, when we get here the read mode sense page has failed ...
*/
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Reading Element Status the old way .... (max 255 elements)\n");
- if (SCSI_ReadElementStatus(DeviceFD,
- 0,
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Reading Element Status the old way .... (max 255 elements)\n"));
+ if (SCSI_ReadElementStatus(DeviceFD,
+ 0,
0,
- barcode,
+ (u_char)barcode,
0,
- 0xff,
- 0x7f,
- (char **)&DataBuffer) != 0)
+ (size_t)0xff,
+ (size_t)0x7f,
+ &DataBuffer) != 0)
{
- if (DataBuffer != 0)
- {
- free(DataBuffer);
- }
- ChgExit("GenericElementStatus","Can't get ElementStatus", FATAL);
+ ChgExit("GenericElementStatus",_("Can't get ElementStatus"), FATAL);
+ /*NOTREACHED*/
}
-
+ assert(DataBuffer != NULL);
+
ElementStatusData = (ElementStatusData_T *)DataBuffer;
DataBufferLength = V3(ElementStatusData->count);
-
- offset = sizeof(ElementStatusData_T);
-
- if (DataBufferLength <= 0)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"DataBufferLength %d\n",DataBufferLength);
- return(1);
- }
-
- while (offset < DataBufferLength)
+
+ offset = SIZEOF(ElementStatusData_T);
+
+ while (offset < DataBufferLength)
{
ElementStatusPage = (ElementStatusPage_T *)&DataBuffer[offset];
NoOfElements = V3(ElementStatusPage->count) / V2(ElementStatusPage->length);
- offset = offset + sizeof(ElementStatusPage_T);
+ offset = offset + SIZEOF(ElementStatusPage_T);
length = V2(ElementStatusPage->length);
-
+
switch (ElementStatusPage->type)
{
case CHANGER:
+ free(pMTE);
MTE = NoOfElements;
- if ((pMTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * MTE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- memset(pMTE, 0, sizeof(ElementInfo_T) * MTE);
+ pMTE = alloc(SIZEOF(ElementInfo_T) * MTE);
+ memset(pMTE, 0, SIZEOF(ElementInfo_T) * MTE);
+
for (x = 0; x < NoOfElements; x++)
- {
+ {
MediumTransportElementDescriptor = (MediumTransportElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pMTE[x].VolTag,
- MediumTransportElementDescriptor->pvoltag,
+ strncpy(pMTE[x].VolTag,
+ (char *)MediumTransportElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pMTE[x].VolTag, TAG_SIZE+1);
}
pMTE[x].type = ElementStatusPage->type;
pMTE[x].address = V2(MediumTransportElementDescriptor->address);
pMTE[x].except = MediumTransportElementDescriptor->except;
- pMTE[x].status = (MediumTransportElementDescriptor->full > 0) ? 'F':'E';
pMTE[x].full = MediumTransportElementDescriptor->full;
-
-
+ if (MediumTransportElementDescriptor->full > 0)
+ {
+ pMTE[x].status = 'F';
+ } else {
+ pMTE[x].status = 'E';
+ }
+
if (length >= 5)
{
pMTE[x].ASC = MediumTransportElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC MTE\n"));
}
-
+
if (length >= 6)
{
pMTE[x].ASCQ = MediumTransportElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ MTE\n"));
}
-
+
if (length >= 0xa)
{
if (MediumTransportElementDescriptor->svalid == 1)
pMTE[x].from = V2(MediumTransportElementDescriptor->source);
} else {
pMTE[x].from = -1;
- }
+ }
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source MTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source MTE\n"));
}
- offset = offset + length;
+ offset = offset + length;
}
break;
case STORAGE:
+ free(pSTE);
STE = NoOfElements;
- if ((pSTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * STE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- memset(pSTE, 0, sizeof(ElementInfo_T) * STE);
+ pSTE = alloc(SIZEOF(ElementInfo_T) * STE);
+ memset(pSTE, 0, SIZEOF(ElementInfo_T) * STE);
+
for (x = 0; x < NoOfElements; x++)
{
StorageElementDescriptor = (StorageElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pSTE[x].VolTag,
- StorageElementDescriptor->pvoltag,
+ strncpy(pSTE[x].VolTag,
+ (char *)StorageElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pSTE[x].VolTag, TAG_SIZE+1);
}
-
+
pSTE[x].type = ElementStatusPage->type;
pSTE[x].address = V2(StorageElementDescriptor->address);
pSTE[x].except = StorageElementDescriptor->except;
- pSTE[x].status = (StorageElementDescriptor->full > 0) ? 'F':'E';
pSTE[x].full = StorageElementDescriptor->full;
+ if (StorageElementDescriptor->full > 0)
+ {
+ pSTE[x].status = 'F';
+ } else {
+ pSTE[x].status = 'E';
+ }
if (length >= 5)
{
pSTE[x].ASC = StorageElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC STE\n"));
}
-
+
if (length >= 6)
{
pSTE[x].ASCQ = StorageElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ STE\n"));
}
-
+
if (length >= 0xa)
{
if (StorageElementDescriptor->svalid == 1)
pSTE[x].from = V2(StorageElementDescriptor->source);
} else {
pSTE[x].from = -1;
- }
+ }
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source STE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
break;
case IMPORT:
+ free(pIEE);
IEE = NoOfElements;
- if ((pIEE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * IEE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- memset(pIEE, 0, sizeof(ElementInfo_T) * IEE);
-
+ pIEE = alloc(SIZEOF(ElementInfo_T) * IEE);
+ memset(pIEE, 0, SIZEOF(ElementInfo_T) * IEE);
+
for (x = 0; x < NoOfElements; x++)
{
ImportExportElementDescriptor = (ImportExportElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pIEE[x].VolTag,
- ImportExportElementDescriptor->pvoltag,
+ strncpy(pIEE[x].VolTag,
+ (char *)ImportExportElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pIEE[x].VolTag, TAG_SIZE+1);
}
pIEE[x].type = ElementStatusPage->type;
pIEE[x].address = V2(ImportExportElementDescriptor->address);
pIEE[x].except = ImportExportElementDescriptor->except;
- pIEE[x].status = (ImportExportElementDescriptor->full > 0) ? 'F':'E';
pIEE[x].full = ImportExportElementDescriptor->full;
-
+ if (ImportExportElementDescriptor->full > 0)
+ {
+ pIEE[x].status = 'F';
+ } else {
+ pIEE[x].status = 'E';
+ }
+
if (length >= 5)
{
pIEE[x].ASC = ImportExportElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC IEE\n"));
}
-
+
if (length >= 6)
{
pIEE[x].ASCQ = ImportExportElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ IEE\n"));
}
-
+
if (length >= 0xa)
{
if (ImportExportElementDescriptor->svalid == 1)
pIEE[x].from = V2(ImportExportElementDescriptor->source);
} else {
pIEE[x].from = -1;
- }
+ }
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source IEE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source IEE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
break;
case TAPETYPE:
+ free(pDTE);
DTE = NoOfElements;
- if ((pDTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * DTE)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
- return(-1);
- }
- memset(pDTE, 0, sizeof(ElementInfo_T) * DTE);
-
+ pDTE = alloc(SIZEOF(ElementInfo_T) * DTE);
+ memset(pDTE, 0, SIZEOF(ElementInfo_T) * DTE);
+
for (x = 0; x < NoOfElements; x++)
{
DataTransferElementDescriptor = (DataTransferElementDescriptor_T *)&DataBuffer[offset];
if (ElementStatusPage->pvoltag == 1)
{
- strncpy(pSTE[x].VolTag,
- DataTransferElementDescriptor->pvoltag,
+ strncpy(pSTE[x].VolTag,
+ (char *)DataTransferElementDescriptor->pvoltag,
TAG_SIZE);
TerminateString(pSTE[x].VolTag, TAG_SIZE+1);
}
pDTE[x].address = V2(DataTransferElementDescriptor->address);
pDTE[x].except = DataTransferElementDescriptor->except;
pDTE[x].scsi = DataTransferElementDescriptor->scsi;
- pDTE[x].status = (DataTransferElementDescriptor->full > 0) ? 'F':'E';
pDTE[x].full = DataTransferElementDescriptor->full;
+ if (DataTransferElementDescriptor->full > 0)
+ {
+ pDTE[x].status = 'F';
+ } else {
+ pDTE[x].status = 'E';
+ }
if (length >= 5)
{
pDTE[x].ASC = DataTransferElementDescriptor->asc;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASC DTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASC DTE\n"));
}
-
+
if (length >= 6)
{
pDTE[x].ASCQ = DataTransferElementDescriptor->ascq;
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip ASCQ DTE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip ASCQ DTE\n"));
}
-
+
if (length >= 0xa)
{
if (DataTransferElementDescriptor->svalid == 1)
pDTE[x].from = -1;
}
} else {
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"Skip source STE\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("Skip source STE\n"));
}
-
- offset = offset + length;
+
+ offset = offset + length;
}
break;
default:
- offset = offset + length;
- DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GetElementStatus : UnGknown Type %d\n",ElementStatusPage->type);
+ offset = offset + length;
+ DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,_("GetElementStatus : UnGknown Type %d\n"),ElementStatusPage->type);
break;
}
}
+ free(DataBuffer);
}
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\n\n\tMedia Transport Elements (robot arms) :\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\n\n\tMedia Transport Elements (robot arms) :\n"));
for ( x = 0; x < MTE; x++)
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\t\tElement #%04d %c\n\t\t\tEXCEPT = %02x\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n",
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\t\tElement #%04d %c\n\t\t\tEXCEPT = %02x\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n"),
pMTE[x].address, pMTE[x].status, pMTE[x].except, pMTE[x].ASC,
pMTE[x].ASCQ, pMTE[x].type, pMTE[x].from, pMTE[x].VolTag);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\n\n\tStorage Elements (Media slots) :\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\n\n\tStorage Elements (Media slots) :\n"));
for ( x = 0; x < STE; x++)
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n",
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n"),
pSTE[x].address, pSTE[x].status, pSTE[x].except, pSTE[x].ASC,
pSTE[x].ASCQ, pSTE[x].type, pSTE[x].from, pSTE[x].VolTag);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\n\n\tData Transfer Elements (tape drives) :\n");
-
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\n\n\tData Transfer Elements (tape drives) :\n"));
+
for ( x = 0; x < DTE; x++)
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n\t\t\tSCSI ADDRESS = %d\n",
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n\t\t\tSCSI ADDRESS = %d\n"),
pDTE[x].address, pDTE[x].status, pDTE[x].except, pDTE[x].ASC,
pDTE[x].ASCQ, pDTE[x].type, pDTE[x].from, pDTE[x].VolTag,pDTE[x].scsi);
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\n\n\tImport/Export Elements :\n");
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\n\n\tImport/Export Elements :\n"));
for ( x = 0; x < IEE; x++)
- DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n",
+ DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("\t\tElement #%04d %c\n\t\t\tEXCEPT = %02X\n\t\t\t\tASC = %02X ASCQ = %02X\n\t\t\tType %d From = %04d\n\t\t\tTAG = %s\n"),
pIEE[x].address, pIEE[x].status, pIEE[x].except, pIEE[x].ASC,
pIEE[x].ASCQ, pIEE[x].type, pIEE[x].from, pIEE[x].VolTag);
- free(DataBuffer);
return(0);
}
*
* TODO
*/
-int RequestSense(int DeviceFD, ExtendedRequestSense_T *ExtendedRequestSense, int ClearErrorCounters )
+int
+RequestSense(
+ int DeviceFD,
+ ExtendedRequestSense_T * ExtendedRequestSense,
+ int ClearErrorCounters)
{
CDB_T CDB;
int ret;
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START RequestSense\n");
-
- CDB[0] = SC_COM_REQUEST_SENSE; /* REQUEST SENSE */
- CDB[1] = 0; /* Logical Unit Number = 0, Reserved */
- CDB[2] = 0; /* Reserved */
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START RequestSense\n"));
+
+ CDB[0] = SC_COM_REQUEST_SENSE; /* REQUEST SENSE */
+ CDB[1] = 0; /* Logical Unit Number = 0, Reserved */
+ CDB[2] = 0; /* Reserved */
CDB[3] = 0; /* Reserved */
- CDB[4] = sizeof(ExtendedRequestSense_T); /* Allocation Length */
- CDB[5] = (ClearErrorCounters << 7) & 0x80; /* */
-
- memset(ExtendedRequestSense, 0, sizeof(ExtendedRequestSense_T));
-
- ret = SCSI_Run(DeviceFD, Input, CDB, 6,
+ CDB[4] = (u_char)sizeof(ExtendedRequestSense_T); /* Allocation Length */
+ CDB[5] = (u_char)((ClearErrorCounters << 7) & 0x80); /* */
+
+ memset(ExtendedRequestSense, 0, SIZEOF(ExtendedRequestSense_T));
+
+ ret = SCSI_Run(DeviceFD, Input, CDB, 6,
(char *) ExtendedRequestSense,
- sizeof(ExtendedRequestSense_T),
- (char *) ExtendedRequestSense, sizeof(ExtendedRequestSense_T));
-
-
+ SIZEOF(ExtendedRequestSense_T),
+ (RequestSense_T *) ExtendedRequestSense,
+ SIZEOF(ExtendedRequestSense_T));
+
+
if (ret < 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP RequestSense (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP RequestSense (%d)\n"),ret);
return(ret);
+ /*NOTREACHED*/
}
-
+
if ( ret > 0)
{
DecodeExtSense(ExtendedRequestSense, "RequestSense : ",debug_file);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP RequestSense (%d)\n", ExtendedRequestSense->SenseKey);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP RequestSense (%d)\n"), ExtendedRequestSense->SenseKey);
return(ExtendedRequestSense->SenseKey);
+ /*NOTREACHED*/
}
-
- dump_hex((char *)ExtendedRequestSense , sizeof(ExtendedRequestSense_T) , DEBUG_INFO, SECTION_SCSI);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP RequestSense (0)\n");
+
+ dump_hex((u_char *)ExtendedRequestSense ,
+ SIZEOF(ExtendedRequestSense_T),
+ DEBUG_INFO, SECTION_SCSI);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP RequestSense (0)\n"));
return(0);
}
*/
-ElementInfo_T *LookupElement(int address)
+ElementInfo_T *
+LookupElement(
+ int address)
{
- int x;
+ size_t x;
- dbprintf(("##### START LookupElement\n"));
+ dbprintf(_("##### START LookupElement\n"));
if (DTE > 0)
{
{
if (pDTE[x].address == address)
{
- dbprintf(("##### STOP LookupElement (DTE)\n"));
+ dbprintf(_("##### STOP LookupElement (DTE)\n"));
return(&pDTE[x]);
+ /*NOTREACHED*/
}
}
}
{
if (pMTE[x].address == address)
{
- dbprintf(("##### STOP LookupElement (MTE)\n"));
+ dbprintf(_("##### STOP LookupElement (MTE)\n"));
return(&pMTE[x]);
+ /*NOTREACHED*/
}
}
}
{
if (pSTE[x].address == address)
{
- dbprintf(("##### STOP LookupElement (STE)\n"));
+ dbprintf(_("##### STOP LookupElement (STE)\n"));
return(&pSTE[x]);
+ /*NOTREACHED*/
}
}
}
{
if (pIEE[x].address == address)
{
- dbprintf(("##### STOP LookupElement (IEE)\n"));
+ dbprintf(_("##### STOP LookupElement (IEE)\n"));
return(&pIEE[x]);
+ /*NOTREACHED*/
}
}
}
return(NULL);
}
+
/*
* Here comes everything what decode the log Pages
*
* Fix the result handling from TestUnitReady
*
*/
-int LogSense(DeviceFD)
+int
+LogSense(
+ int DeviceFD)
{
extern OpenFiles_T *pDev;
CDB_T CDB;
LogParameter_T *LogParameter;
struct LogPageDecode *p;
int found;
- char *datestamp = NULL;
- char *label = NULL;
- char *result = NULL;
extern char *tapestatfile;
int i;
- int ParameterCode;
- unsigned int value;
- int length;
+ unsigned ParameterCode;
+ unsigned value;
+ size_t length;
int count;
- char *buffer;
- char *logpages;
- int nologpages;
- int size = 128;
+ u_char *buffer;
+ u_char *logpages;
+ size_t nologpages;
+ size_t size = 128;
+
+ (void)DeviceFD; /* Quiet unused parameter warning */
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### START LogSense\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### START LogSense\n"));
- if (tapestatfile != NULL &&
- (StatFile = fopen(tapestatfile,"a")) != NULL &&
- pDev[INDEX_TAPECTL].SCSI == 1)
+ if ((tapestatfile != NULL) && (pDev[INDEX_TAPECTL].SCSI == 1) &&
+ ((StatFile = fopen(tapestatfile,"a")) != NULL))
{
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
+ if (GenericRewind(INDEX_TAPECTL) < 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"LogSense : malloc failed\n");
- return(-1);
- }
-
- if (GenericRewind(INDEX_TAPECTL) < 0)
- {
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"LogSense : Rewind failed\n");
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("LogSense : Rewind failed\n"));
free(pRequestSense);
- return(0);
- }
+ fclose(StatFile);
+ return(0);
+ /*NOTREACHED*/
+ }
/*
* Try to read the tape label
*/
{
SCSI_CloseDevice(INDEX_TAPE);
}
-
- if ((result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &datestamp, &label)) == NULL)
+
+ if ((chgscsi_result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label)) == NULL)
{
- fprintf(StatFile, "==== %s ==== %s ====\n", datestamp, label);
+ g_fprintf(StatFile, _("==== %s ==== %s ====\n"), chgscsi_datestamp, chgscsi_label);
} else {
- fprintf(StatFile, "%s\n", result);
+ g_fprintf(StatFile, "%s\n", chgscsi_result);
}
}
- if ((buffer = (char *)malloc(size)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"LogSense : malloc failed\n");
- return(-1);
- }
+ buffer = alloc(size);
memset(buffer, 0, size);
/*
- * Get the known log pages
+ * Get the known log pages
*/
-
+
CDB[0] = SC_COM_LOG_SENSE;
CDB[1] = 0;
CDB[2] = 0x40; /* 0x40 for current values */
CDB[6] = 00;
MSB2(&CDB[7], size);
CDB[9] = 0;
-
- if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
+
+ if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
buffer,
- size,
- (char *)pRequestSense,
- sizeof(RequestSense_T)) != 0)
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T)) != 0)
{
DecodeSense(pRequestSense, "LogSense : ",debug_file);
- free(buffer);
free(pRequestSense);
+ free(buffer);
+ fclose(StatFile);
return(0);
+ /*NOTREACHED*/
}
-
+
LogSenseHeader = (LogSenseHeader_T *)buffer;
nologpages = V2(LogSenseHeader->PageLength);
- if ((logpages = (char *)malloc(nologpages)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_TAPE,"LogSense : malloc failed\n");
- return(-1);
- }
-
- memcpy(logpages, buffer + sizeof(LogSenseHeader_T), nologpages);
-
- for (count = 0; count < nologpages; count++) {
+ logpages = alloc(nologpages);
+
+ memcpy(logpages, buffer + SIZEOF(LogSenseHeader_T), nologpages);
+
+ for (count = 0; count < (int)nologpages; count++) {
if (logpages[count] != 0 ) {
memset(buffer, 0, size);
-
-
CDB[0] = SC_COM_LOG_SENSE;
CDB[1] = 0;
- CDB[2] = 0x40 | logpages[count]; /* 0x40 for current values */
+ CDB[2] = (u_char)(0x40 | logpages[count]);/* 0x40 for current values */
CDB[3] = 0;
CDB[4] = 0;
CDB[5] = 0;
CDB[6] = 00;
MSB2(&CDB[7], size);
CDB[9] = 0;
-
+
if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
buffer,
- size,
- (char *)pRequestSense,
- sizeof(RequestSense_T)) != 0)
- {
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T)) != 0)
+ {
DecodeSense(pRequestSense, "LogSense : ",debug_file);
- free(buffer);
free(pRequestSense);
+ free(logpages);
+ free(buffer);
+ fclose(StatFile);
return(0);
+ /*NOTREACHED*/
}
LogSenseHeader = (LogSenseHeader_T *)buffer;
length = V2(LogSenseHeader->PageLength);
- LogParameter = (LogParameter_T *)(buffer + sizeof(LogSenseHeader_T));
+ LogParameter = (LogParameter_T *)(buffer + SIZEOF(LogSenseHeader_T));
/*
* Decode the log pages
*/
p = (struct LogPageDecode *)&DecodePages;
found = 0;
- dump_hex((char *)LogParameter, 64, DEBUG_INFO, SECTION_SCSI);
+ dump_hex((u_char *)LogParameter, 64, DEBUG_INFO, SECTION_SCSI);
while(p->ident != NULL) {
if ((strcmp(pDev[INDEX_TAPECTL].ident, p->ident) == 0 ||strcmp("*", p->ident) == 0) && p->LogPage == logpages[count]) {
p->decode(LogParameter, length);
found = 1;
- fprintf(StatFile, "\n");
+ g_fprintf(StatFile, "\n");
break;
}
p++;
}
- /*
- * Hack to disable the printing of unknown pages
- */
- found = 1;
-
if (!found) {
- fprintf(StatFile, "Logpage No %d = %x\n", count ,logpages[count]);
-
- while ((char *)LogParameter < (buffer + length)) {
+ g_fprintf(StatFile, _("Logpage No %d = %x\n"), count ,logpages[count]);
+
+ while ((u_char *)LogParameter < (buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
switch (i) {
case 1:
- value = V1((char *)LogParameter + sizeof(LogParameter_T));
- fprintf(StatFile, "ParameterCode %02X = %u(%d)\n", ParameterCode, value, i);
+ value = V1((u_char *)LogParameter + SIZEOF(LogParameter_T));
+ g_fprintf(StatFile, _("ParameterCode %02X = %u(%d)\n"), ParameterCode, value, i);
break;
case 2:
- value = V2((char *)LogParameter + sizeof(LogParameter_T));
- fprintf(StatFile, "ParameterCode %02X = %u(%d)\n", ParameterCode, value, i);
+ value = V2((u_char *)LogParameter + SIZEOF(LogParameter_T));
+ g_fprintf(StatFile, _("ParameterCode %02X = %u(%d)\n"), ParameterCode, value, i);
break;
case 3:
- value = V3((char *)LogParameter + sizeof(LogParameter_T));
- fprintf(StatFile, "ParameterCode %02X = %u(%d)\n", ParameterCode, value, i);
+ value = V3((u_char *)LogParameter + SIZEOF(LogParameter_T));
+ g_fprintf(StatFile, _("ParameterCode %02X = %u(%d)\n"), ParameterCode, value, i);
break;
case 4:
- value = V4((char *)LogParameter + sizeof(LogParameter_T));
- fprintf(StatFile, "ParameterCode %02X = %u(%d)\n", ParameterCode, value, i);
+ value = V4((u_char *)LogParameter + SIZEOF(LogParameter_T));
+ g_fprintf(StatFile, _("ParameterCode %02X = %u(%d)\n"), ParameterCode, value, i);
break;
case 5:
- value = V5((char *)LogParameter + sizeof(LogParameter_T));
- fprintf(StatFile, "ParameterCode %02X = %u(%d)\n", ParameterCode, value, i);
+ value = V5((u_char *)LogParameter + SIZEOF(LogParameter_T));
+ g_fprintf(StatFile, _("ParameterCode %02X = %u(%d)\n"), ParameterCode, value, i);
break;
default:
- fprintf(StatFile, "ParameterCode %02X size %d\n", ParameterCode, i);
+ g_fprintf(StatFile, _("ParameterCode %02X size %d\n"), ParameterCode, i);
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
- fprintf(StatFile, "\n");
+ g_fprintf(StatFile, "\n");
}
}
}
/*
* Test only !!!!
- * Reset the cumulative counters
+ * Reset the cumulative counters
*/
CDB[0] = SC_COM_LOG_SELECT;
CDB[1] = 2;
- CDB[2] = 0xc0;
+ CDB[2] = 0xc0;
CDB[3] = 0;
CDB[4] = 0;
CDB[5] = 0;
CDB[7] = 0;
CDB[8] = 0;
CDB[9] = 0;
-
- if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
+
+ if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
buffer,
- size,
- (char *)pRequestSense,
- sizeof(RequestSense_T)) != 0)
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T)) != 0)
{
DecodeSense(pRequestSense, "LogSense : ",debug_file);
- free(buffer);
free(pRequestSense);
+ free(logpages);
+ /*@ignore@*/
+ free(buffer);
+ /*@end@*/
+ fclose(StatFile);
return(0);
+ /*NOTREACHED*/
}
free(pRequestSense);
+ free(logpages);
+ /*@ignore@*/
free(buffer);
+ /*@end@*/
+ fclose(StatFile);
}
- DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP LogSense\n");
-
+ DebugPrint(DEBUG_INFO, SECTION_TAPE,_("##### STOP LogSense\n"));
return(0);
}
-void WriteErrorCountersPage(LogParameter_T *buffer, int length)
+void
+WriteErrorCountersPage(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tWrite Error Counters Page\n");
+ g_fprintf(StatFile, _("\tWrite Error Counters Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((u_char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
case 2:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Rewrites",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Rewrites"),
value);
break;
case 3:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Errors Corrected",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Errors Corrected"),
value);
break;
case 4:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Times E. Processed",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Times E. Processed"),
value);
break;
case 5:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Bytes Processed",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Bytes Processed"),
value);
break;
case 6:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Unrecoverable Errors",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Unrecoverable Errors"),
value);
break;
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
} else {
- fprintf(StatFile, "Error decoding Result\n");
+ g_fprintf(StatFile, _("Error decoding Result\n"));
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-void ReadErrorCountersPage(LogParameter_T *buffer, int length)
+void
+ReadErrorCountersPage(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tRead Error Counters Page\n");
+ g_fprintf(StatFile, _("\tRead Error Counters Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((u_char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
+ value = 0;
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
case 2:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Rereads",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Rereads"),
value);
break;
case 3:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Errors Corrected",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Errors Corrected"),
value);
break;
case 4:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Times E. Processed",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Times E. Processed"),
value);
break;
case 5:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Bytes Processed",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Bytes Processed"),
value);
break;
case 6:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Unrecoverable Errors",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Unrecoverable Errors"),
value);
break;
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
} else {
- fprintf(StatFile, "Error decoding Result\n");
+ g_fprintf(StatFile, _("Error decoding Result\n"));
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-void C1553APage30(LogParameter_T *buffer, int length)
+void
+C1553APage30(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tData compression transfer Page\n");
+ g_fprintf(StatFile, _("\tData compression transfer Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((u_char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
+ value = 0;
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-void C1553APage37(LogParameter_T *buffer, int length)
+void
+C1553APage37(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tDrive Counters Page\n");
+ g_fprintf(StatFile, _("\tDrive Counters Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((unsigned char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
+ value = 0;
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
case 1:
- fprintf(StatFile, "%-30s = %u\n",
- "Total loads",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total loads"),
value);
break;
case 2:
- fprintf(StatFile, "%-30s = %u\n",
- "Total write drive errors",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total write drive errors"),
value);
break;
case 3:
- fprintf(StatFile, "%-30s = %u\n",
- "Total read drive errors",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total read drive errors"),
value);
break;
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-void EXB85058HEPage39(LogParameter_T *buffer, int length)
+void
+EXB85058HEPage39(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tData Compression Page\n");
+ g_fprintf(StatFile, _("\tData Compression Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((unsigned char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
+ value = 0;
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
case 5:
- fprintf(StatFile, "%-30s = %u\n",
- "KB to Compressor",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("KB to Compressor"),
value);
break;
case 7:
- fprintf(StatFile, "%-30s = %u\n",
- "KB to tape",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("KB to tape"),
value);
break;
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-void EXB85058HEPage3c(LogParameter_T *buffer, int length)
+void
+EXB85058HEPage3c(
+ LogParameter_T * buffer,
+ size_t length)
{
int i;
- int value;
+ unsigned value;
LogParameter_T *LogParameter;
- int ParameterCode;
+ unsigned ParameterCode;
LogParameter = buffer;
- fprintf(StatFile, "\tDrive Usage Information Page\n");
+ g_fprintf(StatFile, _("\tDrive Usage Information Page\n"));
- while ((char *)LogParameter < ((char *)buffer + length)) {
+ while ((u_char *)LogParameter < ((unsigned char *)buffer + length)) {
i = LogParameter->ParameterLength;
ParameterCode = V2(LogParameter->ParameterCode);
+ value = 0;
if (Decode(LogParameter, &value) == 0) {
switch (ParameterCode) {
case 1:
case 5:
break;
case 6:
- fprintf(StatFile, "%-30s = %u\n",
- "Total Load Count",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Total Load Count"),
value);
break;
case 7:
- fprintf(StatFile, "%-30s = %u\n",
- "MinutesSince Last Clean",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("MinutesSince Last Clean"),
value);
break;
case 8:
case 9:
break;
case 0xa:
- fprintf(StatFile, "%-30s = %u\n",
- "Cleaning Count",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Cleaning Count"),
value);
break;
case 0xb:
case 0x10:
break;
case 0x11:
- fprintf(StatFile, "%-30s = %u\n",
- "Time to clean",
+ g_fprintf(StatFile, _("%-30s = %u\n"),
+ _("Time to clean"),
value);
break;
case 0x12:
case 0x14:
break;
default:
- fprintf(StatFile, "Unknown ParameterCode %02X = %u(%d)\n",
+ g_fprintf(StatFile, _("Unknown ParameterCode %02X = %u(%d)\n"),
ParameterCode,
value, i);
break;
}
}
- LogParameter = (LogParameter_T *)((char *)LogParameter + sizeof(LogParameter_T) + i);
+ LogParameter = (LogParameter_T *)((u_char *)LogParameter + SIZEOF(LogParameter_T) + i);
}
}
-int Decode(LogParameter_T *LogParameter, int *value)
+int
+Decode(
+ LogParameter_T * LogParameter,
+ unsigned * value)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START Decode\n");
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"Decode Parameter with length %d\n", LogParameter->ParameterLength);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START Decode\n"));
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("Decode Parameter with length %d\n"), LogParameter->ParameterLength);
+
+ *value = 0;
switch (LogParameter->ParameterLength) {
case 1:
- *value = V1((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V1((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
case 2:
- *value = V2((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V2((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
case 3:
- *value = V3((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V3((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
case 4:
- *value = V4((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V4((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
case 5:
- *value = V5((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V5((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
case 6:
- *value = V6((char *)LogParameter + sizeof(LogParameter_T));
+ *value = V6((u_char *)LogParameter + SIZEOF(LogParameter_T));
break;
default:
- fprintf(StatFile, "Can't decode ParameterCode %02X size %d\n",
+ g_fprintf(StatFile, _("Can't decode ParameterCode %02X size %d\n"),
V2(LogParameter->ParameterCode), LogParameter->ParameterLength);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP Decode (1)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP Decode (1)\n"));
return(1);
+ /*NOTREACHED*/
}
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"Result = %d\n", *value);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP Decode(0)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("Result = %d\n"), *value);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP Decode(0)\n"));
return(0);
}
-void DumpDev(OpenFiles_T *p, char *device)
+void
+DumpDev(
+ OpenFiles_T * p,
+ char * device)
{
if (p != NULL)
{
- printf("%s Devicefd %d\n", device, p->fd);
- printf("%s Can SCSI %d\n", device, p->SCSI);
- printf("%s Device %s\n", device, (p->dev != NULL)? p->dev:"No set");
- printf("%s ConfigName %s\n", device, (p->ConfigName != NULL) ? p->ConfigName:"Not ser");
+ g_printf(_("%s Devicefd %d\n"), device, p->fd);
+ g_printf(_("%s Can SCSI %d\n"), device, p->SCSI);
+ g_printf(_("%s Device %s\n"), device, (p->dev != NULL)? p->dev:_("No set"));
+ g_printf(_("%s ConfigName %s\n"), device, (p->ConfigName != NULL) ? p->ConfigName:_("Not ser"));
} else {
- printf("%s Null Pointer ....\n", device);
+ g_printf(_("%s Null Pointer ....\n"), device);
}
- printf("\n");
+ g_printf(_("\n"));
}
-void ChangerReplay(char *option)
+void
+ChangerReplay(
+ char * option)
{
- char buffer[1024];
+ u_char buffer[1024];
FILE *ip;
- int x = 0, bufferx;
-
+ int x;
+ unsigned bufferx;
+
+ (void)option; /* Quiet unused parameter warning */
+
if ((ip=fopen("/tmp/chg-scsi-trace", "r")) == NULL)
{
exit(1);
}
-
- while (fscanf(ip, "%2x", &bufferx) != EOF)
+
+ for (x = 0; x < 1024; x++)
{
- buffer[x] = bufferx;
- x++;
+ if (fscanf(ip, "%2x", &bufferx) == EOF)
+ {
+ break;
+ /*NOTREACHED*/
+ }
+ buffer[x] = (u_char)bufferx;
+ x++;
}
DecodeModeSense(&buffer[0], 12, "DLT448ElementStatus :", 0, debug_file);
+ fclose(ip);
}
/*
* Display all Information we can get about the library....
*/
-void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer_file, char *changer_dev, char *tape_device)
+void
+ChangerStatus(
+ char * option,
+ char * labelfile,
+ int HasBarCode,
+ char * changer_file,
+ char * changer_dev,
+ char * tape_device)
{
extern OpenFiles_T *pDev;
- int x;
+ size_t x;
FILE *out;
ExtendedRequestSense_T ExtRequestSense;
- MBC_T *pbarcoderes = malloc(sizeof(MBC_T));
-
+ MBC_T *pbarcoderes;
+
ChangerCMD_T *p = (ChangerCMD_T *)&ChangerIO;
- memset(pbarcoderes, 0, sizeof(MBC_T));
+ pbarcoderes = alloc(SIZEOF(MBC_T));
+ memset(pbarcoderes, 0, SIZEOF(MBC_T));
- if ((pModePage = (char *)malloc(0xff)) == NULL)
- {
- printf("malloc failed \n");
- return;
- }
+ if (pModePage == NULL) {
+ pModePage = alloc(0xff);
+ }
if ((out = fdopen(1 , "w")) == NULL)
{
- printf("Error fdopen stdout\n");
+ g_printf(_("Error fdopen stdout\n"));
+ free(pbarcoderes);
return;
+ /*NOTREACHED*/
}
-
+
if (strcmp("types", option) == 0 || strcmp("all", option) == 0)
{
while(p->ident != NULL)
{
- printf ("Ident = %s, type = %s\n",p->ident, p->type);
+ g_printf (_("Ident = %s, type = %s\n"),p->ident, p->type);
p++;
}
DumpSense();
{
if (pDev[INDEX_CHANGER].functions->function_status(pDev[INDEX_CHANGER].fd, 1) != 0)
{
- printf("Can not initialize changer status\n");
+ g_printf(_("Can not initialize changer status\n"));
+ free(pbarcoderes);
+ fclose(out);
return;
+ /*NOTREACHED*/
}
}
/* 0123456789012345678901234567890123456789012 */
if (HasBarCode)
{
- printf("Address Type Status From Barcode Label\n");
+ g_printf(_("Address Type Status From Barcode Label\n"));
} else {
- printf("Address Type Status From\n");
+ g_printf(_("Address Type Status From\n"));
}
- printf("-------------------------------------------\n");
-
-
+ g_printf(_("-------------------------------------------\n"));
+
+
for ( x = 0; x < MTE; x++)
if (HasBarCode)
{
- printf("%07d MTE %s %04d %s ",pMTE[x].address,
- (pMTE[x].full ? "Full " :"Empty"),
+ g_printf(_("%07d MTE %s %04d %s "),pMTE[x].address,
+ (pMTE[x].full ? _("Full ") :_("Empty")),
pMTE[x].from, pMTE[x].VolTag);
if (pMTE[x].full == 1)
{
pbarcoderes->action = BARCODE_BARCODE;
- strcpy(pbarcoderes->data.barcode, pMTE[x].VolTag);
-
+ strncpy(pbarcoderes->data.barcode, pMTE[x].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
+
if (MapBarCode(labelfile, pbarcoderes) == 0 )
- {
- printf("No mapping\n");
+ {
+ g_printf(_("No mapping\n"));
} else {
- printf("%s \n",pbarcoderes->data.voltag);
+ g_printf(_("%s \n"),pbarcoderes->data.voltag);
}
} else {
- printf("\n");
+ g_printf("\n");
}
} else {
- printf("%07d MTE %s %04d \n",pMTE[x].address,
- (pMTE[x].full ? "Full " :"Empty"),
+ g_printf(_("%07d MTE %s %04d \n"),pMTE[x].address,
+ (pMTE[x].full ? _("Full ") :_("Empty")),
pMTE[x].from);
}
-
-
+
+
for ( x = 0; x < STE; x++)
if (HasBarCode)
{
- printf("%07d STE %s %04d %s ",pSTE[x].address,
- (pSTE[x].full ? "Full ":"Empty"),
+ g_printf(_("%07d STE %s %04d %s "),pSTE[x].address,
+ (pSTE[x].full ? _("Full "):_("Empty")),
pSTE[x].from, pSTE[x].VolTag);
if (pSTE[x].full == 1)
{
pbarcoderes->action = BARCODE_BARCODE;
- strcpy(pbarcoderes->data.barcode, pSTE[x].VolTag);
-
+ strncpy(pbarcoderes->data.barcode, pSTE[x].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
+
if (MapBarCode(labelfile, pbarcoderes) == 0 )
{
- printf("No mapping\n");
+ g_printf(_("No mapping\n"));
} else {
- printf("%s \n",pbarcoderes->data.voltag);
+ g_printf(_("%s \n"),pbarcoderes->data.voltag);
}
} else {
- printf("\n");
+ g_printf("\n");
}
} else {
- printf("%07d STE %s %04d %s\n",pSTE[x].address,
- (pSTE[x].full ? "Full ":"Empty"),
+ g_printf(_("%07d STE %s %04d %s\n"),pSTE[x].address,
+ (pSTE[x].full ? _("Full"):_("Empty")),
pSTE[x].from, pSTE[x].VolTag);
}
-
-
+
+
for ( x = 0; x < DTE; x++)
if (HasBarCode)
{
- printf("%07d DTE %s %04d %s ",pDTE[x].address,
- (pDTE[x].full ? "Full " : "Empty"),
+ g_printf(_("%07d DTE %s %04d %s "),pDTE[x].address,
+ (pDTE[x].full ? _("Full") : _("Empty")),
pDTE[x].from, pDTE[x].VolTag);
if (pDTE[x].full == 1)
{
pbarcoderes->action = BARCODE_BARCODE;
- strcpy(pbarcoderes->data.barcode, pDTE[x].VolTag);
-
+ strncpy(pbarcoderes->data.barcode, pDTE[x].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
+
if (MapBarCode(labelfile, pbarcoderes) == 0 )
{
- printf("No mapping\n");
+ g_printf(_("No mapping\n"));
} else {
- printf("%s \n",pbarcoderes->data.voltag);
+ g_printf("%s \n",pbarcoderes->data.voltag);
}
} else {
- printf("\n");
+ g_printf("\n");
}
} else {
- printf("%07d DTE %s %04d %s\n",pDTE[x].address,
- (pDTE[x].full ? "Full " : "Empty"),
+ g_printf(_("%07d DTE %s %04d %s\n"),pDTE[x].address,
+ (pDTE[x].full ?_( "Full ") : _("Empty")),
pDTE[x].from, pDTE[x].VolTag);
}
-
+
for ( x = 0; x < IEE; x++)
if (HasBarCode)
- {
- printf("%07d IEE %s %04d %s ",pIEE[x].address,
- (pIEE[x].full ? "Full " : "Empty"),
+ {
+ g_printf(_("%07d IEE %s %04d %s "),pIEE[x].address,
+ (pIEE[x].full ? _("Full ") : _("Empty")),
pIEE[x].from, pIEE[x].VolTag);
if (pIEE[x].full == 1)
{
pbarcoderes->action = BARCODE_BARCODE;
- strcpy(pbarcoderes->data.barcode, pIEE[x].VolTag);
-
+ strncpy(pbarcoderes->data.barcode, pIEE[x].VolTag,
+ SIZEOF(pbarcoderes->data.barcode));
+
if (MapBarCode(labelfile, pbarcoderes) == 0 )
{
- printf("No mapping\n");
+ g_printf(_("No mapping\n"));
} else {
- printf("%s \n",pbarcoderes->data.voltag);
+ g_printf(_("%s \n"),pbarcoderes->data.voltag);
}
} else {
- printf("\n");
+ g_printf("\n");
}
} else {
- printf("%07d IEE %s %04d %s\n",pIEE[x].address,
- (pIEE[x].full ? "Full " : "Empty"),
+ g_printf(_("%07d IEE %s %04d %s\n"),pIEE[x].address,
+ (pIEE[x].full ? _("Full ") : _("Empty")),
pIEE[x].from, pIEE[x].VolTag);
}
-
+
}
if (strcmp("sense", option) == 0 || strcmp("all", option) == 0)
{
if (pDev[INDEX_CHANGER].SCSI == 1)
{
- printf("\nSense Status from robot:\n");
+ g_printf(_("\nSense Status from robot:\n"));
RequestSense(INDEX_CHANGER , &ExtRequestSense, 0);
DecodeExtSense(&ExtRequestSense, "", out);
}
-
+
if (pDev[INDEX_TAPE].SCSI == 1)
{
- printf("\n");
- printf("Sense Status from tape (tapectl):\n");
- RequestSense(INDEX_TAPE, &ExtRequestSense, 0);
+ g_printf("\n");
+ g_printf(_("Sense Status from tape (tapectl):\n"));
+ RequestSense(INDEX_TAPE, &ExtRequestSense, 0);
DecodeExtSense(&ExtRequestSense, "", out);
}
if (pDev[INDEX_TAPECTL].SCSI == 1)
{
- printf("\n");
- printf("Sense Status from tape (tapectl):\n");
- RequestSense(INDEX_TAPECTL, &ExtRequestSense, 0);
+ g_printf("\n");
+ g_printf(_("Sense Status from tape (tapectl):\n"));
+ RequestSense(INDEX_TAPECTL, &ExtRequestSense, 0);
DecodeExtSense(&ExtRequestSense, "", out);
}
}
if (strcmp("ModeSenseRobot", option) == 0 || strcmp("all", option) == 0)
{
- printf("\n");
+ g_printf("\n");
if (SCSI_ModeSense(INDEX_CHANGER, pModePage, 0xff, 0x08, 0x3f) == 0)
{
- DecodeModeSense(pModePage, 0, "Changer :" , 0, out);
+ DecodeModeSense(pModePage, 0, "Changer :" , 0, out);
}
}
-
+
if (strcmp("ModeSenseTape", option) == 0 || strcmp("all", option) == 0)
{
if (pDev[INDEX_TAPECTL].SCSI == 1)
{
- printf("\n");
+ g_printf("\n");
if (SCSI_ModeSense(INDEX_TAPECTL, pModePage, 0xff, 0x0, 0x3f) == 0)
{
- DecodeModeSense(pModePage, 0, "Tape :" , 1, out);
+ DecodeModeSense(pModePage, 0, "Tape :" , 1, out);
}
}
}
if (strcmp("fd", option) == 0 || strcmp("all", option) == 0)
{
- printf("changer_dev %s\n",changer_dev);
- printf("changer_file %s\n", changer_file);
- printf("tape_device %s\n\n", tape_device);
+ g_printf("changer_dev %s\n",changer_dev);
+ g_printf("changer_file %s\n", changer_file);
+ g_printf("tape_device %s\n\n", tape_device);
DumpDev(&pDev[INDEX_TAPE], "pTapeDev");
DumpDev(&pDev[INDEX_TAPECTL], "pTapeDevCtl");
DumpDev(&pDev[INDEX_CHANGER], "pChangerDev");
}
if (GenericClean("") == 1)
- printf("Tape needs cleaning\n");
+ g_printf(_("Tape needs cleaning\n"));
+
+ free(pbarcoderes);
+ fclose(out);
}
-void dump_hex(char *p, int size, int level, int section)
+void
+dump_hex(
+ u_char * p,
+ size_t size,
+ int level,
+ int section)
{
- int row_count = 0;
- int x = 0;
+ size_t row_count = 0;
+ int x;
while (row_count < size)
{
- DebugPrint(level, section,"%02X ", (unsigned char)p[row_count]);
- if (((row_count + 1) % 16) == 0 )
+ DebugPrint(level, section,"%02X ", (u_char)p[row_count]);
+ if (((row_count + 1) % 16) == 0)
{
- dbprintf((" "));
- for (x = 16; x>0;x--)
+ dbprintf(" ");
+ for (x = 16; x > 0; x--)
{
- if (isalnum((unsigned char)p[row_count - x + 1 ]))
- DebugPrint(level, section,"%c",(unsigned char)p[row_count - x + 1]);
- else
- DebugPrint(level, section,".");
- }
+ if (isalnum((u_char)p[row_count - x + 1 ]))
+ DebugPrint(level, section,"%c",(u_char)p[row_count - x + 1]);
+ else
+ DebugPrint(level, section,".");
+ }
DebugPrint(level, section,"\n");
}
row_count++;
DebugPrint(level, section,"\n");
}
-void TerminateString(char *string, int length)
+void
+TerminateString(
+ char * string,
+ size_t length)
{
- int x;
-
- for (x = length; x >= 0 && !isalnum((int)string[x]); x--)
+ ssize_t x;
+
+ for (x = (ssize_t)length; x >= 0 && !isalnum((int)string[x]); x--)
string[x] = '\0';
}
-void ChgExit(char *where, char *reason, int level)
+void
+ChgExit(
+ char * where,
+ char * reason,
+ int level)
{
- dbprintf(("ChgExit in %s, reason %s\n", where, reason));
- fprintf(stderr,"%s\n",reason);
- exit(2);
+ (void)level; /* Quiet unused parameter warning */
+
+ dbprintf(_("ChgExit in %s, reason %s\n"), where, reason);
+ g_fprintf(stderr,"%s\n",reason);
+ exit(2);
}
/* OK here starts a new set of functions.
* is ready for accepting commands, and if this is true send
* the command
*/
-int SCSI_Run(int DeviceFD,
- Direction_T Direction,
- CDB_T CDB,
- int CDB_Length,
- void *DataBuffer,
- int DataBufferLength,
- char *pRequestSense,
- int RequestSenseLength)
+int
+SCSI_Run(
+ int DeviceFD,
+ Direction_T Direction,
+ CDB_T CDB,
+ size_t CDB_Length,
+ void * DataBuffer,
+ size_t DataBufferLength,
+ RequestSense_T * pRequestSense,
+ size_t RequestSenseLength)
{
int ret = 0;
int ok = 0;
int maxtries = 0;
RequestSense_T *pRqS;
+ /* Basic sanity checks */
+ assert(CDB_Length <= UCHAR_MAX);
+ assert(RequestSenseLength <= UCHAR_MAX);
+
pRqS = (RequestSense_T *)pRequestSense;
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "SCSI_Run TestUnitReady\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("SCSI_Run TestUnitReady\n"));
while (!ok && maxtries < MAXTRIES)
{
ret = SCSI_TestUnitReady(DeviceFD, (RequestSense_T *)pRequestSense );
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "SCSI_Run TestUnitReady ret %d\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("SCSI_Run TestUnitReady ret %d\n"),ret);
switch (ret)
{
case SCSI_OK:
ok=1;
break;
case SCSI_SENSE:
- switch (SenseHandler(DeviceFD, 0, pRqS->SenseKey, pRqS->AdditionalSenseCode, pRqS->AdditionalSenseCodeQualifier, pRequestSense))
+ switch (SenseHandler(DeviceFD, 0, pRqS->SenseKey, pRqS->AdditionalSenseCode, pRqS->AdditionalSenseCodeQualifier, pRqS))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SENSE_NO\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SENSE_NO\n"));
ok=1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SENSE_TAPE_NOT_ONLINE\n"));
ok=1;
break;
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SENSE_IGNORE\n"));
ok=1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run (TestUnitReady) SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SENSE_ABORT\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) default (SENSE)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) default (SENSE)\n"));
ok=1;
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run (TestUnitReady) SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SCSI_ERROR\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run (TestUnitReady) unknown (%d)\n"),ret);
break;
}
if (!ok)
maxtries++;
}
}
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run TestUnitReady after %d sec:\n",maxtries);
-
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run TestUnitReady after %d sec:\n"),maxtries);
+
if (ok != 1)
{
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run Exit %d\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run Exit %d\n"),ret);
return(-1);
+ /*NOTREACHED*/
}
ok = 0;
DataBufferLength,
pRequestSense,
RequestSenseLength);
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run Exit %d\n",ret);
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run Exit %d\n"),ret);
switch (ret)
{
case SCSI_OK:
ok=1;
break;
case SCSI_SENSE:
- switch (SenseHandler(DeviceFD, 0, pRqS->SenseKey, pRqS->AdditionalSenseCode, pRqS->AdditionalSenseCodeQualifier, pRequestSense))
+ switch (SenseHandler(DeviceFD, 0, pRqS->SenseKey, pRqS->AdditionalSenseCode, pRqS->AdditionalSenseCodeQualifier, pRqS))
{
case SENSE_NO:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run SENSE_NO\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run SENSE_NO\n"));
ok=1;
break;
case SENSE_TAPE_NOT_ONLINE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run SENSE_TAPE_NOT_ONLINE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run SENSE_TAPE_NOT_ONLINE\n"));
ok=1;
break;
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run SENSE_IGNORE\n"));
ok=1;
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run SENSE_ABORT\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run SENSE_RETRY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run SENSE_RETRY\n"));
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run default (SENSE)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run default (SENSE)\n"));
ok=1;
break;
}
break;
case SCSI_ERROR:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run SCSI_ERROR\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run SCSI_ERROR\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SCSI_BUSY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run SCSI_BUSY\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run SCSI_BUSY\n"));
break;
case SCSI_CHECK:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Run (TestUnitReady) SCSI_CHECK\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Run (TestUnitReady) SCSI_CHECK\n"));
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Run (TestUnitReady) unknown (%d)\n",ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_Run (TestUnitReady) unknown (%d)\n"),ret);
break;
}
maxtries++;
sleep(1);
}
-
+
if (ok == 1)
{
return(0);
- } else {
- return(-1);
+ /*NOTREACHED*/
}
+ return(-1);
}
-/*
- * This a vendor specific command !!!!!!
- * First seen at AIT :-)
- */
-int SCSI_AlignElements(int DeviceFD, int AE_MTE, int AE_DTE, int AE_STE)
+/*
+ * This a vendor specific command !!!!!!
+ * First seen at AIT :-)
+ */
+int
+SCSI_AlignElements(
+ int DeviceFD,
+ size_t AE_MTE,
+ size_t AE_DTE,
+ size_t AE_STE)
{
RequestSense_T *pRequestSense;
- int retry = 1;
+ int retry;
CDB_T CDB;
int ret;
int i;
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_AlignElements\n");
-
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : malloc failed\n");
- return(-1);
- }
-
- while (retry > 0 && retry < MAX_RETRIES)
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_AlignElements\n"));
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+
+ for (retry = 0; retry < MAX_RETRIES; retry++)
{
CDB[0] = 0xE5;
CDB[1] = 0;
CDB[9] = 0;
CDB[10] = 0;
CDB[11] = 0;
-
+
ret = SCSI_Run(DeviceFD, Input, CDB, 12,
- NULL, 0, (char *)pRequestSense, sizeof(RequestSense_T));
+ NULL, 0, pRequestSense, SIZEOF(RequestSense_T));
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : SCSI_Run = %d\n", ret);
- DecodeSense(pRequestSense, "SCSI_AlignElements :",debug_file);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_AlignElements : SCSI_Run = %d\n"), ret);
+ DecodeSense(pRequestSense, _("SCSI_AlignElements :"),debug_file);
if (ret < 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"%s: Request Sense[Inquiry]: %02X",
- "chs", ((unsigned char *) &pRequestSense)[0]);
- for (i = 1; i < sizeof(RequestSense_T); i++)
- DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((unsigned char *) &pRequestSense)[i]);
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("%s: Request Sense[Inquiry]: %02X"),
+ "chs", ((u_char *) &pRequestSense)[0]);
+ for (i = 1; i < (int)sizeof(RequestSense_T); i++)
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((u_char *) &pRequestSense)[i]);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,"\n");
return(ret);
+ /*NOTREACHED*/
}
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0 , pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0 , pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_AlignElements : SENSE_IGNORE\n"));
return(0);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : SENSE_RETRY no %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_AlignElements : SENSE_RETRY no %d\n"), retry);
break;
case SENSE_ABORT:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_AlignElements : SENSE_ABORT\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_AlignElements : SENSE_ABORT\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_TAPE_NOT_UNLOADED:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_AlignElements : Tape still loaded, eject failed\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("SCSI_AlignElements : Tape still loaded, eject failed\n"));
return(-1);
- break;
+ /*NOTREACHED*/
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : end %d\n", pRequestSense->SenseKey);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_AlignElements : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
if (ret == 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_AlignElements : end %d\n", ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_AlignElements : end %d\n"), ret);
return(ret);
- }
+ /*NOTREACHED*/
+ }
}
- return(ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,
+ _("SCSI_AlignElements: Retries exceeded = %d\n"), retry);
+ return(-1);
}
-int SCSI_Move(int DeviceFD, unsigned char chm, int from, int to)
+int
+SCSI_Move(
+ int DeviceFD,
+ u_char chm,
+ int from,
+ int to)
{
RequestSense_T *pRequestSense;
- int retry = 1;
+ int retry;
CDB_T CDB;
- int ret;
+ int ret = -1;
int i;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_Move\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_Move\n"));
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Move : malloc failed\n");
- return(-1);
- }
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
- while (retry > 0 && retry < MAX_RETRIES)
+ for (retry = 0; (ret != 0) && (retry < MAX_RETRIES); retry++)
{
CDB[0] = SC_MOVE_MEDIUM;
CDB[1] = 0;
CDB[9] = 0;
CDB[10] = 0;
CDB[11] = 0;
-
+
ret = SCSI_Run(DeviceFD, Input, CDB, 12,
- NULL, 0, (char *)pRequestSense, sizeof(RequestSense_T));
+ NULL, 0, pRequestSense, SIZEOF(RequestSense_T));
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Move : SCSI_Run = %d\n", ret);
- DecodeSense(pRequestSense, "SCSI_Move :",debug_file);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Move : SCSI_Run = %d\n"), ret);
+ DecodeSense(pRequestSense, _("SCSI_Move :"),debug_file);
if (ret < 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"%s: Request Sense[Inquiry]: %02X",
- "chs", ((unsigned char *) &pRequestSense)[0]);
- for (i = 1; i < sizeof(RequestSense_T); i++)
- DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((unsigned char *) &pRequestSense)[i]);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("%s: Request Sense[Inquiry]: %02X"),
+ "chs", ((u_char *) &pRequestSense)[0]);
+ for (i = 1; i < (int)sizeof(RequestSense_T); i++)
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((u_char *) &pRequestSense)[i]);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,"\n");
return(ret);
+ /*NOTREACHED*/
}
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0 , pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0 , pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- dbprintf(("SCSI_Move : SENSE_IGNORE\n"));
+ dbprintf(_("SCSI_Move : SENSE_IGNORE\n"));
return(0);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- dbprintf(("SCSI_Move : SENSE_RETRY no %d\n", retry));
+ dbprintf(_("SCSI_Move : SENSE_RETRY no %d\n"), retry);
break;
case SENSE_ABORT:
- dbprintf(("SCSI_Move : SENSE_ABORT\n"));
+ dbprintf(_("SCSI_Move : SENSE_ABORT\n"));
return(-1);
- break;
+ /*NOTREACHED*/
case SENSE_TAPE_NOT_UNLOADED:
- dbprintf(("SCSI_Move : Tape still loaded, eject failed\n"));
+ dbprintf(_("SCSI_Move : Tape still loaded, eject failed\n"));
return(-1);
- break;
+ /*NOTREACHED*/
default:
- dbprintf(("SCSI_Move : end %d\n", pRequestSense->SenseKey));
+ dbprintf(_("SCSI_Move : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
- if (ret == 0)
- {
- dbprintf(("SCSI_Move : end %d\n", ret));
- return(ret);
- }
}
+ dbprintf(_("SCSI_Move : end %d\n"), ret);
return(ret);
}
-int SCSI_LoadUnload(int DeviceFD, RequestSense_T *pRequestSense, unsigned char byte1, unsigned char load)
+int
+SCSI_LoadUnload(
+ int DeviceFD,
+ RequestSense_T * pRequestSense,
+ u_char byte1,
+ u_char load)
{
CDB_T CDB;
int ret;
- dbprintf(("##### START SCSI_LoadUnload\n"));
-
+ dbprintf(_("##### START SCSI_LoadUnload\n"));
+
CDB[0] = SC_COM_UNLOAD;
- CDB[1] = byte1;
+ CDB[1] = byte1;
CDB[2] = 0;
CDB[3] = 0;
CDB[4] = load;
CDB[5] = 0;
-
-
+
+
ret = SCSI_Run(DeviceFD, Input, CDB, 6,
- NULL, 0,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
-
+ NULL, 0,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
+
if (ret < 0)
{
- dbprintf(("SCSI_Unload : failed %d\n", ret));
+ dbprintf(_("SCSI_Unload : failed %d\n"), ret);
return(-1);
- }
+ /*NOTREACHED*/
+ }
+ dbprintf(_("##### STOP SCSI_LoadUnload\n"));
return(ret);
}
-int SCSI_TestUnitReady(int DeviceFD, RequestSense_T *pRequestSense)
+int
+SCSI_TestUnitReady(
+ int DeviceFD,
+ RequestSense_T * pRequestSense)
{
CDB_T CDB;
int ret;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_TestUnitReady\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_TestUnitReady\n"));
CDB[0] = SC_COM_TEST_UNIT_READY;
CDB[1] = 0;
CDB[5] = 0;
ret = SCSI_ExecuteCommand(DeviceFD, Input, CDB, 6,
- NULL, 0,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
+ NULL, (size_t)0,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
/*
- * We got an error, so let the calling function handle this
+ * We got an error, so let the calling function handle this
*/
if (ret > 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"###### STOP SCSI_TestUnitReady (1)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### STOP SCSI_TestUnitReady (1)\n"));
return(ret);
+ /*NOTREACHED*/
}
/*
*/
if (pRequestSense->ErrorCode == 0 && pRequestSense->SenseKey == 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"###### STOP SCSI_TestUnitReady (1)\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### STOP SCSI_TestUnitReady (1)\n"));
return(0);
+ /*NOTREACHED*/
}
/*
* Some sense is set
*/
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"###### STOP SCSI_TestUnitReady (0)\n");
+ if (pRequestSense->ErrorCode != 0){
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### STOP SCSI_TestUnitReady ErrorCode set\n"));
+ }
+ if (pRequestSense->SenseKey != 0) {
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### STOP SCSI_TestUnitReady Sense Key set\n"));
+ }
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("###### STOP SCSI_TestUnitReady (0)\n"));
return(SCSI_SENSE);
}
-int SCSI_ModeSelect(int DeviceFD, char *buffer, unsigned char length, unsigned char save, unsigned char mode, unsigned char lun)
+int
+SCSI_ModeSelect(
+ int DeviceFD,
+ u_char * buffer,
+ u_char length,
+ u_char save,
+ u_char mode,
+ u_char lun)
{
CDB_T CDB;
RequestSense_T *pRequestSense;
- int ret;
- int retry = 1;
- char *sendbuf;
-
- dbprintf(("##### START SCSI_ModeSelect\n"));
-
- dbprintf(("SCSI_ModeSelect start length = %d:\n", length));
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- dbprintf(("SCSI_ModeSelect : malloc failed\n"));
- return(-1);
- }
+ int ret = -1;
+ int retry;
+ u_char *sendbuf;
-
- if ((sendbuf = (char *)malloc(length + 4)) == NULL)
- {
- dbprintf(("SCSI_ModeSelect : malloc failed\n"));
- return(-1);
- }
+ dbprintf(_("##### START SCSI_ModeSelect\n"));
- memset(sendbuf, 0 , length + 4);
+ dbprintf(_("SCSI_ModeSelect start length = %u:\n"), (unsigned)length);
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
+ sendbuf = alloc((size_t)length + 4);
+ memset(sendbuf, 0 , (size_t)length + 4);
- memcpy(&sendbuf[4], buffer, length);
- dump_hex(sendbuf, length+4, DEBUG_INFO, SECTION_SCSI);
+ memcpy(&sendbuf[4], buffer, (size_t)length);
+ dump_hex(sendbuf, (size_t)length+4, DEBUG_INFO, SECTION_SCSI);
- while (retry > 0 && retry < MAX_RETRIES)
+ for (retry = 0; (ret != 0) && (retry < MAX_RETRIES); retry++)
{
- memset(pRequestSense, 0, sizeof(RequestSense_T));
-
+ memset(pRequestSense, 0, SIZEOF(RequestSense_T));
+
CDB[0] = SC_COM_MODE_SELECT;
- CDB[1] = ((lun << 5) & 0xF0) | ((mode << 4) & 0x10) | (save & 1);
+ CDB[1] = (u_char)(((lun << 5) & 0xF0) | ((mode << 4) & 0x10) | (save & 1));
CDB[2] = 0;
CDB[3] = 0;
- CDB[4] = length + 4;
+ CDB[4] = (u_char)(length + 4);
CDB[5] = 0;
- ret = SCSI_Run(DeviceFD, Output, CDB, 6,
+ ret = SCSI_Run(DeviceFD, Output, CDB, 6,
sendbuf,
- length + 4,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
+ (size_t)length + 4,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
if (ret < 0)
{
- dbprintf(("SCSI_ModeSelect : ret %d\n", ret));
- return(ret);
+ dbprintf(_("SCSI_ModeSelect : ret %d\n"), ret);
+ goto done;
+ /*NOTREACHED*/
}
-
+
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey,
+ pRequestSense->AdditionalSenseCode,
+ pRequestSense->AdditionalSenseCodeQualifier,
+ pRequestSense))
{
case SENSE_IGNORE:
- dbprintf(("SCSI_ModeSelect : SENSE_IGNORE\n"));
- return(0);
- break;
+ dbprintf(_("SCSI_ModeSelect : SENSE_IGNORE\n"));
+ goto done;
+ /*NOTREACHED*/
+
case SENSE_RETRY:
- dbprintf(("SCSI_ModeSelect : SENSE_RETRY no %d\n", retry));
+ dbprintf(_("SCSI_ModeSelect : SENSE_RETRY no %d\n"), retry);
break;
+
default:
- dbprintf(("SCSI_ModeSelect : end %d\n", pRequestSense->SenseKey));
- return(pRequestSense->SenseKey);
- break;
+ ret = pRequestSense->SenseKey;
+ goto end;
}
}
- retry++;
- if (ret == 0)
- {
- dbprintf(("SCSI_ModeSelect end: %d\n", ret));
- return(ret);
- }
}
- dbprintf(("SCSI_ModeSelect end: %d\n", ret));
+end:
+ dbprintf(_("SCSI_ModeSelect end: %d\n"), ret);
+
+done:
+ free(pRequestSense);
+ free(sendbuf);
return(ret);
}
-int SCSI_ModeSense(int DeviceFD, char *buffer, u_char size, u_char byte1, u_char byte2)
+int
+SCSI_ModeSense(
+ int DeviceFD,
+ u_char * buffer,
+ u_char size,
+ u_char byte1,
+ u_char byte2)
{
CDB_T CDB;
RequestSense_T *pRequestSense;
int ret = 1;
int retry = 1;
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_ModeSense\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_ModeSense\n"));
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense start length = %d:\n", size);
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_ModeSense : malloc failed\n");
- return(-1);
- }
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense start length = %d:\n"), size);
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
while (ret && retry < MAX_RETRIES)
{
- memset(pRequestSense, 0, sizeof(RequestSense_T));
+ memset(pRequestSense, 0, SIZEOF(RequestSense_T));
memset(buffer, 0, size);
-
+
CDB[0] = SC_COM_MODE_SENSE;
CDB[1] = byte1;
CDB[2] = byte2;
CDB[3] = 0;
CDB[4] = size;
CDB[5] = 0;
- ret = SCSI_Run(DeviceFD, Input, CDB, 6,
+ ret = SCSI_Run(DeviceFD, Input, CDB, 6,
buffer,
- size,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
if (ret < 0)
{
return(ret);
+ /*NOTREACHED*/
}
-
+
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_IGNORE\n"));
return(0);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_RETRY no %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_RETRY no %d\n"), retry);
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : end %d\n", pRequestSense->SenseKey);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
retry++;
}
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense end: %d\n", ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense end: %d\n"), ret);
return(ret);
}
-int SCSI_Inquiry(int DeviceFD, SCSIInquiry_T *buffer, u_char size)
+int
+SCSI_Inquiry(
+ int DeviceFD,
+ SCSIInquiry_T * buffer,
+ size_t size)
{
CDB_T CDB;
RequestSense_T *pRequestSense;
int i;
- int ret;
+ int ret = -1;
int retry = 1;
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "##### START SCSI_Inquiry\n");
+ assert(size <= UCHAR_MAX);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "SCSI_Inquiry start length = %d:\n", size);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("##### START SCSI_Inquiry\n"));
- if ((pRequestSense = (RequestSense_T *)malloc(size)) == NULL)
- {
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_Inquiry : malloc failed\n");
- return(-1);
- }
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("SCSI_Inquiry start length = %d:\n"), size);
+
+ pRequestSense = alloc((size_t)size);
while (retry > 0 && retry < MAX_RETRIES)
{
CDB[1] = 0;
CDB[2] = 0;
CDB[3] = 0;
- CDB[4] = size;
+ CDB[4] = (u_char)size;
CDB[5] = 0;
-
- ret = SCSI_ExecuteCommand(DeviceFD, Input, CDB, 6,
+
+ ret = SCSI_ExecuteCommand(DeviceFD, Input, CDB, 6,
buffer,
- size,
- (char *) pRequestSense,
- sizeof(RequestSense_T));
+ size,
+ pRequestSense,
+ SIZEOF(RequestSense_T));
if (ret < 0)
{
- DebugPrint(DEBUG_ERROR, SECTION_SCSI,"%s: Request Sense[Inquiry]: %02X",
- "chs", ((unsigned char *) pRequestSense)[0]);
- for (i = 1; i < sizeof(RequestSense_T); i++)
- DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((unsigned char *) pRequestSense)[i]);
- DebugPrint(DEBUG_ERROR, SECTION_SCSI, "\n");
- DebugPrint(DEBUG_ERROR, SECTION_SCSI, "Inquiry end: %d\n", ret);
- return(ret);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI,_("%s: Request Sense[Inquiry]: %02X"),
+ "chs", ((u_char *) pRequestSense)[0]);
+ for (i = 1; i < (int)sizeof(RequestSense_T); i++)
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI," %02X", ((u_char *) pRequestSense)[i]);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI, "\n");
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI, _("Inquiry end: %d\n"), ret);
+ return(ret);
+ /*NOTRACHED*/
}
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Inquiry : SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Inquiry : SENSE_IGNORE\n"));
return(0);
- break;
+ /*NOTREACHED*/
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "SCSI_Inquiry : SENSE_RETRY no %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("SCSI_Inquiry : SENSE_RETRY no %d\n"), retry);
break;
default:
- DebugPrint(DEBUG_ERROR, SECTION_SCSI, "SCSI_Inquiry : end %d\n", pRequestSense->SenseKey);
+ DebugPrint(DEBUG_ERROR, SECTION_SCSI, _("SCSI_Inquiry : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
retry++;
if (ret == 0)
{
- dump_hex((char *)buffer, size, DEBUG_INFO, SECTION_SCSI);
- DebugPrint(DEBUG_INFO, SECTION_SCSI, "SCSI_Inquiry : end %d\n", ret);
+ dump_hex((u_char *)buffer, size, DEBUG_INFO, SECTION_SCSI);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI, _("SCSI_Inquiry : end %d\n"), ret);
return(ret);
+ /*NOTRACHED*/
}
}
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_Inquiry end: %d\n", ret);
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_Inquiry end: %d\n"), ret);
return(ret);
}
/*
- * Read the Element Status. If DescriptorSize != 0 then
+ * Read the Element Status. If DescriptorSize != 0 then
* allocate DescriptorSize * NoOfElements for the result from the
- * Read Element Status command.
+ * Read Element Status command.
* If DescriptorSize == 0 than try to figure out how much space is needed
- * by
+ * by
* 1. do an read with an allocation size of 8
* 2. from the result take the 'Byte Count of Descriptor Available'
* 3. do again an Read Element Status with the result from 2.
*
*/
-int SCSI_ReadElementStatus(int DeviceFD,
- unsigned char type,
- unsigned char lun,
- unsigned char VolTag,
- int StartAddress,
- int NoOfElements,
- int DescriptorSize,
- char **data)
+int
+SCSI_ReadElementStatus(
+ int DeviceFD,
+ u_char type,
+ u_char lun,
+ u_char VolTag,
+ int StartAddress,
+ size_t NoOfElements,
+ size_t DescriptorSize,
+ u_char ** data)
{
CDB_T CDB;
- int DataBufferLength;
+ size_t DataBufferLength;
ElementStatusData_T *ElementStatusData;
RequestSense_T *pRequestSense;
int retry = 1;
- int ret = -1;
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_ReadElementStatus\n");
+ int ret = -1;
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_ReadElementStatus\n"));
+
+ pRequestSense = alloc(SIZEOF(RequestSense_T));
- if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
- {
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus : malloc failed\n");
- ChgExit("SCSI_ReadElementStatus","malloc failed", FATAL);
- }
-
/*
* How many elements, if <= 0 than exit with an fatal error
*/
- if (NoOfElements <= 0)
+ if (NoOfElements == 0)
{
- ChgExit("SCSI_ReadElementStatus","No of Elements passed are le 0",FATAL);
+ ChgExit("SCSI_ReadElementStatus",_("No of Elements passed are le 0"),FATAL);
+ /*NOTREACHED*/
}
- VolTag = (VolTag << 4) & 0x10;
- type = type & 0xf;
- lun = (lun << 5) & 0xe0;
-
+ VolTag = (u_char)((VolTag << 4) & 0x10);
+ type = (u_char)(type & 0xf);
+ lun = (u_char)((lun << 5) & 0xe0);
/* if DescriptorSize == 0
* try to get the allocation length for the second call
*/
if (DescriptorSize == 0)
{
- if (*data != NULL)
- {
- *data = realloc(*data, 8);
- } else {
- *data = malloc(8);
- }
-
+ *data = newalloc(*data, 8);
memset(*data, 0, 8);
-
-
-
+
while (retry > 0 && retry < MAX_RETRIES)
{
- memset(pRequestSense, 0, sizeof(RequestSense_T) );
-
+ memset(pRequestSense, 0, SIZEOF(RequestSense_T) );
+
CDB[0] = SC_COM_RES; /* READ ELEMENT STATUS */
- CDB[1] = VolTag | type | lun; /* Element Type Code , VolTag, LUN */
+ CDB[1] = (u_char)(VolTag | type | lun); /* Element Type Code , VolTag, LUN */
MSB2(&CDB[2], StartAddress); /* Starting Element Address */
MSB2(&CDB[4], NoOfElements); /* Number Of Element */
- CDB[6] = 0; /* Reserved */
- MSB3(&CDB[7],8); /* Allocation Length */
- CDB[10] = 0; /* Reserved */
- CDB[11] = 0; /* Control */
-
- ret = SCSI_Run(DeviceFD, Input, CDB, 12,
- *data, 8,
- (char *)pRequestSense, sizeof(RequestSense_T));
-
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus : (1) SCSI_Run %d\n", ret);
+ CDB[6] = 0; /* Reserved */
+ MSB3(&CDB[7],8); /* Allocation Length */
+ CDB[10] = 0; /* Reserved */
+ CDB[11] = 0; /* Control */
+
+ ret = SCSI_Run(DeviceFD, Input, CDB, 12,
+ *data, 8,
+ pRequestSense, SIZEOF(RequestSense_T));
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ReadElementStatus : (1) SCSI_Run %d\n"), ret);
if (ret < 0)
{
DecodeSense(pRequestSense, "SCSI_ReadElementStatus :",debug_file);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP SCSI_ReadElementStatus (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP SCSI_ReadElementStatus (%d)\n"),ret);
return(ret);
+ /*NOTRACHED*/
}
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_IGNORE\n"));
retry = 0;
break;
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_RETRY no %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_RETRY no %d\n"), retry);
sleep(2);
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : end %d\n", pRequestSense->SenseKey);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
retry++;
}
if (retry > 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP SCSI_ReadElementStatus (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP SCSI_ReadElementStatus (%d)\n"),ret);
return(ret);
+ /*NOTRACHED*/
}
-
+
ElementStatusData = (ElementStatusData_T *)*data;
DataBufferLength = V3(ElementStatusData->count);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus: DataBufferLength %X, ret %d\n",DataBufferLength, ret);
-
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ReadElementStatus: DataBufferLength %X, ret %d\n"),DataBufferLength, ret);
+
dump_hex(*data, 8, DEBUG_INFO, SECTION_ELEMENT);
} else { /* DescriptorSize != 0 */
DataBufferLength = NoOfElements * DescriptorSize;
}
DataBufferLength = DataBufferLength + 8;
- *data = realloc(*data, DataBufferLength);
+ *data = newalloc(*data, DataBufferLength);
memset(*data, 0, DataBufferLength);
retry = 1;
while (retry > 0 && retry < MAX_RETRIES)
{
- memset(pRequestSense, 0, sizeof(RequestSense_T) );
-
+ memset(pRequestSense, 0, SIZEOF(RequestSense_T) );
+
CDB[0] = SC_COM_RES; /* READ ELEMENT STATUS */
- CDB[1] = VolTag | type | lun; /* Element Type Code, VolTag, LUN */
+ CDB[1] = (u_char)(VolTag | type | lun); /* Element Type Code, VolTag, LUN */
MSB2(&CDB[2], StartAddress); /* Starting Element Address */
MSB2(&CDB[4], NoOfElements); /* Number Of Element */
- CDB[6] = 0; /* Reserved */
- MSB3(&CDB[7],DataBufferLength); /* Allocation Length */
- CDB[10] = 0; /* Reserved */
- CDB[11] = 0; /* Control */
-
- ret = SCSI_Run(DeviceFD, Input, CDB, 12,
- *data, DataBufferLength,
- (char *)pRequestSense, sizeof(RequestSense_T));
-
-
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus : (2) SCSI_Run %d\n", ret);
+ CDB[6] = 0; /* Reserved */
+ MSB3(&CDB[7],DataBufferLength); /* Allocation Length */
+ CDB[10] = 0; /* Reserved */
+ CDB[11] = 0; /* Control */
+
+ ret = SCSI_Run(DeviceFD, Input, CDB, 12,
+ *data, DataBufferLength,
+ pRequestSense, SIZEOF(RequestSense_T));
+
+
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ReadElementStatus : (2) SCSI_Run %d\n"), ret);
if (ret < 0)
{
- DecodeSense(pRequestSense, "SCSI_ReadElementStatus :",debug_file);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP SCSI_ReadElementStatus (%d)\n",ret);
+ DecodeSense(pRequestSense, _("SCSI_ReadElementStatus :"),debug_file);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP SCSI_ReadElementStatus (%d)\n"),ret);
return(ret);
+ /*NOTRACHED*/
}
if ( ret > 0)
{
- switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, (char *)pRequestSense))
+ switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey, pRequestSense->AdditionalSenseCode, pRequestSense->AdditionalSenseCodeQualifier, pRequestSense))
{
case SENSE_IGNORE:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_IGNORE\n");
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_IGNORE\n"));
retry = 0;
break;
case SENSE_RETRY:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : SENSE_RETRY no %d\n", retry);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : SENSE_RETRY no %d\n"), retry);
sleep(2);
break;
default:
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ModeSense : end %d\n", pRequestSense->SenseKey);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("SCSI_ModeSense : end %d\n"), pRequestSense->SenseKey);
return(pRequestSense->SenseKey);
- break;
+ /*NOTREACHED*/
}
}
retry++;
if (retry > 0)
{
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP SCSI_ReadElementStatus (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP SCSI_ReadElementStatus (%d)\n"),ret);
return(ret);
+ /*NOTRACHED*/
}
-
+
dump_hex(*data, DataBufferLength, DEBUG_INFO, SECTION_SCSI);
- DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### STOP SCSI_ReadElementStatus (%d)\n",ret);
+ DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP SCSI_ReadElementStatus (%d)\n"),ret);
return(ret);
}
{
va_list argp;
char buf[1024];
- extern changer_t chg;
- int dlevel,dsection;
-
- time_t ti;
+ int dlevel;
+ int dsection = -1;
+ time_t ti = time(NULL);
- time(&ti);
- if (chg.debuglevel)
+ if (changer->debuglevel)
{
- sscanf(chg.debuglevel,"%d:%d", &dlevel, &dsection);
+ if (sscanf(changer->debuglevel,"%d:%d", &dlevel, &dsection) != 2) {
+ dbprintf(_("Parse error: line is '%s' expected [0-9]*:[0-9]*\n"),
+ changer->debuglevel);
+ dlevel=1;
+ dsection=1;
+ }
} else {
dlevel=1;
dsection=1;
}
arglist_start(argp, fmt);
- vsnprintf(buf, sizeof(buf), fmt, argp);
+ g_vsnprintf(buf, SIZEOF(buf), fmt, argp);
if (dlevel >= level)
{
if (section == dsection || dsection == 0)
{
- if (index(buf, '\n') != NULL && strlen(buf) > 1)
+ if (strchr(buf, '\n') != NULL && strlen(buf) > 1)
{
- dbprintf(("%ld:%s", (long)ti, buf));
+ dbprintf(_("%ld:%s"), (long)ti, buf);
} else {
- dbprintf(("%s", buf));
+ dbprintf("%s", buf);
}
}
}
- arglist_end(argp);
-
+ arglist_end(argp);
}