Imported Upstream version 2.6.1
[debian/amanda] / changer-src / scsi-changer-driver.c
index c9dad844638e9e2beda7edbf7530d45645c1ac6e..d53c804457ec7783a13a35c86869a24c23c45cd9 100644 (file)
@@ -1,55 +1,20 @@
-#ifndef lint
-static char rcsid[] = "$Id: scsi-changer-driver.c,v 1.49 2006/03/16 00:20:53 paddy_s 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);
@@ -58,84 +23,91 @@ int DLT448ElementStatus(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, size_t MTE, size_t DTE, size_t STE);
 
-int SCSI_AlignElements(int DeviceFD, int MTE, int DTE, int 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_ModeSense(int DeviceFD, u_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);
+                    u_char *buffer,
+                    u_char length,
+                    u_char save,
+                    u_char mode,
+                    u_char lun);
 
 int SCSI_ReadElementStatus(int DeviceFD,
-                           unsigned char type,
-                           unsigned char lun,
-                           unsigned char VolTag,
+                           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,
@@ -198,7 +170,7 @@ ChangerCMD_T ChangerIO[] = {
    "HP Auto Loader [C1553A]",
    GenericMove,
    GenericElementStatus,
-   DoNothing,
+   DoNothing1,
    GenericFree,
    GenericEject,
    GenericClean,
@@ -245,10 +217,10 @@ ChangerCMD_T ChangerIO[] = {
    GenericSenseHandler},
   {"EXB-85058HE-0000",
    "Exabyte Tape [EXB-85058HE-0000]",
-   DoNothing,
-   DoNothing,
-   DoNothing,
-   DoNothing,
+   DoNothing3,
+   DoNothing2,
+   DoNothing1,
+   DoNothing0,
    GenericEject,
    GenericClean,
    GenericRewind,
@@ -374,10 +346,10 @@ ChangerCMD_T ChangerIO[] = {
    GenericSenseHandler},
   {"DLT8000",
    "DLT Tape [DLT8000]",
-   DoNothing,
-   DoNothing,
-   DoNothing,
-   DoNothing,
+   DoNothing3,
+   DoNothing2,
+   DoNothing1,
+   DoNothing0,
    DLT4000Eject,
    GenericClean,
    GenericRewind,
@@ -386,10 +358,10 @@ ChangerCMD_T ChangerIO[] = {
    GenericSenseHandler},
   {"DLT7000",
    "DLT Tape [DLT7000]",
-   DoNothing,
-   DoNothing,
-   DoNothing,
-   DoNothing,
+   DoNothing3,
+   DoNothing2,
+   DoNothing1,
+   DoNothing0,
    DLT4000Eject,
    GenericClean,
    GenericRewind,
@@ -398,17 +370,29 @@ ChangerCMD_T ChangerIO[] = {
    GenericSenseHandler},
   {"DLT4000",
    "DLT Tape [DLT4000]",
-   DoNothing,
-   DoNothing,
-   DoNothing,
-   DoNothing,
+   DoNothing3,
+   DoNothing2,
+   DoNothing1,
+   DoNothing0,
    DLT4000Eject,
    GenericClean,
    GenericRewind,
    NoBarCode,
    GenericSearch,
    GenericSenseHandler},
-  {NULL, NULL, NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
+  {"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}
 };
 
 
@@ -446,10 +430,10 @@ int LibModeSenseValid = 0;          /* Set if we did an scussefull MODE SENSE */
 
 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
@@ -459,15 +443,47 @@ ElementInfo_T *pMTE = NULL; /*Medium Transport Element */
 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_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
  */
@@ -477,7 +493,8 @@ char *chgscsi_result = NULL;          /* Needed for the result string of MapBarC
  * 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();
@@ -487,34 +504,41 @@ void ChangerDriverVersion()
  * 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++)
     {
@@ -522,7 +546,7 @@ void PrintConf()
        {
          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;
            }
        }
@@ -537,24 +561,30 @@ void PrintConf()
     {
       pDev[count].functions->function_status(count, 1);
     } else {
-      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(_("changerdev ???       # Ups nothing found. Please check the docs\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
@@ -567,10 +597,11 @@ void PrintConf()
        {
          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;
            }
        }
@@ -579,25 +610,32 @@ void PrintConf()
 
   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");
-    }
-      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);
+      g_printf(_(
+       "startuse         ??? # Which is the first slot to use\n"
+       "                     #\n"));
+      g_printf(_(
+       "enduse           ??? # Which is the last slot to use.\n"));
+    }
+    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>");
+  }
 
-  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(_("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);
 }
 
 
@@ -622,28 +660,33 @@ void PrintConf()
  * 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 *result;                 /* Used to store the result of MapBarCode */
-  int barcode;                  /* cache the result from the BarCode function */
+  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 */
 
-  DebugPrint(DEBUG_INFO,SECTION_MAP_BARCODE, "##### START Inventory\n");
-  if ((pbarcoderes = malloc(sizeof(MBC_T))) == NULL)
-    {
-      DebugPrint(DEBUG_ERROR, SECTION_MAP_BARCODE,"##### malloc failed (-1)\n");
-      return;
-    }
-  memset(pbarcoderes, 0 , sizeof(MBC_T));
+  (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);
@@ -661,7 +704,7 @@ void Inventory(char *labelfile, int drive, int eject, int start, int stop, int c
     {
       if (eject)
        {
-         eject_tape("", eject);
+         (void)eject_tape("", eject);
        }
       (void)unload(INDEX_TAPE, 0, 0);
     }
@@ -670,7 +713,7 @@ void Inventory(char *labelfile, int drive, int eject, int start, int stop, int c
 
   for (x = 0; x < STE; x++)
     {
-      if (x == clean)
+      if (x == (size_t)clean)
        {
          continue;
        }
@@ -681,7 +724,7 @@ void Inventory(char *labelfile, int drive, int eject, int start, int stop, int c
        */
       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;
        }
 
@@ -692,32 +735,34 @@ void Inventory(char *labelfile, int drive, int eject, int start, int stop, int c
 
       SCSI_CloseDevice(INDEX_TAPE);
 
-      if ((result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_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, chgscsi_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);
 }
 
@@ -725,44 +770,52 @@ void Inventory(char *labelfile, int drive, int eject, int start, int stop, int c
  * 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);
+  DebugPrint(DEBUG_INFO,SECTION_TAPE,_("##### STOP get_clean_state [%d]\n"), ret);
   return(ret);
 }
 
@@ -772,69 +825,87 @@ int get_clean_state(char *tapedev)
  * 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*/
         }
     }
 
@@ -850,18 +921,23 @@ int find_empty(int fd, int start, int count)
       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);
 }
 
 /*
@@ -872,30 +948,35 @@ int find_empty(int fd, int start, int count)
  * 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);
 }
 
 
@@ -906,22 +987,22 @@ int drive_loaded(int fd, int drivenum)
  * 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;
 
-  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);
-  if ((pbarcoderes = malloc(sizeof(MBC_T))) == NULL)
-    {
-      DebugPrint(DEBUG_ERROR, SECTION_TAPE,"##### malloc failed (-1)\n");
-      return(-1);
-    }
-  memset(pbarcoderes, 0, sizeof(MBC_T));
+  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));
 
   /*
    * If the Element Status is not valid try to
@@ -931,18 +1012,17 @@ int unload(int fd, int drive, int slot)
     {
       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
@@ -950,10 +1030,11 @@ int unload(int fd, int drive, int slot)
    */
   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*/
     }
 
   /*
@@ -962,22 +1043,24 @@ int unload(int fd, int drive, int slot)
    */
   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);
     }
 
 
@@ -986,9 +1069,9 @@ int unload(int fd, int drive, int 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) {
@@ -1009,16 +1092,24 @@ int unload(int fd, int drive, int slot)
   /*
    * 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*/
     }
 
   /*
@@ -1026,14 +1117,14 @@ int unload(int fd, int drive, int slot)
    * 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
@@ -1041,27 +1132,29 @@ int unload(int fd, int drive, int 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);
 }
@@ -1077,32 +1170,32 @@ int unload(int fd, int drive, int slot)
  * 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 */
   int ret;
   extern OpenFiles_T *pDev;
   extern int do_inventory;
   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);
-  if ((pbarcoderes = malloc(sizeof(MBC_T))) == NULL)
-    {
-      DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### malloc failed (-1)\n");
-      return(-1);
-    }
-  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*/
               }
       }
 
