diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index 59bf5e8bf423cfed9f799e877ff645297c922eee..4972d691f48f65f725002ac1a8f7e7e5c331d2b0 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.16 2002/10/23 14:35:42 ballen4705 Exp $
+$Id: CHANGELOG,v 1.17 2002/10/24 07:50:45 ballen4705 Exp $
 
 Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 
@@ -29,6 +29,8 @@ NOTES FOR NEXT RELEASE:
 
 smartmontools-5.0-11
 
+    Changed name of -p (print version) option to -V
+
     Minor change in philosophy: if a SMART command fails or the device
     appears incapable of a SMART command that the user has asked for,
     complain by printing an error message, but go ahead and try
diff --git a/sm5/Makefile b/sm5/Makefile
index ae1a2281d846d9ff4d44f7ec36091ca56b386fcf..994316e08a71c853c38c50a8267dfe0da48ef682 100644
--- a/sm5/Makefile
+++ b/sm5/Makefile
@@ -2,7 +2,7 @@
 #
 # Home page: http://smartmontools.sourceforge.net
 #
-# $Id: Makefile,v 1.20 2002/10/22 08:43:22 ballen4705 Exp $
+# $Id: Makefile,v 1.21 2002/10/24 07:50:45 ballen4705 Exp $
 #
 # Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 # 
@@ -99,5 +99,5 @@ release: $(releasefiles)
 	mv /usr/src/redhat/SRPMS/$(pkgname)*rpm .
 	rm -f /usr/src/redhat/SOURCES/$(pkgname).tar.gz
 	. cvs-script && cvs commit -m "release $(counter)"
-	. cvs-script && cvs tag "RELEASE_5_0_$(counter)"
+	. cvs-script && cvs tag -d "RELEASE_5_0_$(counter)" && cvs tag "RELEASE_5_0_$(counter)"
 	echo `hostname` | grep -q ballen && echo $(newcounter) > VERSION
diff --git a/sm5/README b/sm5/README
index 711a3ccacea74118de7bf55aa950140bc23ca1b2..2694b6c4e92810f6c78bfb41efa962f97d4052b0 100644
--- a/sm5/README
+++ b/sm5/README
@@ -100,7 +100,7 @@ to run smartctl, use the syntax
 See the man page for full details.  A summary of the options is:
 
 Read only:
-p       Print License/Copyright information.
+V       Print License/Copyright information.
 i       Checks if the device supports S.M.A.R.T, and prints drive model
         information.
 c       Checks if device has any S.M.A.R.T. Warranty Failures.  This means
@@ -150,8 +150,7 @@ for SCSI the devices are usually
 Examples:
   smartctl -e /dev/hda     - enables SMART on hard drive
   smartctl -c /dev/sda     - checks status of hard drive.
-  smartd                   - starts background daemon to
-                             monitor hard drive status
+
 
 smartd will scan for all devices that support SMART and poll them very
 thirty minutes for errors or for changes in attribute values. When an
@@ -159,6 +158,10 @@ error or attribute value change occurs, it sends log information to
 the SYSLOG facility.  Typically these messages and warnings appear in
 /var/log/messages.
 
+smartd                   - starts background daemon to
+                             monitor hard drive status
+You can read about the options using man smartd.
+
 
 == REFERENCES ==
 If you need help in understanding the output of smartctl, a good place
@@ -185,4 +188,4 @@ Fax: (408) 867-2115
 E-Mail: 250-1752@mcimail.com.
 
 
-$Id: README,v 1.8 2002/10/23 12:24:23 ballen4705 Exp $
+$Id: README,v 1.9 2002/10/24 07:50:45 ballen4705 Exp $
diff --git a/sm5/TODO b/sm5/TODO
index 5a4c8869ffa9bfb38f0b243203c64c59694566f6..6a5464433abe28cee25e3936885755bba0350fd2 100644
--- a/sm5/TODO
+++ b/sm5/TODO
@@ -4,7 +4,7 @@ Home page of code is: http://smartmontools.sourceforge.net
 
 Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 
-$Id: TODO,v 1.10 2002/10/23 15:19:55 ballen4705 Exp $
+$Id: TODO,v 1.11 2002/10/24 07:50:45 ballen4705 Exp $
 
 This program is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by the Free
@@ -34,6 +34,10 @@ Produce version for ATA/ATAPI-7
 Modifications
 -------------
 
