diff --git a/sm5/smartctl.c b/sm5/smartctl.c
index b68e93cdf6fcfbff494220b9a40bad0e302bfcc5..90619ec5a6046a750b731555b3dafc486a77afa7 100644
--- a/sm5/smartctl.c
+++ b/sm5/smartctl.c
@@ -38,7 +38,7 @@
 #include "scsiprint.h"
 
 extern const char *CVSid1, *CVSid2, *CVSid4, *CVSid5; 
-const char* CVSid6="$Id: smartctl.c,v 1.18 2002/10/24 08:46:03 ballen4705 Exp $"
+const char* CVSid6="$Id: smartctl.c,v 1.19 2002/10/24 13:36:37 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID4 CVSID5 CVSID6;
 
 unsigned char driveinfo               = FALSE;
@@ -158,37 +158,37 @@ void printcopy(){
 void Usage ( void){
   printf("Usage: smartctl -[options] [device]\n");
   printf("\nRead Only Options:\n");
-  printf("   %c   Show version, copyright and license info\n", PRINTCOPYLEFT);
-  printf("   %c   Show all S.M.A.R.T. Information         (ATA and SCSI)\n",  SMARTVERBOSEALL);
-  printf("   %c   Show S.M.A.R.T. Drive Info              (ATA and SCSI)\n",  DRIVEINFO);
-  printf("   %c   Show S.M.A.R.T. Status                  (ATA and SCSI)\n",  CHECKSMART);
-  printf("   %c   Show S.M.A.R.T. General Attributes      (ATA Only)\n",  GENERALSMARTVALUES);
-  printf("   %c   Show S.M.A.R.T. Vendor Attributes       (ATA Only)\n",  SMARTVENDORATTRIB);
-  printf("   %c   Show S.M.A.R.T. Drive Error Log         (ATA Only\n",   SMARTERRORLOG);
-  printf("   %c   Show S.M.A.R.T. Drive Self Test Log     (ATA Only)\n",  SMARTSELFTESTLOG);
-  printf("   %c   Quiet: only show SMART drive errors     (ATA Only)\n",  QUIETMODE);
-  printf("   %c   Very Quiet: no display, use exit status (ATA Only)\n",  VERYQUIETMODE);
+  printf("  %c  Show version, copyright and license info\n", PRINTCOPYLEFT);
+  printf("  %c  Show all SMART Information              (ATA/SCSI)\n",SMARTVERBOSEALL);
+  printf("  %c  Show SMART Drive Info                   (ATA/SCSI)\n",DRIVEINFO);
+  printf("  %c  Show SMART Status                       (ATA/SCSI)\n",CHECKSMART);
+  printf("  %c  Show SMART General Attributes           (ATA Only)\n",    GENERALSMARTVALUES);
+  printf("  %c  Show SMART Vendor Attributes            (ATA Only)\n",    SMARTVENDORATTRIB);
+  printf("  %c  Show SMART Drive Error Log              (ATA Only\n",     SMARTERRORLOG);
+  printf("  %c  Show SMART Drive Self Test Log          (ATA Only)\n",    SMARTSELFTESTLOG);
+  printf("  %c  Quiet: only show SMART drive errors     (ATA Only)\n",    QUIETMODE);
+  printf("  %c  Very Quiet: no display, use exit status (ATA Only)\n",    VERYQUIETMODE);
   printf("\nVendor-specific Display Options:\n");
-  printf("   %c   Raw Attribute 009 is minutes            (ATA Only)\n",  SMART009MINUTES);
+  printf("  %c  Raw Attribute 009 is minutes            (ATA Only)\n",    SMART009MINUTES);
   printf("\nEnable/Disable Options:\n");
-  printf("   %c   Enable  S.M.A.R.T. data collection    (ATA and SCSI)\n",SMARTENABLE);
-  printf("   %c   Disable S.M.A.R.T. data collection    (ATA and SCSI)\n",SMARTDISABLE);
-  printf("   %c   Enable  S.M.A.R.T. Automatic Offline Test (ATA Only)\n",SMARTAUTOOFFLINEENABLE);
-  printf("   %c   Disable S.M.A.R.T. Automatic Offline Test (ATA Only)\n",SMARTAUTOOFFLINEDISABLE);
-  printf("   %c   Enable  S.M.A.R.T. Attribute Autosave     (ATA Only)\n",SMARTAUTOSAVEENABLE);
-  printf("   %c   Disable S.M.A.R.T. Attribute Autosave     (ATA Only)\n",SMARTAUTOSAVEDISABLE);
+  printf("  %c  Enable  SMART data collection           (ATA/SCSI)\n",SMARTENABLE);
+  printf("  %c  Disable SMART data collection           (ATA/SCSI)\n",SMARTDISABLE);
+  printf("  %c  Enable  SMART Automatic Offline Test    (ATA Only)\n",    SMARTAUTOOFFLINEENABLE);
+  printf("  %c  Disable SMART Automatic Offline Test    (ATA Only)\n",    SMARTAUTOOFFLINEDISABLE);
+  printf("  %c  Enable  SMART Attribute Autosave        (ATA Only)\n",    SMARTAUTOSAVEENABLE);
+  printf("  %c  Disable SMART Attribute Autosave        (ATA Only)\n",    SMARTAUTOSAVEDISABLE);
   printf("\nTest Options (no more than one):\n");
-  printf("   %c   Execute Off-line data collection (ATA Only)\n",          SMARTEXEOFFIMMEDIATE);
-  printf("   %c   Execute Short Self Test (ATA Only)\n",                   SMARTSHORTSELFTEST );
-  printf("   %c   Execute Short Self Test (Captive Mode) (ATA Only)\n",    SMARTSHORTCAPSELFTEST );
-  printf("   %c   Execute Extended Self Test (ATA Only)\n",                SMARTEXTENDSELFTEST );
-  printf("   %c   Execute Extended Self Test (Captive Mode) (ATA Only)\n", SMARTEXTENDCAPSELFTEST );
-  printf("   %c   Execute Self Test Abort (ATA Only)\n",                 SMARTSELFTESTABORT );
+  printf("  %c  Execute Off-line data collection        (ATA Only)\n",    SMARTEXEOFFIMMEDIATE);
+  printf("  %c  Execute Short Self Test                 (ATA Only)\n",    SMARTSHORTSELFTEST );
+  printf("  %c  Execute Short Self Test (Captive Mode)  (ATA Only)\n",    SMARTSHORTCAPSELFTEST );
+  printf("  %c  Execute Extended Self Test              (ATA Only)\n",    SMARTEXTENDSELFTEST );
+  printf("  %c  Execute Extended Self Test (Captive)    (ATA Only)\n",    SMARTEXTENDCAPSELFTEST );
+  printf("  %c  Execute Self Test Abort                 (ATA Only)\n",    SMARTSELFTESTABORT );
   printf("\nExamples:\n");
-  printf("   smartctl -etf /dev/hda  (Enables S.M.A.R.T. on first disk)\n");
-  printf("   smartctl -a   /dev/hda  (Prints all S.M.A.R.T. information)\n");
-  printf("   smartctl -X   /dev/hda  (Executes extended disk self-test)\n");
-  printf("   smartctl -qvL /dev/hda  (Print self-test log and vendor attributes errors.)\n");
+  printf("  smartctl -etf /dev/hda  (Enables SMART on first disk)\n");
+  printf("  smartctl -a   /dev/hda  (Prints all SMART information)\n");
+  printf("  smartctl -X   /dev/hda  (Executes extended disk self-test)\n");
+  printf("  smartctl -qvL /dev/hda  (Prints Self-Test & Attribute errors.)\n");
 }
 
 const char opts[] = { 
@@ -197,7 +197,7 @@ const char opts[] = {
   SMARTENABLE, SMARTAUTOOFFLINEENABLE, SMARTAUTOOFFLINEDISABLE,
   SMARTEXEOFFIMMEDIATE, SMARTSHORTSELFTEST, SMARTEXTENDSELFTEST, 
   SMARTSHORTCAPSELFTEST, SMARTEXTENDCAPSELFTEST, SMARTSELFTESTABORT,
-  SMARTAUTOSAVEENABLE,SMARTAUTOSAVEDISABLE,PRINTCOPYLEFT,SMART009MINUTES,QUIETMODE,VERYQUIETMODE,'\0'
+  SMARTAUTOSAVEENABLE,SMARTAUTOSAVEDISABLE,PRINTCOPYLEFT,SMART009MINUTES,QUIETMODE,VERYQUIETMODE,'h','?','\0'
 };
 
 /*      Takes command options and sets features to be run */	
@@ -289,6 +289,13 @@ void ParseOpts (int argc, char** argv){
       smartselftestabort = TRUE;
       testcase=ABORT_SELF_TEST;
       break;
+    case 'h':
+    case '?':
+      veryquietmode=FALSE;
+      printslogan();
+      Usage();
+      exit(0);	
+      break;
     default:
       veryquietmode=FALSE;
       pout("\n");
diff --git a/sm5/smartctl.cpp b/sm5/smartctl.cpp
index 78da1b54775e02ed47c007e143f193d5a3ec7777..3e2e2d8e151514308f3a1c2a7ae1cac5c2707ee7 100644
--- a/sm5/smartctl.cpp
+++ b/sm5/smartctl.cpp
@@ -38,7 +38,7 @@
 #include "scsiprint.h"
 
 extern const char *CVSid1, *CVSid2, *CVSid4, *CVSid5; 
-const char* CVSid6="$Id: smartctl.cpp,v 1.18 2002/10/24 08:46:03 ballen4705 Exp $"
+const char* CVSid6="$Id: smartctl.cpp,v 1.19 2002/10/24 13:36:37 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID4 CVSID5 CVSID6;
 
 unsigned char driveinfo               = FALSE;
@@ -158,37 +158,37 @@ void printcopy(){
 void Usage ( void){
   printf("Usage: smartctl -[options] [device]\n");
   printf("\nRead Only Options:\n");
-  printf("   %c   Show version, copyright and license info\n", PRINTCOPYLEFT);
-  printf("   %c   Show all S.M.A.R.T. Information         (ATA and SCSI)\n",  SMARTVERBOSEALL);
-  printf("   %c   Show S.M.A.R.T. Drive Info              (ATA and SCSI)\n",  DRIVEINFO);
-  printf("   %c   Show S.M.A.R.T. Status                  (ATA and SCSI)\n",  CHECKSMART);
-  printf("   %c   Show S.M.A.R.T. General Attributes      (ATA Only)\n",  GENERALSMARTVALUES);
-  printf("   %c   Show S.M.A.R.T. Vendor Attributes       (ATA Only)\n",  SMARTVENDORATTRIB);
-  printf("   %c   Show S.M.A.R.T. Drive Error Log         (ATA Only\n",   SMARTERRORLOG);
-  printf("   %c   Show S.M.A.R.T. Drive Self Test Log     (ATA Only)\n",  SMARTSELFTESTLOG);
-  printf("   %c   Quiet: only show SMART drive errors     (ATA Only)\n",  QUIETMODE);
-  printf("   %c   Very Quiet: no display, use exit status (ATA Only)\n",  VERYQUIETMODE);
+  printf("  %c  Show version, copyright and license info\n", PRINTCOPYLEFT);
+  printf("  %c  Show all SMART Information              (ATA/SCSI)\n",SMARTVERBOSEALL);
+  printf("  %c  Show SMART Drive Info                   (ATA/SCSI)\n",DRIVEINFO);
+  printf("  %c  Show SMART Status                       (ATA/SCSI)\n",CHECKSMART);
+  printf("  %c  Show SMART General Attributes           (ATA Only)\n",    GENERALSMARTVALUES);
+  printf("  %c  Show SMART Vendor Attributes            (ATA Only)\n",    SMARTVENDORATTRIB);
+  printf("  %c  Show SMART Drive Error Log              (ATA Only\n",     SMARTERRORLOG);
+  printf("  %c  Show SMART Drive Self Test Log          (ATA Only)\n",    SMARTSELFTESTLOG);
+  printf("  %c  Quiet: only show SMART drive errors     (ATA Only)\n",    QUIETMODE);
+  printf("  %c  Very Quiet: no display, use exit status (ATA Only)\n",    VERYQUIETMODE);
   printf("\nVendor-specific Display Options:\n");
-  printf("   %c   Raw Attribute 009 is minutes            (ATA Only)\n",  SMART009MINUTES);
+  printf("  %c  Raw Attribute 009 is minutes            (ATA Only)\n",    SMART009MINUTES);
   printf("\nEnable/Disable Options:\n");
-  printf("   %c   Enable  S.M.A.R.T. data collection    (ATA and SCSI)\n",SMARTENABLE);
-  printf("   %c   Disable S.M.A.R.T. data collection    (ATA and SCSI)\n",SMARTDISABLE);
-  printf("   %c   Enable  S.M.A.R.T. Automatic Offline Test (ATA Only)\n",SMARTAUTOOFFLINEENABLE);
-  printf("   %c   Disable S.M.A.R.T. Automatic Offline Test (ATA Only)\n",SMARTAUTOOFFLINEDISABLE);
-  printf("   %c   Enable  S.M.A.R.T. Attribute Autosave     (ATA Only)\n",SMARTAUTOSAVEENABLE);
-  printf("   %c   Disable S.M.A.R.T. Attribute Autosave     (ATA Only)\n",SMARTAUTOSAVEDISABLE);
+  printf("  %c  Enable  SMART data collection           (ATA/SCSI)\n",SMARTENABLE);
+  printf("  %c  Disable SMART data collection           (ATA/SCSI)\n",SMARTDISABLE);
+  printf("  %c  Enable  SMART Automatic Offline Test    (ATA Only)\n",    SMARTAUTOOFFLINEENABLE);
+  printf("  %c  Disable SMART Automatic Offline Test    (ATA Only)\n",    SMARTAUTOOFFLINEDISABLE);
+  printf("  %c  Enable  SMART Attribute Autosave        (ATA Only)\n",    SMARTAUTOSAVEENABLE);
+  printf("  %c  Disable SMART Attribute Autosave        (ATA Only)\n",    SMARTAUTOSAVEDISABLE);
   printf("\nTest Options (no more than one):\n");
-  printf("   %c   Execute Off-line data collection (ATA Only)\n",          SMARTEXEOFFIMMEDIATE);
-  printf("   %c   Execute Short Self Test (ATA Only)\n",                   SMARTSHORTSELFTEST );
-  printf("   %c   Execute Short Self Test (Captive Mode) (ATA Only)\n",    SMARTSHORTCAPSELFTEST );
-  printf("   %c   Execute Extended Self Test (ATA Only)\n",                SMARTEXTENDSELFTEST );
-  printf("   %c   Execute Extended Self Test (Captive Mode) (ATA Only)\n", SMARTEXTENDCAPSELFTEST );
-  printf("   %c   Execute Self Test Abort (ATA Only)\n",                 SMARTSELFTESTABORT );
+  printf("  %c  Execute Off-line data collection        (ATA Only)\n",    SMARTEXEOFFIMMEDIATE);
+  printf("  %c  Execute Short Self Test                 (ATA Only)\n",    SMARTSHORTSELFTEST );
+  printf("  %c  Execute Short Self Test (Captive Mode)  (ATA Only)\n",    SMARTSHORTCAPSELFTEST );
+  printf("  %c  Execute Extended Self Test              (ATA Only)\n",    SMARTEXTENDSELFTEST );
+  printf("  %c  Execute Extended Self Test (Captive)    (ATA Only)\n",    SMARTEXTENDCAPSELFTEST );
+  printf("  %c  Execute Self Test Abort                 (ATA Only)\n",    SMARTSELFTESTABORT );
   printf("\nExamples:\n");
-  printf("   smartctl -etf /dev/hda  (Enables S.M.A.R.T. on first disk)\n");
-  printf("   smartctl -a   /dev/hda  (Prints all S.M.A.R.T. information)\n");
-  printf("   smartctl -X   /dev/hda  (Executes extended disk self-test)\n");
-  printf("   smartctl -qvL /dev/hda  (Print self-test log and vendor attributes errors.)\n");
+  printf("  smartctl -etf /dev/hda  (Enables SMART on first disk)\n");
+  printf("  smartctl -a   /dev/hda  (Prints all SMART information)\n");
+  printf("  smartctl -X   /dev/hda  (Executes extended disk self-test)\n");
+  printf("  smartctl -qvL /dev/hda  (Prints Self-Test & Attribute errors.)\n");
 }
 
 const char opts[] = { 
@@ -197,7 +197,7 @@ const char opts[] = {
   SMARTENABLE, SMARTAUTOOFFLINEENABLE, SMARTAUTOOFFLINEDISABLE,
   SMARTEXEOFFIMMEDIATE, SMARTSHORTSELFTEST, SMARTEXTENDSELFTEST, 
   SMARTSHORTCAPSELFTEST, SMARTEXTENDCAPSELFTEST, SMARTSELFTESTABORT,
-  SMARTAUTOSAVEENABLE,SMARTAUTOSAVEDISABLE,PRINTCOPYLEFT,SMART009MINUTES,QUIETMODE,VERYQUIETMODE,'\0'
+  SMARTAUTOSAVEENABLE,SMARTAUTOSAVEDISABLE,PRINTCOPYLEFT,SMART009MINUTES,QUIETMODE,VERYQUIETMODE,'h','?','\0'
 };
 
 /*      Takes command options and sets features to be run */	
@@ -289,6 +289,13 @@ void ParseOpts (int argc, char** argv){
       smartselftestabort = TRUE;
       testcase=ABORT_SELF_TEST;
       break;
+    case 'h':
+    case '?':
+      veryquietmode=FALSE;
+      printslogan();
+      Usage();
+      exit(0);	
+      break;
     default:
       veryquietmode=FALSE;
       pout("\n");