@@ -1112,40 +1205,44 @@ int load(int fd, int drive, int slot)
    * 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);
@@ -1155,16 +1252,17 @@ int load(int fd, int drive, int slot)
    */
   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) {
@@ -1185,14 +1283,15 @@ int load(int fd, int drive, int slot)
    * Did we get an error from tape_rdlabel
    * if no update the vol/label mapping
    */
-  if (result  == NULL && chg.labelfile != NULL && chgscsi_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, chgscsi_label);
+      strncpy(pbarcoderes->data.voltag, chgscsi_label,
+             SIZEOF(pbarcoderes->data.voltag));
       pbarcoderes->data.slot = 0;
       pbarcoderes->data.from = 0;
       pbarcoderes->data.LoadCount = 0;
@@ -1204,45 +1303,49 @@ int load(int fd, int drive, int slot)
        * 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);
 }
@@ -1252,24 +1355,26 @@ int load(int fd, int drive, int slot)
  * 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
    */
-
 }
 
 
@@ -1278,26 +1383,29 @@ int get_slot_count(int fd)
  * 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);
 }
 
 /*
@@ -1309,14 +1417,24 @@ int get_drive_count(int fd)
  * 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);
+  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);
@@ -1331,22 +1449,25 @@ int OpenDevice(int ip , char *DeviceName, char *ConfigName, char *ident)
               {
                 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++;
           }
@@ -1355,22 +1476,25 @@ int OpenDevice(int ip , char *DeviceName, char *ConfigName, char *ident)
       /* 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");
+  pDev[ip].functions = NULL;
+  DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### STOP OpenDevice (nothing found) !!\n"));
   return(0);
 }
 
@@ -1379,18 +1503,20 @@ int OpenDevice(int ip , char *DeviceName, char *ConfigName, char *ident)
  * 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);
 }
 
@@ -1402,15 +1528,18 @@ int BarCode(int fd)
  * 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
@@ -1436,7 +1565,7 @@ int Tape_Ready(int fd, int wait_time)
 
   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
@@ -1450,33 +1579,30 @@ int Tape_Ready(int fd, int wait_time)
            {
              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");
+         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*/
 
-       } 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");
-         return(0);
        }
+       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
@@ -1487,103 +1613,116 @@ int Tape_Ready(int fd, int wait_time)
    * 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");
-             free(pRequestSense);
+             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++;
     }
 
-  DebugPrint(DEBUG_INFO, SECTION_TAPE,"Tape_Ready after %d sec\n", cnt);
-  DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP Tape_Ready\n");
-  free(pRequestSense);
+  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);
 
@@ -1593,20 +1732,20 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
    */
   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;
     }
 
@@ -1622,14 +1761,14 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
           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;
@@ -1637,18 +1776,18 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
           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;
@@ -1656,22 +1795,22 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
           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++;
@@ -1680,43 +1819,43 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
           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++;