+Change input command line from using current command line format
+(getopt) to getopt_long() for long input options.  This will be
+helpful in adding device specific options.
+
 Command line option to specify devices to look for in smartd startup
 
 Print flags meanings in Vendor Attribute list -- not hex value --
diff --git a/sm5/ataprint.c b/sm5/ataprint.c
index 3555732f2416e94edf2a32d61f96f46647474e46..af86a6b77e506174db2edce98b47cf0de97c541b 100644
--- a/sm5/ataprint.c
+++ b/sm5/ataprint.c
@@ -28,7 +28,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid4="$Id: ataprint.c,v 1.30 2002/10/23 20:36:59 ballen4705 Exp $"
+const char *CVSid4="$Id: ataprint.c,v 1.31 2002/10/24 07:50:45 ballen4705 Exp $"
 CVSID2 CVSID3 CVSID6;
 
 // Function for printing ASCII byte-swapped strings, skipping white
@@ -940,7 +940,7 @@ int ataPrintMain (int fd){
       smartautoofflineenable || smartautoofflinedisable)
     pout("\n");
 
-  // START OF READ-ONLY OPTIONS APART FROM -p and -i
+  // START OF READ-ONLY OPTIONS APART FROM -V and -i
   if (checksmart || generalsmartvalues || smartvendorattrib || smarterrorlog || smartselftestlog)
     pout("=== START OF READ SMART DATA SECTION ===\n");
   