@@ -1731,243 +1870,293 @@ int DecodeModeSense(char *buffer, int offset, char *pstring, char block, FILE *o
           /*           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);
 }
 
-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);
+  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 DoNothing()
+int
+DoNothing0(void)
 {
-  dbprintf(("##### START DoNothing\n"));
+  dbprintf(_("##### START DoNothing\n"));
   return(0);
 }
 
-int GenericFree()
+int
+DoNothing1(
+    int                unused1)
 {
-  dbprintf(("##### START GenericFree\n"));
+  (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
+DoNothing3(
+    int                unused1,
+    int                unused2,
+    int                unused3)
+{
+  (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(void)
+{
+  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));
+      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);
+      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 = NULL;
+  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;
@@ -1978,28 +2167,25 @@ int EXB_BarCode(int DeviceFD)
     {
       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;
@@ -2008,53 +2194,66 @@ int EXB_BarCode(int DeviceFD)
                */
               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);
+            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;
+  (void)DeviceFD;      /* Quiet unused parameter warning */
 
-  DebugPrint(DEBUG_INFO, SECTION_BARCODE,"##### START GenericBarCode\n");
-  if ( chg.havebarcode  >= 1)
+  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);
 }
 
@@ -2069,15 +2268,16 @@ int SenseHandler(int DeviceFD, unsigned char flag, unsigned char SenseKey, unsig
  * 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;
-  RequestSense_T *pRequestSense = NULL;
+  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
@@ -2086,63 +2286,69 @@ int TapeStatus()
    */
   if (pDev[INDEX_TAPECTL].SCSI == 1)
     {
-      if ((pRequestSense = malloc(sizeof(RequestSense_T))) == NULL)
-       {
-         dbprintf(("%-20s : malloc failed\n","TapeStatus"));
-         return(-1);
-       }
+      pRequestSense = alloc(SIZEOF(RequestSense_T));
+      memset(pRequestSense, 0, SIZEOF(RequestSense_T));
 
-      while (true && cnt < 60)
+      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 {
@@ -2150,17 +2356,20 @@ int TapeStatus()
       if ( ret & TAPE_ONLINE)
        {
          pDTE[0].status ='F';
-         DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### FULL\n");
+         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;
 
@@ -2168,113 +2377,110 @@ int DLT4000Eject(char *Device, int type)
   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"));
 
-  if ((pExtendedRequestSense = malloc(sizeof(ExtendedRequestSense_T))) == NULL)
-    {
-      dbprintf(("%-20s : malloc failed\n","DLT4000Eject"));
-      free(pRequestSense);
-      return(-1);
-    }
+  pRequestSense = alloc(SIZEOF(RequestSense_T));
+  pExtendedRequestSense = alloc(SIZEOF(ExtendedRequestSense_T));
 
   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));
+  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);
+  DecodeExtSense(pExtendedRequestSense, _("DLT4000Eject : "), debug_file);
   /* Unload the tape, 0 ==  wait for success
    * 0 == unload
    */
   ret = SCSI_LoadUnload(INDEX_TAPECTL, pRequestSense, 0, 0);
 
   RequestSense(INDEX_TAPECTL, pExtendedRequestSense, 0);
-  DecodeExtSense(pExtendedRequestSense, "DLT4000Eject : ", debug_file);
+  DecodeExtSense(pExtendedRequestSense, _("DLT4000Eject : "), debug_file);
 
   /* < 0 == fatal */
   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);
+             /*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);
+         /*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;
        }
 
@@ -2282,7 +2488,7 @@ int DLT4000Eject(char *Device, int type)
       sleep(2);
     }
 
-  dbprintf(("DLT4000Eject : Ready after %d sec, true = %d\n", cnt * 2, true));
+  dbprintf(_("DLT4000Eject : Ready after %d sec, done = %d\n"), cnt * 2, done);
 
   free(pExtendedRequestSense);
   free(pRequestSense);
@@ -2298,23 +2504,25 @@ int DLT4000Eject(char *Device, int type)
  * 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;
+  int done;
 
-  DebugPrint(DEBUG_INFO, SECTION_TAPE, "##### START GenericEject\n");
+  (void)Device;        /* Quiet unused parameter warning */
+  (void)type;  /* Quiet unused parameter warning */
 
-  if ((pRequestSense = malloc(sizeof(RequestSense_T))) == NULL)
-    {
-      DebugPrint(DEBUG_ERROR, SECTION_TAPE, "%-20s : malloc failed\n","GenericEject");
-      return(-1);
-    }
+  DebugPrint(DEBUG_INFO, SECTION_TAPE, _("##### START GenericEject\n"));
 
-  DebugPrint(DEBUG_INFO, SECTION_TAPE,"GenericEject : SCSI eject on %s = %s\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);
 
   /*
@@ -2331,65 +2539,70 @@ int GenericEject(char *Device, int type)
 
       /* < 0 == fatal */
       if (ret < 0) {
+        DebugPrint(DEBUG_INFO, SECTION_SCSI,"GenericEject SCSI_LoadUnload failed\n");
        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, "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);
+                 /*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);
+             /*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);
        }
     } 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);
 }
@@ -2404,17 +2617,18 @@ int GenericEject(char *Device, int type)
  * -1 -> error
  * 0  -> success
  */
-int GenericRewind(int DeviceFD)
+int
+GenericRewind(
+    int                DeviceFD)
 {
   CDB_T CDB;
   extern OpenFiles_T *pDev;
-  RequestSense_T *pRequestSense = NULL;
-  char *errstr;                    /* Used by tape_rewind */
+  RequestSense_T *pRequestSense;
   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);
 
 
   /*
@@ -2423,83 +2637,82 @@ int GenericRewind(int 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;
@@ -2508,87 +2721,87 @@ int GenericRewind(int DeviceFD)
       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));
+                        pRequestSense,
+                        SIZEOF(RequestSense_T));
 
-         DecodeSense(pRequestSense, "GenericRewind : ", debug_file);
+         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");
-             free(pRequestSense);
+             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;
            }
 
@@ -2598,29 +2811,20 @@ int GenericRewind(int DeviceFD)
 
       amfree(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");
+      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");
+      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);
        }
-      /* We don't retry if it fails; that is left to the vtape driver. */
-      if ((errstr = tape_rewind(pDev[DeviceFD].dev)) == NULL) {
-          true = 0;
-          DebugPrint(DEBUG_INFO, SECTION_TAPE,"Rewind OK,\n", cnt);
-      } else {
-          DebugPrint(DEBUG_ERROR, SECTION_TAPE,"Rewind failed %s\n",errstr);
-          DebugPrint(DEBUG_INFO, SECTION_TAPE,"##### STOP GenericRewind (-1)\n");
-         amfree(pRequestSense);
-          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"));
     }
 
-  amfree(pRequestSense);
   return(0);
 }
 
@@ -2630,18 +2834,23 @@ int GenericRewind(int DeviceFD)
  * 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*/
       }
 
   /*
@@ -2650,33 +2859,99 @@ int GenericClean(char * Device)
   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;
+  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_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");
+  DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START GenericResetStatus\n"));
 
-  if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
-      {
-          DebugPrint(DEBUG_ERROR, SECTION_ELEMENT, "GenericResetStatus : malloc failed\n");
-          return(-1);
-      }
+  pRequestSense = alloc(SIZEOF(RequestSense_T));
 
   while (retry)
     {
@@ -2690,54 +2965,56 @@ int GenericResetStatus(int DeviceFD)
 
       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);
 }
@@ -2756,25 +3033,31 @@ int GenericResetStatus(int DeviceFD)
  * 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;
+  int ret;
+  char *info = NULL;
 
-  dbprintf(("##### START GenericSenseHandler\n"));
+  dbprintf(_("##### START GenericSenseHandler\n"));
 
-  DecodeSense(pRequestSense, "GenericSenseHandler : ", debug_file);
+  DecodeSense(pRequestSense, _("GenericSenseHandler : "), debug_file);
 
   ret = Sense2Action(pDev[ip].ident,
                     pDev[ip].inquiry->type,
                     flag, SenseKey,
                     AdditionalSenseCode,
                     AdditionalSenseCodeQualifier,
-                    (char **)&info);
+                    &info);
 
-  dbprintf(("##### STOP GenericSenseHandler\n"));
+  dbprintf(_("##### STOP GenericSenseHandler: %s\n"), _(info));
   return(ret);
 }
 
@@ -2790,42 +3073,49 @@ int GenericSenseHandler(int ip, int flag, unsigned char SenseKey, unsigned char
  *                 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,_("##### START SDXMove\n"));
 
-  DebugPrint(DEBUG_INFO, SECTION_MOVE,"%-20s : from = %d, to = %d\n", "SDXMove", from, to);
+  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')
     {
-      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')
@@ -2835,20 +3125,22 @@ int SDXMove(int DeviceFD, int from, int to)
          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:
@@ -2889,16 +3181,18 @@ int SDXMove(int DeviceFD, int from, int to)
   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*/
   }
 
   /*
@@ -2919,14 +3213,15 @@ int SDXMove(int DeviceFD, int from, int to)
     }
   }
 
-  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);
 }
 
@@ -2940,54 +3235,63 @@ int SDXMove(int DeviceFD, int from, int to)
  *                 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, _("##### START GenericMove\n"));
 
-  DebugPrint(DEBUG_INFO, SECTION_MOVE, "%-20s : from = %d, to = %d\n", "GenericMove", from, to);
+  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')
     {
-      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')
     {
-      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*/
         }
     }
 
@@ -2996,8 +3300,8 @@ int GenericMove(int DeviceFD, int from, int to)
       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);
 }
 
@@ -3009,45 +3313,48 @@ int GenericMove(int DeviceFD, int from, int to)
  * 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;
@@ -3056,34 +3363,34 @@ int CheckMove(ElementInfo_T *from, ElementInfo_T *to)
                  }
                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;
@@ -3092,34 +3399,34 @@ int CheckMove(ElementInfo_T *from, ElementInfo_T *to)
                  }
                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;
@@ -3128,34 +3435,34 @@ int CheckMove(ElementInfo_T *from, ElementInfo_T *to)
                  }
                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;
@@ -3167,30 +3474,36 @@ int CheckMove(ElementInfo_T *from, ElementInfo_T *to)
                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)
@@ -3198,6 +3511,7 @@ int GetCurrentSlot(int fd, int drive)
       if (pDev[0].functions->function_status(0, 1) != 0)
         {
           return(-1);
+         /*NOTREACHED*/
         }
     }
 
@@ -3208,14 +3522,18 @@ int GetCurrentSlot(int fd, int drive)
         {
           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 */
@@ -3233,21 +3551,25 @@ int GetCurrentSlot(int fd, int drive)
  * 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 */
+
+  (void)InitStatus;    /* Quiet unused parameter warning */
 
-  DebugPrint(DEBUG_INFO, SECTION_ELEMENT, "##### START GenericElementStatus\n");
+  DebugPrint(DEBUG_INFO, SECTION_ELEMENT, _("##### START GenericElementStatus\n"));
 
   if (pEAAPage == NULL)
     {
@@ -3258,39 +3580,35 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
        */
       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*/
                }
            }
        }
@@ -3299,16 +3617,16 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3316,27 +3634,18 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
 
       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*/
                }
            }
        }
@@ -3345,16 +3654,16 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3369,8 +3678,9 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
          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;
        }
@@ -3384,7 +3694,7 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
           */
          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);
            }
        }
@@ -3393,12 +3703,13 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
 
   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);
 }
 
@@ -3407,21 +3718,22 @@ int GenericElementStatus(int DeviceFD, int InitStatus)
  * 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)
     {
@@ -3432,39 +3744,34 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
        */
       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*/
                }
            }
        }