@@ -954,8 +954,13 @@ int ataPrintMain (int fd){
       if (ataCheckSmart(smartval, smartthres,1)){
 	QUIETON;
 	returnval|=FAILATTR;
-	pout("Failed Attributes:\n");
-	PrintSmartAttribWithThres(smartval, smartthres,1);
+	if (smartvendorattrib)
+	  pout("See vendor-specific Attribute list for failed Attributes.\n\n");
+	else
+	  {
+	    pout("Failed Attributes:\n");
+	    PrintSmartAttribWithThres(smartval, smartthres,1);
+	  }
       }
       else
 	pout("No failed Attributes found.\n\n");   
@@ -966,8 +971,12 @@ int ataPrintMain (int fd){
       pout("SMART overall-health self-assessment test result: PASSED\n");
       if (ataCheckSmart(smartval, smartthres,0)){
 	QUIETON;
-	pout("Please note the following marginal attributes:\n");
-	PrintSmartAttribWithThres(smartval, smartthres,2);
+	if (smartvendorattrib)
+	  pout("See vendor-specific Attribute list for marginal Attributes.\n\n");
+	else {
+	  pout("Please note the following marginal attributes:\n");
+	  PrintSmartAttribWithThres(smartval, smartthres,2);
+	} 
 	returnval|=FAILAGE;
       }
       else
diff --git a/sm5/ataprint.cpp b/sm5/ataprint.cpp
index acf26c5bbc43b5e9e9843e5257d1b16fa7955f24..358b15d53f80949bc516243faf74d778ebdde902 100644
--- a/sm5/ataprint.cpp
+++ b/sm5/ataprint.cpp
@@ -28,7 +28,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid4="$Id: ataprint.cpp,v 1.30 2002/10/23 20:36:59 ballen4705 Exp $"
+const char *CVSid4="$Id: ataprint.cpp,v 1.31 2002/10/24 07:50:45 ballen4705 Exp $"
 CVSID2 CVSID3 CVSID6;
 
 // Function for printing ASCII byte-swapped strings, skipping white
@@ -940,7 +940,7 @@ int ataPrintMain (int fd){
       smartautoofflineenable || smartautoofflinedisable)
     pout("\n");
 
-  // START OF READ-ONLY OPTIONS APART FROM -p and -i
+  // START OF READ-ONLY OPTIONS APART FROM -V and -i
   if (checksmart || generalsmartvalues || smartvendorattrib || smarterrorlog || smartselftestlog)
     pout("=== START OF READ SMART DATA SECTION ===\n");
   
@@ -954,8 +954,13 @@ int ataPrintMain (int fd){
       if (ataCheckSmart(smartval, smartthres,1)){
 	QUIETON;
 	returnval|=FAILATTR;
-	pout("Failed Attributes:\n");
-	PrintSmartAttribWithThres(smartval, smartthres,1);
+	if (smartvendorattrib)
+	  pout("See vendor-specific Attribute list for failed Attributes.\n\n");
+	else
+	  {
+	    pout("Failed Attributes:\n");
+	    PrintSmartAttribWithThres(smartval, smartthres,1);
+	  }
       }
       else
 	pout("No failed Attributes found.\n\n");   
@@ -966,8 +971,12 @@ int ataPrintMain (int fd){
       pout("SMART overall-health self-assessment test result: PASSED\n");
       if (ataCheckSmart(smartval, smartthres,0)){
 	QUIETON;
-	pout("Please note the following marginal attributes:\n");
-	PrintSmartAttribWithThres(smartval, smartthres,2);
+	if (smartvendorattrib)
+	  pout("See vendor-specific Attribute list for marginal Attributes.\n\n");
+	else {
+	  pout("Please note the following marginal attributes:\n");
+	  PrintSmartAttribWithThres(smartval, smartthres,2);
+	} 
 	returnval|=FAILAGE;
       }
       else
diff --git a/sm5/smartctl.8 b/sm5/smartctl.8
index a5ae46a5f6a2e62350aee6501b0274e5fab38b5b..eeb22914a65a3ee73f9222e34ae43d96caab59a3 100644
--- a/sm5/smartctl.8
+++ b/sm5/smartctl.8
@@ -1,6 +1,6 @@
 \# Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 \#
-\# $Id: smartctl.8,v 1.16 2002/10/23 15:15:43 ballen4705 Exp $
+\# $Id: smartctl.8,v 1.17 2002/10/24 07:50:45 ballen4705 Exp $
 \# 
 \# This program is free software; you can redistribute it and/or modify it
 \# under the terms of the GNU General Public License as published by the Free
@@ -15,11 +15,11 @@
 \# at the Concurrent Systems Laboratory (now part of the Storage Systems
 \# Research Center), Jack Baskin School of Engineering, University of
 \# California, Santa Cruz. http://ssrc.soe.ucsc.edu/
-.TH SMARTCTL 8  "$Date: 2002/10/23 15:15:43 $" "smartmontools-5.0"
+.TH SMARTCTL 8  "$Date: 2002/10/24 07:50:45 $" "smartmontools-5.0"
 .SH NAME
 smartctl \- S.M.A.R.T. control utility 
 .SH SYNOPSIS
-.B smartctl \-[piqQaedtTfFcgvlLm[O|S|s|X|x|A]] device
+.B smartctl \-[ViqQaedtTfFcgvlLm[O|S|s|X|x|A]] device
 
 .SH DESCRIPTION
 .B smartctl
@@ -72,11 +72,11 @@ DATA, RUN/ABORT TESTS.
 .TP
 .B SHOW INFORMATION:
 .TP
-.B p
-Print: Prints version, Copyright, License, home page and CVS-id
+.B V
+Version: Prints version, Copyright, License, home page and CVS-id
 information for your copy of
 .B smartctl.
-Please include the CVS and version information if you are reporting
+Please include this information if you are reporting
 bugs or problems.
 .TP
 .B i
@@ -86,12 +86,11 @@ Says if the device supports S.M.A.R.T., and if so, whether
 S.M.A.R.T. support is currently enabled or disabled.
 .TP
 .B q
-Quiet mode: Only print: For the '\-l' option,
-errors recorded in the SMART error log; For the '\-L' option,
-errors recorded in the device self-test log; For the '\-c'
-SMART "disk failing" status or device attributes
-(pre-failure or usage) which failed either now or
-in the past; For the '\-v' option device attributes (pre-failure or usage)
+Quiet mode: Only print: For the '\-l' option, errors recorded in the
+SMART error log; For the '\-L' option, errors recorded in the device
+self-test log; For the '\-c' SMART "disk failing" status or device
+attributes (pre-failure or usage) which failed either now or in the
+past; For the '\-v' option device attributes (pre-failure or usage)
 which failed either now or in the past.
 .TP
 .B Q
@@ -441,4 +440,4 @@ Please let us know if there is an on\-line source for this document.
 
 .SH
 CVS ID OF THIS PAGE:
-$Id: smartctl.8,v 1.16 2002/10/23 15:15:43 ballen4705 Exp $
+$Id: smartctl.8,v 1.17 2002/10/24 07:50:45 ballen4705 Exp $
diff --git a/sm5/smartctl.h b/sm5/smartctl.h
index cf815644e7ae002199151f1f8aabd144de61653e..188c1db7ff91b007c4010c2481ca3cfd97e08479 100644
--- a/sm5/smartctl.h
+++ b/sm5/smartctl.h
@@ -26,7 +26,7 @@
 #define __SMARTCTL_H_
 
 #ifndef CVSID6
-#define CVSID6 "$Id: smartctl.h,v 1.9 2002/10/23 12:24:24 ballen4705 Exp $\n"
+#define CVSID6 "$Id: smartctl.h,v 1.10 2002/10/24 07:50:45 ballen4705 Exp $\n"
 #endif
 
 /* Defines for command line options */ 
@@ -49,7 +49,7 @@
 #define SMARTAUTOOFFLINEDISABLE 'T'
 #define SMARTAUTOSAVEENABLE     'f'
 #define SMARTAUTOSAVEDISABLE    'F'
-#define PRINTCOPYLEFT           'p'
+#define PRINTCOPYLEFT           'V'
 #define SMART009MINUTES         'm'
 #define QUIETMODE               'q'
 #define VERYQUIETMODE           'Q'
diff --git a/sm5/smartd.8 b/sm5/smartd.8
index 5fa159ac9c3102fa1438898900e72d3ff1948898..5bb6c5b6667462e3bdac9ecf06ecd0e69213c3c2 100644
--- a/sm5/smartd.8
+++ b/sm5/smartd.8
@@ -13,12 +13,12 @@
 \# at the Concurrent Systems Laboratory (now part of the Storage Systems
 \# Research Center), Jack Baskin School of Engineering, University of
 \# California, Santa Cruz. http://ssrc.soe.ucsc.edu/
-.TH SMARTD 8  "$Date: 2002/10/14 15:26:30 $" "smartmontools-5.0"
+.TH SMARTD 8  "$Date: 2002/10/24 07:50:45 $" "smartmontools-5.0"
 .SH NAME
 smartd \- S.M.A.R.T. Daemon
 .SH SYNOPSIS
 .B smartd  
-[\-pX\]
+[\-VX\]
 
 .SH DESCRIPTION
 .B smartd
@@ -61,11 +61,11 @@ messages are harmless.]
 OPTIONS
 .TP
 p
-Prints license, copyright, and version information onto STDOUT or into the SYSLOG
-log (normally /var/log/messages) and then exits.
+Version: Prints license, copyright, and CVS version information onto STDOUT or into the SYSLOG
+log (normally /var/log/messages) and then exits. Please include this information if you are reporting bugs.
 .TP
 X
-Runs smartd in "debug" mode. In this mode, it does not fork and
+eXamine: Runs smartd in "debug" mode. In this mode, it does not fork and
 displays status information to STDOUT.
 
 
@@ -178,4 +178,4 @@ Please let us know if there is an on\-line source for this document.
 
 .SH
 CVS ID OF THIS PAGE:
-$Id: smartd.8,v 1.7 2002/10/14 15:26:30 ballen4705 Exp $
+$Id: smartd.8,v 1.8 2002/10/24 07:50:45 ballen4705 Exp $
diff --git a/sm5/smartd.c b/sm5/smartd.c
index b0498622b1acfb5561b0a0c004d990ebd706772c..4ef4577c1e549e8206ecdea411e415bdfe596cc3 100644
--- a/sm5/smartd.c
+++ b/sm5/smartd.c
@@ -36,7 +36,7 @@
 #include "smartd.h"
 
 extern const char *CVSid1, *CVSid2;
-const char *CVSid3="$Id: smartd.c,v 1.15 2002/10/23 20:36:59 ballen4705 Exp $" 
+const char *CVSid3="$Id: smartd.c,v 1.16 2002/10/24 07:50:45 ballen4705 Exp $" 
 CVSID1 CVSID4 CVSID7;
 
 int daemon_init(void){
@@ -86,14 +86,19 @@ void pout(char *fmt, ...){
 }
 
 
-/* prints help information for command syntax */
-void Usage ( void){
-  printout(LOG_INFO,"smartd version %d.%d-%d - S.M.A.R.T. Daemon\n", 
+void printhead(){
+  printout(LOG_INFO,"smartd version %d.%d-%d - S.M.A.R.T. Daemon\n"
+	   "Home page is http://smartmontools.sourceforge.net\n\n",
            RELEASE_MAJOR, RELEASE_MINOR,SMARTMONTOOLS_VERSION);
-  printout(LOG_INFO,"usage: smartd -[opts] \n");
-  printout(LOG_INFO,"Read Only Commands:\n");
-  printout(LOG_INFO,"\t\t%c\t\tStart smartd in debug Mode\n",DEBUGMODE);
-  printout(LOG_INFO,"\t\t%c\t\tPrint License and Copyright information\n",PRINTCOPYLEFT);
+}
+
+/* prints help information for command syntax */
+void Usage (void){
+  printhead();
+  printout(LOG_INFO,"usage: smartd -[opts] \n\n");
+  printout(LOG_INFO,"Read Only Options:\n");
+  printout(LOG_INFO,"   %c  Start smartd in debug Mode\n",DEBUGMODE);
+  printout(LOG_INFO,"   %c  Print License, Copyright, and version information\n",PRINTCOPYLEFT);
 }
 	
 // scan to see what ata devices there are, and if they support SMART
@@ -354,9 +359,7 @@ void printone(const char *cvsid){
   return;
 }
 
-
 char copyleftstring[]=
-"Home page of smartd is " PROJECTHOME "\n\n"
 "smartd comes with ABSOLUTELY NO WARRANTY. This\n"
 "is free software, and you are welcome to redistribute it\n"
 "under the terms of the GNU General Public License Version 2.\n"
@@ -393,6 +396,7 @@ int main (int argc, char **argv){
     case '?':
     default:
       debugmode=1;
+      printout(LOG_INFO,"\n");
       Usage();
       exit(-1);	
     }
@@ -400,8 +404,7 @@ int main (int argc, char **argv){
   
   if (printcopyleft){
     debugmode=1;
-    printout(LOG_INFO,"smartd version %d.%d-%d Copyright (C) Bruce Allen 2002\n",
-		RELEASE_MAJOR,RELEASE_MINOR,SMARTMONTOOLS_VERSION);
+    printhead();
     printout(LOG_INFO,copyleftstring);
     printout(LOG_INFO,"CVS version IDs of files used to build this code are:\n");
     printone(CVSid3);
@@ -410,8 +413,7 @@ int main (int argc, char **argv){
     exit(0);
   }
   
-  printout(LOG_INFO,"smartd version %d.%d-%d Copyright (C) Bruce Allen 2002\n",
-		  RELEASE_MAJOR,RELEASE_MINOR,SMARTMONTOOLS_VERSION);
+  printhead();
   
   if (!debugmode){
     daemon_init();
diff --git a/sm5/smartd.cpp b/sm5/smartd.cpp
index a4080846a8982c767df8fb66672d6b04d119db05..2b23965f1c1fac7fd040d91e08f9165c34bc47cc 100644
--- a/sm5/smartd.cpp
+++ b/sm5/smartd.cpp
@@ -36,7 +36,7 @@
 #include "smartd.h"
 
 extern const char *CVSid1, *CVSid2;
-const char *CVSid3="$Id: smartd.cpp,v 1.15 2002/10/23 20:36:59 ballen4705 Exp $" 
+const char *CVSid3="$Id: smartd.cpp,v 1.16 2002/10/24 07:50:45 ballen4705 Exp $" 
 CVSID1 CVSID4 CVSID7;
 
 int daemon_init(void){
@@ -86,14 +86,19 @@ void pout(char *fmt, ...){
 }
 
 
-/* prints help information for command syntax */
-void Usage ( void){
-  printout(LOG_INFO,"smartd version %d.%d-%d - S.M.A.R.T. Daemon\n", 
+void printhead(){
+  printout(LOG_INFO,"smartd version %d.%d-%d - S.M.A.R.T. Daemon\n"
+	   "Home page is http://smartmontools.sourceforge.net\n\n",
            RELEASE_MAJOR, RELEASE_MINOR,SMARTMONTOOLS_VERSION);
-  printout(LOG_INFO,"usage: smartd -[opts] \n");
-  printout(LOG_INFO,"Read Only Commands:\n");
-  printout(LOG_INFO,"\t\t%c\t\tStart smartd in debug Mode\n",DEBUGMODE);
-  printout(LOG_INFO,"\t\t%c\t\tPrint License and Copyright information\n",PRINTCOPYLEFT);
+}
+
+/* prints help information for command syntax */
+void Usage (void){
+  printhead();
+  printout(LOG_INFO,"usage: smartd -[opts] \n\n");
+  printout(LOG_INFO,"Read Only Options:\n");
+  printout(LOG_INFO,"   %c  Start smartd in debug Mode\n",DEBUGMODE);
+  printout(LOG_INFO,"   %c  Print License, Copyright, and version information\n",PRINTCOPYLEFT);
 }
 	
 // scan to see what ata devices there are, and if they support SMART
@@ -354,9 +359,7 @@ void printone(const char *cvsid){
   return;
 }
 
-
 char copyleftstring[]=
-"Home page of smartd is " PROJECTHOME "\n\n"
 "smartd comes with ABSOLUTELY NO WARRANTY. This\n"
 "is free software, and you are welcome to redistribute it\n"
 "under the terms of the GNU General Public License Version 2.\n"
@@ -393,6 +396,7 @@ int main (int argc, char **argv){
     case '?':
     default:
       debugmode=1;
+      printout(LOG_INFO,"\n");
       Usage();
       exit(-1);	
     }
@@ -400,8 +404,7 @@ int main (int argc, char **argv){
   
   if (printcopyleft){
     debugmode=1;
-    printout(LOG_INFO,"smartd version %d.%d-%d Copyright (C) Bruce Allen 2002\n",
-		RELEASE_MAJOR,RELEASE_MINOR,SMARTMONTOOLS_VERSION);
+    printhead();
     printout(LOG_INFO,copyleftstring);
     printout(LOG_INFO,"CVS version IDs of files used to build this code are:\n");
     printone(CVSid3);
@@ -410,8 +413,7 @@ int main (int argc, char **argv){
     exit(0);
   }
   
-  printout(LOG_INFO,"smartd version %d.%d-%d Copyright (C) Bruce Allen 2002\n",
-		  RELEASE_MAJOR,RELEASE_MINOR,SMARTMONTOOLS_VERSION);
+  printhead();
   
   if (!debugmode){
     daemon_init();
diff --git a/sm5/smartd.h b/sm5/smartd.h
index 40eeb79c66da0f7f4f24b59c491e4f104c8e4351..0e6c13577e6b31a7631506986d42ac4b0b7a5ebc 100644
--- a/sm5/smartd.h
+++ b/sm5/smartd.h
@@ -23,13 +23,13 @@
  */
 
 #ifndef CVSID7
-#define CVSID7 "$Id: smartd.h,v 1.6 2002/10/22 09:44:55 ballen4705 Exp $\n"
+#define CVSID7 "$Id: smartd.h,v 1.7 2002/10/24 07:50:45 ballen4705 Exp $\n"
 #endif
 
 /* Defines for command line options */ 
 #define DEBUGMODE 		'X'
 #define EMAILNOTIFICATION	'e'
-#define PRINTCOPYLEFT           'p'
+#define PRINTCOPYLEFT           'V'
 
 /* Boolean Values */
 #define TRUE 0x01
diff --git a/sm5/smartmontools.spec b/sm5/smartmontools.spec
index 06212412444107358c3b0928145735fd3230749d..8c382839a6e48a7126637f0a1d71ec351ed5f2b0 100644
--- a/sm5/smartmontools.spec
+++ b/sm5/smartmontools.spec
@@ -101,6 +101,101 @@ fi
 
 %define date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
 %changelog
+* Thu Oct 24 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
+- Changed name of -p (print version) option to -V
+- Minor change in philosophy: if a SMART command fails or the device
+    appears incapable of a SMART command that the user has asked for,
+    complain by printing an error message, but go ahead and try
+    anyway.  Since unimplemented SMART commands should just return an
+    error but not cause disk problems, this should't cause any
+    difficulty.
+- Added two new flags: q and Q.  q is quiet mode - only print: For
+    the -l option, errors recorded in the SMART error log; For the -L
+    option, errors recorded in the device self-test log; For the -c
+    SMART "disk failing" status or device attributes (pre-failure or
+    usage) which failed either now or in the past; For the -v option
+    device attributes (pre-failure or usage) which failed either now
+    or in the past.  Q is Very Quiet mode: Print no ouput.  The only
+    way to learn about what was found is to use the exit status of
+    smartctl.
+- smartctl now returns sensible values (bitmask).  See smartctl.h
+    for the values, and the man page for documentation.
+- The SMART status check now uses the correct ATA call.  If failure
+    is detected we search through attributes to list the failed ones.
+    If the SMART status check shows GOOD, we then look to see if their
+    are any usage attributes or prefail attributes have failed at any
+    time.  If so we print them.
+- Modified function that prints vendor attributes to say if the
+    attribute has currently failed or has ever failed.
+- -p option now prints out license info and CVS strings for all
+    modules in the code, nicely formatted.
+- Previous versions of this code (and Smartsuite) only generate
+    SMART failure errors if the value of an attribute is below the
+    threshold and the prefailure bit is set.  However the ATA Spec
+    (ATA4 <=Rev 4) says that it is a SMART failure if the value of an
+    attribute is LESS THAN OR EQUAL to the threshold and the
+    prefailure bit is set.  This is now fixed in both smartctl and
+    smartd.  Note that this is a troubled subject -- the original
+    SFF 8035i specification defining SMART was inconsistent about
+    this.  One section says that Attribute==Threshold is pass,
+    and another section says it is fail.  However the ATA specs are
+    consistent and say Attribute==Threshold is a fail.
+- smartd did not print the correct value of any failing SMART attribute.  It
+    printed the index in the attribute table, not the attribute
+    ID. This is fixed.
+- when starting self-tests in captive mode ioctl returns EIO because
+    the drive has been busied out.  Detect this and don't return an eror
+    in this case.  Check this this is correct (or how to fix it?)
+ - fixed possible error in how to determine ATA standard support
+    for devices with no ATA minor revision number.
+- device opened only in read-only not read-write mode.  Don't need R/W 
+    access to get smart data. Check this with Andre.
+- smartctl now handles all possible choices of "multiple options"
+    gracefully.  It goes through the following phases of operation,
+    in order: INFORMATION, ENABLE/DISABLE, DISPLAY DATA, RUN/ABORT TESTS.
+    Documentation has bee updated to explain the different phases of
+    operation.  Control flow through ataPrintMain()
+    simplified.
+- If reading device identity information fails, try seeing if the info
+    can be accessed using a "DEVICE PACKET" command.  This way we can
+    at least get device info.
+- Modified Makefile to automatically tag CVS archive on issuance of
+    a release
+- Modified drive detection so minor device ID code showing ATA-3 rev
+    0 (no SMART) is known to not be SMART capable.
+- Now verify the checksum of the device ID data structure, and of the
+    attributes threshold structure.  Before neither of these
+    structures had their checksums verified.
+- New behavior vis-a-vis checksums.  If they are wrong, we log
+    warning messages to stdout, stderr, and syslog, but carry on
+    anyway.  All functions now call a checksumwarning routine if the
+    checksum doesn't vanish as it should.
+- Changed Read Hard Disk Identity function to get fresh info from
+    the disk on each call rather than to use the values that were read
+    upon boot-up into the BIOS.  This is the biggest change in this
+    release.  The ioctl(device, HDIO_GET_IDENTITY, buf ) call should
+    be avoided in such code.  Note that if people get garbled strings
+    for the model, serial no and firmware versions of their drives,
+    then blame goes here (the BIOS does the byte swapping for you,
+    apparently!)
+- Function ataSmartSupport now looks at correct bits in drive
+    identity structure to verify first that these bits are valid,
+    before using them.
+- Function ataIsSmartEnabled() written which uses the Drive ID state
+    information to tell if SMART is enabled or not.  We'll carry this
+    along for the moment without using it.
+- Function ataDoesSmartWork() guaranteed to work if the device
+    supports SMART.
+- Replace some numbers by #define MACROS
+- Wrote Function TestTime to return test time associated with each
+    different type of test.
+- Thinking of the future, have added a new function called
+    ataSmartStatus2().  Eventually when I understand how to use the
+    TASKFILE API and am sure that this works correctly, it will
+    replace ataSmartStatus().  This queries the drive directly to
+    see if the SMART status is OK, rather than comparing thresholds to
+    attribute values ourselves. But I need to get some drives that fail
+    their SMART status to check it.
 * Thu Oct 17 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 -   Removed extraneous space before some error message printing.
 -   Fixed some character buffers that were too short for contents.