@@ -3473,16 +3780,15 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3494,23 +3800,17 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
           * 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*/
                }
            }
        }
@@ -3519,16 +3819,16 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3543,8 +3843,9 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
          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;
        }
@@ -3558,7 +3859,7 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
           */
          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);
            }
        }
@@ -3567,12 +3868,13 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
 
   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);
 }
 
@@ -3582,18 +3884,18 @@ int DLT448ElementStatus(int DeviceFD, int InitStatus)
  * 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)
     {
@@ -3604,40 +3906,35 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
        */
       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*/
                }
            }
        }
@@ -3646,16 +3943,15 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3663,23 +3959,17 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
 
       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*/
                }
            }
        }
@@ -3688,18 +3978,17 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
        {
          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*/
                }
            }
        }
@@ -3714,8 +4003,9 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
          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*/
            }
        }
 
@@ -3724,13 +4014,14 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
 
   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);
 }
 
@@ -3749,23 +4040,24 @@ int SDXElementStatus(int DeviceFD, int InitStatus)
  *
  * 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;
+  size_t x;
+  size_t offset;
+  size_t length;       /* Length of an Element */
+  size_t NoOfElements;
 
-  DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"##### START GetElementStatus\n");
+  DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("##### START GetElementStatus\n"));
 
   barcode = BarCode(DeviceFD);
 
@@ -3774,39 +4066,35 @@ int GetElementStatus(int DeviceFD)
    */
   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)
         {
-          free(pMTE);
           MTE = V2(pEAAPage->NoMediumTransportElements) ;
-          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);
 
           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)
             {
-             free(pMTE);
-             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++)
             {
@@ -3823,21 +4111,26 @@ int GetElementStatus(int DeviceFD)
               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)
@@ -3849,10 +4142,12 @@ int GetElementStatus(int DeviceFD)
                      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;
             }
+           free(DataBuffer);
+           DataBuffer = NULL;
         }
       /*
        * Storage Elements
@@ -3861,34 +4156,30 @@ int GetElementStatus(int DeviceFD)
         {
           free(pSTE);
           STE = V2(pEAAPage->NoStorageElements);
-          if ((pSTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * STE)) == NULL)
-            {
-              DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
-             free(pMTE);
-              return(-1);
-            }
-          memset(pSTE, 0, sizeof(ElementInfo_T) * STE);
+          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)
             {
-             free(DataBuffer);
-              ChgExit("GetElementStatus", "Can't read STE status", FATAL);
+              ChgExit("GetElementStatus", _("Can't read STE status"), FATAL);
+             /*NOTREACHED*/
             }
+         assert(DataBuffer != NULL);
 
-          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,"STE Length %d\n",length);
+          DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("STE Length %d\n"),length);
 
           for (x = 0; x < STE; x++)
             {
@@ -3905,21 +4196,26 @@ int GetElementStatus(int DeviceFD)
               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)
@@ -3931,12 +4227,13 @@ int GetElementStatus(int DeviceFD)
                      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;
             }
-
+           free(DataBuffer);
+           DataBuffer = NULL;
         }
       /*
        * Import/Export Elements
@@ -3945,37 +4242,30 @@ int GetElementStatus(int DeviceFD)
         {
           free(pIEE);
           IEE = V2(pEAAPage->NoImportExportElements);
-          if ((pIEE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * IEE)) == NULL)
-            {
-                DebugPrint(DEBUG_INFO, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
-               free(DataBuffer);
-                return(-1);
-            }
-          memset(pIEE, 0, sizeof(ElementInfo_T) * IEE);
+          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*/
             }
+         assert(DataBuffer != NULL);
 
-          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,"IEE Length %d\n",length);
+          DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("IEE Length %d\n"),length);
 
           for (x = 0; x < IEE; x++)
             {
@@ -3990,21 +4280,26 @@ int GetElementStatus(int DeviceFD)
               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)
@@ -4016,12 +4311,13 @@ int GetElementStatus(int DeviceFD)
                      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;
             }
-
+           free(DataBuffer);
+           DataBuffer = NULL;
         }
       /*
        * Data Transfer Elements
@@ -4030,34 +4326,30 @@ int GetElementStatus(int DeviceFD)
         {
          free(pDTE);
           DTE = V2(pEAAPage->NoDataTransferElements) ;
-          if ((pDTE = (ElementInfo_T *)malloc(sizeof(ElementInfo_T) * DTE)) == NULL)
-            {
-              DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GenericElementStatus : malloc failed\n");
-             free(DataBuffer);
-              return(-1);
-            }
-          memset(pDTE, 0, sizeof(ElementInfo_T) * DTE);
+          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)
             {
-             free(DataBuffer);
-              ChgExit("GenericElementStatus", "Can't read DTE status", FATAL);
+              ChgExit("GenericElementStatus", _("Can't read DTE status"), FATAL);
+             /*NOTREACHED*/
             }
+         assert(DataBuffer != NULL);
 
-          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,"DTE Length %d\n",length);
+          DebugPrint(DEBUG_INFO, SECTION_ELEMENT,_("DTE Length %d\n"),length);
 
           for (x = 0; x < DTE; x++)
             {
@@ -4073,21 +4365,26 @@ int GetElementStatus(int DeviceFD)
              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)
@@ -4099,50 +4396,43 @@ int GetElementStatus(int DeviceFD)
                      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;
             }
+           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");
+      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);
-         free(DataBuffer);
-          return(1);
-        }
+      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)
@@ -4150,13 +4440,8 @@ int GetElementStatus(int DeviceFD)
             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");
-                 free(DataBuffer);
-                  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++)
                 {
@@ -4171,22 +4456,26 @@ int GetElementStatus(int DeviceFD)
                   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)
@@ -4198,7 +4487,7 @@ int GetElementStatus(int DeviceFD)
                          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;
@@ -4207,13 +4496,8 @@ int GetElementStatus(int DeviceFD)
             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");
-                 free(DataBuffer);
-                  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++)
                 {
@@ -4229,21 +4513,26 @@ int GetElementStatus(int DeviceFD)
                   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)
@@ -4255,7 +4544,7 @@ int GetElementStatus(int DeviceFD)
                          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;
@@ -4264,13 +4553,8 @@ int GetElementStatus(int DeviceFD)
             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");
-                 free(DataBuffer);
-                  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++)
                 {
@@ -4286,21 +4570,26 @@ int GetElementStatus(int DeviceFD)
                   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)
@@ -4312,7 +4601,7 @@ int GetElementStatus(int DeviceFD)
                          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;
@@ -4321,13 +4610,8 @@ int GetElementStatus(int DeviceFD)
             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");
-                 free(DataBuffer);
-                  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++)
                 {
@@ -4343,21 +4627,26 @@ int GetElementStatus(int DeviceFD)
                   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)
@@ -4369,7 +4658,7 @@ int GetElementStatus(int DeviceFD)
                          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;
@@ -4377,43 +4666,43 @@ int GetElementStatus(int DeviceFD)
               break;
             default:
               offset = offset + length;
-              DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"GetElementStatus : UnGknown Type %d\n",ElementStatusPage->type);
+              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);
 }
 
@@ -4424,43 +4713,52 @@ int GetElementStatus(int DeviceFD)
  *
  * 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");
+  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;                 /*  */
+  CDB[4] = (u_char)sizeof(ExtendedRequestSense_T);   /* Allocation Length */
+  CDB[5] = (u_char)((ClearErrorCounters << 7) & 0x80); /*  */
 
-  memset(ExtendedRequestSense, 0, sizeof(ExtendedRequestSense_T));
+  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);
 }
 
@@ -4470,11 +4768,13 @@ int RequestSense(int DeviceFD, ExtendedRequestSense_T *ExtendedRequestSense, int
  */
 
 
-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)
     {
@@ -4482,8 +4782,9 @@ ElementInfo_T *LookupElement(int address)
         {
           if (pDTE[x].address == address)
          {
-            dbprintf(("##### STOP LookupElement (DTE)\n"));
+            dbprintf(_("##### STOP LookupElement (DTE)\n"));
             return(&pDTE[x]);
+           /*NOTREACHED*/
          }
         }
     }
@@ -4494,8 +4795,9 @@ ElementInfo_T *LookupElement(int address)
         {
           if (pMTE[x].address == address)
          {
-            dbprintf(("##### STOP LookupElement (MTE)\n"));
+            dbprintf(_("##### STOP LookupElement (MTE)\n"));
             return(&pMTE[x]);
+           /*NOTREACHED*/
          }
         }
     }
@@ -4506,8 +4808,9 @@ ElementInfo_T *LookupElement(int address)
         {
           if (pSTE[x].address == address)
          {
-            dbprintf(("##### STOP LookupElement (STE)\n"));
+            dbprintf(_("##### STOP LookupElement (STE)\n"));
             return(&pSTE[x]);
+           /*NOTREACHED*/
          }
         }
     }
@@ -4518,13 +4821,15 @@ ElementInfo_T *LookupElement(int address)
         {
           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
  *
@@ -4532,7 +4837,9 @@ ElementInfo_T *LookupElement(int address)
  * Fix the result handling from TestUnitReady
  *
  */
-int LogSense(DeviceFD)
+int
+LogSense(
+    int                DeviceFD)
 {
   extern OpenFiles_T *pDev;
   CDB_T CDB;
@@ -4543,33 +4850,31 @@ int LogSense(DeviceFD)
   int found;
   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) && (pDev[INDEX_TAPECTL].SCSI == 1) &&
       ((StatFile = fopen(tapestatfile,"a")) != NULL))
     {
-      if ((pRequestSense = (RequestSense_T *)malloc(sizeof(RequestSense_T))) == NULL)
-        {
-          DebugPrint(DEBUG_ERROR, SECTION_TAPE,"LogSense : malloc failed\n");
-             fclose(StatFile);
-              return(-1);
-        }
+      pRequestSense = alloc(SIZEOF(RequestSense_T));
 
       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);
          fclose(StatFile);
           return(0);
+         /*NOTREACHED*/
         }
       /*
        * Try to read the tape label
@@ -4583,19 +4888,13 @@ int LogSense(DeviceFD)
 
          if ((chgscsi_result = (char *)tape_rdlabel(pDev[INDEX_TAPE].dev, &chgscsi_datestamp, &chgscsi_label)) == NULL)
            {
-             fprintf(StatFile, "==== %s ==== %s ====\n", chgscsi_datestamp, chgscsi_label);
+             g_fprintf(StatFile, _("==== %s ==== %s ====\n"), chgscsi_datestamp, chgscsi_label);
            } else {
-             fprintf(StatFile, "%s\n", chgscsi_result);
+             g_fprintf(StatFile, "%s\n", chgscsi_result);
            }
        }
 
-      if ((buffer = (char *)malloc(size)) == NULL)
-        {
-          DebugPrint(DEBUG_ERROR, SECTION_TAPE,"LogSense : malloc failed\n");
-          free(pRequestSense);
-         fclose(StatFile);
-          return(-1);
-        }
+      buffer = alloc(size);
       memset(buffer, 0, size);
       /*
        * Get the known log pages
@@ -4611,38 +4910,32 @@ int LogSense(DeviceFD)
       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)
+                              pRequestSense,
+                              SIZEOF(RequestSense_T)) != 0)
         {
           DecodeSense(pRequestSense, "LogSense : ",debug_file);
           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");
-          free(pRequestSense);
-         free(buffer);
-         fclose(StatFile);
-          return(-1);
-        }
+      logpages = alloc(nologpages);
 
-      memcpy(logpages, buffer + sizeof(LogSenseHeader_T), nologpages);
+      memcpy(logpages, buffer + SIZEOF(LogSenseHeader_T), nologpages);
 
-      for (count = 0; count < nologpages; count++) {
+      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;
@@ -4653,8 +4946,8 @@ int LogSense(DeviceFD)
           if (SCSI_Run(INDEX_TAPECTL, Input, CDB, 10,
                                   buffer,
                                   size,
-                                  (char *)pRequestSense,
-                                  sizeof(RequestSense_T)) != 0)
+                                  pRequestSense,
+                                  SIZEOF(RequestSense_T)) != 0)
             {
               DecodeSense(pRequestSense, "LogSense : ",debug_file);
               free(pRequestSense);
@@ -4662,61 +4955,62 @@ int LogSense(DeviceFD)
               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++;
           }
 
           if (!found) {
-            fprintf(StatFile, "Logpage No %d = %x\n", count ,logpages[count]);
+            g_fprintf(StatFile, _("Logpage No %d = %x\n"), count ,logpages[count]);
 
-            while ((char *)LogParameter < (buffer + length)) {
+            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");
           }
         }
       }
@@ -4736,40 +5030,48 @@ int LogSense(DeviceFD)
       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)
+                              pRequestSense,
+                              SIZEOF(RequestSense_T)) != 0)
         {
           DecodeSense(pRequestSense, "LogSense : ",debug_file);
           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);
 
@@ -4777,217 +5079,237 @@ void WriteErrorCountersPage(LogParameter_T *buffer, int length)
     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:
@@ -4997,21 +5319,21 @@ void EXB85058HEPage3c(LogParameter_T *buffer, int length)
       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:
@@ -5022,8 +5344,8 @@ void EXB85058HEPage3c(LogParameter_T *buffer, int length)
       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:
@@ -5031,80 +5353,99 @@ void EXB85058HEPage3c(LogParameter_T *buffer, int length)
       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);
@@ -5114,42 +5455,42 @@ void ChangerReplay(char *option)
 /*
  * 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;
 
   ChangerCMD_T *p = (ChangerCMD_T *)&ChangerIO;
-  if ((pbarcoderes = malloc(sizeof(MBC_T))) == NULL)
-    {
-      printf("malloc failed \n");
-      return;
-    }
-  memset(pbarcoderes, 0, sizeof(MBC_T));
+  pbarcoderes = alloc(SIZEOF(MBC_T));
+  memset(pbarcoderes, 0, SIZEOF(MBC_T));
 
-  if ((pModePage == NULL) && ((pModePage = (char *)malloc(0xff)) == NULL))
-    {
-      DebugPrint(DEBUG_ERROR, SECTION_ELEMENT,"##### malloc failed (-1)\n");
-      printf("malloc failed \n");
-      free(pbarcoderes);
-      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();
@@ -5161,46 +5502,48 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
           {
             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);
        }
 
@@ -5208,27 +5551,28 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
         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);
        }
 
@@ -5236,56 +5580,58 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
         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);
        }
 
@@ -5295,23 +5641,23 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
     {
       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");
+          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");
+          g_printf("\n");
+          g_printf(_("Sense Status from tape (tapectl):\n"));
           RequestSense(INDEX_TAPECTL, &ExtRequestSense, 0);
           DecodeExtSense(&ExtRequestSense, "", out);
         }
@@ -5319,7 +5665,7 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
 
     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);
@@ -5330,7 +5676,7 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
       {
         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);
@@ -5340,39 +5686,44 @@ void ChangerStatus(char *option, char * labelfile, int HasBarCode, char *changer
 
     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++;
@@ -5380,18 +5731,27 @@ void dump_hex(char *p, int size, int level, int section)
     DebugPrint(level, section,"\n");
 }
 
-void TerminateString(char *string, int length)
+void
+TerminateString(
+    char *     string,
+    size_t     length)
 {
-  int x;
+  ssize_t x;
 
-  for (x = length; x >= 0 && !isalnum((int)string[x]); 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);
+    (void)level;       /* Quiet unused parameter warning */
+
+   dbprintf(_("ChgExit in %s, reason %s\n"), where, reason);
+   g_fprintf(stderr,"%s\n",reason);
    exit(2);
 }
 
@@ -5406,72 +5766,78 @@ void ChgExit(char *where, char *reason, int level)
  * 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)
@@ -5481,12 +5847,13 @@ int SCSI_Run(int DeviceFD,
       }
     }
 
-  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;
@@ -5502,52 +5869,52 @@ int SCSI_Run(int DeviceFD,
                                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++;
@@ -5557,30 +5924,31 @@ int SCSI_Run(int DeviceFD,
   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)
+int
+SCSI_AlignElements(
+    int                DeviceFD,
+    size_t     AE_MTE,
+    size_t     AE_DTE,
+    size_t     AE_STE)
 {
   RequestSense_T *pRequestSense;
   int retry;
   CDB_T CDB;
-  int ret = -1;
+  int ret;
   int i;
 
-  DebugPrint(DEBUG_INFO, SECTION_SCSI,"##### START SCSI_AlignElements\n");
+  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);
-    }
+  pRequestSense = alloc(SIZEOF(RequestSense_T));
 
   for (retry = 0; retry < MAX_RETRIES; retry++)
     {
@@ -5595,58 +5963,65 @@ int SCSI_AlignElements(int DeviceFD, int AE_MTE, int AE_DTE, int AE_STE)
       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,_("%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*/
         }
     }
-  DebugPrint(DEBUG_ERROR, SECTION_SCSI,"SCSI_AlignElements :"
-            "Retries exceeded = %d\n", retry);
+  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;
@@ -5654,13 +6029,9 @@ int SCSI_Move(int DeviceFD, unsigned char chm, int from, int to)
   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));
 
   for (retry = 0; (ret != 0) && (retry < MAX_RETRIES); retry++)
     {
@@ -5676,56 +6047,62 @@ int SCSI_Move(int DeviceFD, unsigned char chm, int from, int to)
       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_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*/
             }
         }
     }
-  dbprintf(("SCSI_Move : end %d\n", 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;
@@ -5737,24 +6114,29 @@ int SCSI_LoadUnload(int DeviceFD, RequestSense_T *pRequestSense, unsigned char b
 
   ret = SCSI_Run(DeviceFD, Input, CDB, 6,
                             NULL, 0,
-                            (char *) pRequestSense,
-                            sizeof(RequestSense_T));
+                            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;
@@ -5764,17 +6146,18 @@ int SCSI_TestUnitReady(int DeviceFD, RequestSense_T *pRequestSense)
   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
    */
   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*/
     }
 
   /*
@@ -5783,69 +6166,70 @@ int SCSI_TestUnitReady(int DeviceFD, RequestSense_T *pRequestSense)
    */
   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 = -1;
-  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 retry;
+  u_char *sendbuf;
 
+  dbprintf(_("##### START SCSI_ModeSelect\n"));
 
-  if ((sendbuf = (char *)malloc(length + 4)) == NULL)
-    {
-      dbprintf(("SCSI_ModeSelect : malloc failed\n"));
-      free(pRequestSense);
-      return(-1);
-    }
-
-  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);
 
   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,
                                 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));
-         free(pRequestSense);
-         free(sendbuf);
-          return(ret);
+          dbprintf(_("SCSI_ModeSelect : ret %d\n"), ret);
+         goto done;
+          /*NOTREACHED*/
         }
 
       if ( ret > 0)
@@ -5853,27 +6237,27 @@ int SCSI_ModeSelect(int DeviceFD, char *buffer, unsigned char length, unsigned c
           switch(SenseHandler(DeviceFD, 0, pRequestSense->SenseKey,
                              pRequestSense->AdditionalSenseCode,
                              pRequestSense->AdditionalSenseCodeQualifier,
-                             (char *)pRequestSense))
+                             pRequestSense))
             {
             case SENSE_IGNORE:
-              dbprintf(("SCSI_ModeSelect : SENSE_IGNORE\n"));
-             free(pRequestSense);
-             free(sendbuf);
-              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));
-             free(pRequestSense);
-             free(sendbuf);
-              return(pRequestSense->SenseKey);
-              break;
+             ret = pRequestSense->SenseKey;
+             goto end;
             }
         }
     }
-  dbprintf(("SCSI_ModeSelect end: %d\n", ret));
+end:
+  dbprintf(_("SCSI_ModeSelect end: %d\n"), ret);
+
+done:
   free(pRequestSense);
   free(sendbuf);
   return(ret);
@@ -5881,25 +6265,27 @@ int SCSI_ModeSelect(int DeviceFD, char *buffer, unsigned char length, unsigned c
 
 
 
-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;
@@ -5911,54 +6297,57 @@ int SCSI_ModeSense(int DeviceFD, char *buffer, u_char size, u_char byte1, u_char
       ret = SCSI_Run(DeviceFD, Input, CDB, 6,
                                 buffer,
                                 size,
-                                (char *) pRequestSense,
-                                sizeof(RequestSense_T));
+                                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)
     {
@@ -5967,51 +6356,53 @@ int SCSI_Inquiry(int DeviceFD, SCSIInquiry_T *buffer, u_char size)
       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,
                                 buffer,
                                 size,
-                                (char *) pRequestSense,
-                            sizeof(RequestSense_T));
+                                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,_("%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);
+         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);
 }
 
@@ -6026,65 +6417,55 @@ int SCSI_Inquiry(int DeviceFD, SCSIInquiry_T *buffer, u_char size)
  * 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");
+  DebugPrint(DEBUG_INFO, SECTION_SCSI,_("##### START SCSI_ReadElementStatus\n"));
 
-  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);
-    }
+  pRequestSense = alloc(SIZEOF(RequestSense_T));
 
   /*
    * 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 */
@@ -6094,32 +6475,32 @@ int SCSI_ReadElementStatus(int DeviceFD,
 
          ret = SCSI_Run(DeviceFD, Input, CDB, 12,
                         *data, 8,
-                        (char *)pRequestSense, sizeof(RequestSense_T));
-
+                        pRequestSense, SIZEOF(RequestSense_T));
 
-         DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus : (1) SCSI_Run %d\n", ret);
+         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++;
@@ -6130,14 +6511,15 @@ int SCSI_ReadElementStatus(int DeviceFD,
        }
       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 */
@@ -6145,16 +6527,16 @@ int SCSI_ReadElementStatus(int DeviceFD,
     }
 
   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 */
@@ -6164,32 +6546,33 @@ int SCSI_ReadElementStatus(int DeviceFD,
 
       ret = SCSI_Run(DeviceFD, Input, CDB, 12,
                                 *data, DataBufferLength,
-                                (char *)pRequestSense, sizeof(RequestSense_T));
+                                pRequestSense, SIZEOF(RequestSense_T));
 
 
-      DebugPrint(DEBUG_INFO, SECTION_SCSI,"SCSI_ReadElementStatus : (2) SCSI_Run %d\n", ret);
+      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++;
@@ -6201,12 +6584,13 @@ int SCSI_ReadElementStatus(int DeviceFD,
 
   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);
 }
 
@@ -6214,31 +6598,34 @@ printf_arglist_function2(void DebugPrint, int, level, int, section, char *, fmt)
 {
   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)
           {
-            dbprintf(("%ld:%s", (long)ti, buf));
+            dbprintf(_("%ld:%s"), (long)ti, buf);
          } else {
-            dbprintf(("%s", buf));
+            dbprintf("%s", buf);
          }
        }
     }