diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index d3ad4541cb22fc92dd286c20a8ba9f57ee4cadf9..aa21a4120352b2d586b3e197f028c5d5f4984174 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.38 2002/11/07 11:28:17 ballen4705 Exp $
+$Id: CHANGELOG,v 1.39 2002/11/07 19:07:20 ballen4705 Exp $
 
 Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 
@@ -25,6 +25,11 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 CURRENT RELEASE (see VERSION file in this directory):
 
+  smartctl: Missing ANSI prototype in failuretest(); fixed.
+
+  smartctl: Checksum warnings now printed on stdout, or are silent,
+  depending upon -q and -Q settings.
+
 smartmontools-5.0.31
 
   Changed Makefile so that the -V option does not reflect file state
diff --git a/sm5/Makefile b/sm5/Makefile
index 3b2cf3b94280d439029a209dc9856f6ae38a9bbe..ce85023367b1d98c3a2ee2535ae1e079a3ffe2a9 100644
--- a/sm5/Makefile
+++ b/sm5/Makefile
@@ -2,7 +2,7 @@
 #
 # Home page: http://smartmontools.sourceforge.net
 #
-# $Id: Makefile,v 1.34 2002/11/07 11:28:17 ballen4705 Exp $
+# $Id: Makefile,v 1.35 2002/11/07 19:07:20 ballen4705 Exp $
 #
 # Copyright (C) 2002 Bruce Allen <smartmontools-support@lists.sourceforge.net>
 # 
@@ -133,6 +133,4 @@ release:
 	mv /usr/src/redhat/RPMS/i386/$(pkgname)*.rpm .
 	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 -d "RELEASE_5_0_$(counter)" && cvs tag "RELEASE_5_0_$(counter)"
 	echo `hostname` | grep -q ballen && echo $(newcounter) > VERSION && chown ballen.ballen *
diff --git a/sm5/VERSION b/sm5/VERSION
index e85087affded170efcbc6f9672a6fc671d839ed0..f5c89552bd3e62bfce023a230e90d141f7a46b2f 100644
--- a/sm5/VERSION
+++ b/sm5/VERSION
@@ -1 +1 @@
-31
+32
diff --git a/sm5/atacmds.c b/sm5/atacmds.c
index 35cfbf364de3e3be78b072b61f75c3b0f82a7f5f..dba8516f5b918e1337a1e39cf3d5dc2dd9c0a8e3 100644
--- a/sm5/atacmds.c
+++ b/sm5/atacmds.c
@@ -29,7 +29,7 @@
 #include <stdlib.h>
 #include "atacmds.h"
 
-const char *CVSid1="$Id: atacmds.c,v 1.37 2002/11/07 11:00:55 ballen4705 Exp $" CVSID1;
+const char *CVSid1="$Id: atacmds.c,v 1.38 2002/11/07 19:07:20 ballen4705 Exp $" CVSID1;
 
 // These Drive Identity tables are taken from hdparm 5.2, and are also
 // given in the ATA/ATAPI specs for the IDENTIFY DEVICE command.  Note
@@ -588,7 +588,9 @@ int TestTime(struct ata_smart_values *data,int testtype){
   }
 }
 
-
+// This function tells you both about the ATA error log and the
+// self-test error log capability.  The bit is poorly documented in
+// the ATA/ATAPI standard.
 int isSmartErrorLogCapable ( struct ata_smart_values *data){
    return data->errorlog_capability & 0x01;
 }
diff --git a/sm5/atacmds.cpp b/sm5/atacmds.cpp
index 00c08b0c8bc9608ae1209aaca3a61f331fdaea29..61c7340f9b203737a6441cc528867d3fa472f92c 100644
--- a/sm5/atacmds.cpp
+++ b/sm5/atacmds.cpp
@@ -29,7 +29,7 @@
 #include <stdlib.h>
 #include "atacmds.h"
 
-const char *CVSid1="$Id: atacmds.cpp,v 1.37 2002/11/07 11:00:55 ballen4705 Exp $" CVSID1;
+const char *CVSid1="$Id: atacmds.cpp,v 1.38 2002/11/07 19:07:20 ballen4705 Exp $" CVSID1;
 
 // These Drive Identity tables are taken from hdparm 5.2, and are also
 // given in the ATA/ATAPI specs for the IDENTIFY DEVICE command.  Note
@@ -588,7 +588,9 @@ int TestTime(struct ata_smart_values *data,int testtype){
   }
 }
 
-
+// This function tells you both about the ATA error log and the
+// self-test error log capability.  The bit is poorly documented in
+// the ATA/ATAPI standard.
 int isSmartErrorLogCapable ( struct ata_smart_values *data){
    return data->errorlog_capability & 0x01;
 }
diff --git a/sm5/ataprint.c b/sm5/ataprint.c
index b995b470daef2edb683a7eb0e2f5d712fe87fc4f..7ff6c631bfb47345bbe80bab045c40208255e433 100644
--- a/sm5/ataprint.c
+++ b/sm5/ataprint.c
@@ -30,7 +30,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid2="$Id: ataprint.c,v 1.42 2002/11/07 11:00:55 ballen4705 Exp $"
+const char *CVSid2="$Id: ataprint.c,v 1.43 2002/11/07 19:07:20 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID3 CVSID6;
 
 // for passing global control variables
@@ -703,7 +703,7 @@ void ataPseudoCheckSmart ( struct ata_smart_values *data,
 
 // Compares failure type to policy in effect, and either exits or
 // simply returns to the calling routine.
-void failuretest(type, returnvalue){
+void failuretest(int type, int returnvalue){
 
   // If this is an error in an "optional" SMART command
   if (type==OPTIONAL_CMD){
@@ -732,12 +732,8 @@ void failuretest(type, returnvalue){
 // abort on invalid checksums.
 void checksumwarning(const char *string){
   pout("Warning! %s error: invalid SMART checksum.\n",string);
-  fprintf(stderr,"Warning! %s error: invalid SMART checksum.\n",string);
-  syslog(LOG_INFO,"Warning! %s error: invalid SMART checksum.\n",string);
-
   if (con->checksumfail)
     exit(FAILSMART);
-
   return;
 }
 
@@ -950,7 +946,6 @@ int ataPrintMain (int fd){
     if (ataReadErrorLog(fd, &smarterror)){
       pout("Smartctl: SMART Errorlog Read Failed\n");
       failuretest(OPTIONAL_CMD, returnval|=FAILSMART);
-
     }
     else {
       // quiet mode is turned on inside ataPrintSmartErrorLog()
diff --git a/sm5/ataprint.cpp b/sm5/ataprint.cpp
index 6f3fc601d7a7f722ad532b62384a1478850dcf0f..a83265312a588175aacb79cd4303e7a56ca70fe4 100644
--- a/sm5/ataprint.cpp
+++ b/sm5/ataprint.cpp
@@ -30,7 +30,7 @@
 #include "smartctl.h"
 #include "extern.h"
 
-const char *CVSid2="$Id: ataprint.cpp,v 1.42 2002/11/07 11:00:55 ballen4705 Exp $"
+const char *CVSid2="$Id: ataprint.cpp,v 1.43 2002/11/07 19:07:20 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID3 CVSID6;
 
 // for passing global control variables
@@ -703,7 +703,7 @@ void ataPseudoCheckSmart ( struct ata_smart_values *data,
 
 // Compares failure type to policy in effect, and either exits or
 // simply returns to the calling routine.
-void failuretest(type, returnvalue){
+void failuretest(int type, int returnvalue){
 
   // If this is an error in an "optional" SMART command
   if (type==OPTIONAL_CMD){
@@ -732,12 +732,8 @@ void failuretest(type, returnvalue){
 // abort on invalid checksums.
 void checksumwarning(const char *string){
   pout("Warning! %s error: invalid SMART checksum.\n",string);
-  fprintf(stderr,"Warning! %s error: invalid SMART checksum.\n",string);
-  syslog(LOG_INFO,"Warning! %s error: invalid SMART checksum.\n",string);
-
   if (con->checksumfail)
     exit(FAILSMART);
-
   return;
 }
 
@@ -950,7 +946,6 @@ int ataPrintMain (int fd){
     if (ataReadErrorLog(fd, &smarterror)){
       pout("Smartctl: SMART Errorlog Read Failed\n");
       failuretest(OPTIONAL_CMD, returnval|=FAILSMART);
-
     }
     else {
       // quiet mode is turned on inside ataPrintSmartErrorLog()
diff --git a/sm5/smartctl.c b/sm5/smartctl.c
index e7cc4b9439e8c10e46c1f2c6aa1e21624885d849..0a21f1f928253b60f63678be94aebc58b9b9fdf4 100644
--- a/sm5/smartctl.c
+++ b/sm5/smartctl.c
@@ -39,7 +39,7 @@
 #include "extern.h"
 
 extern const char *CVSid1, *CVSid2, *CVSid3, *CVSid4; 
-const char* CVSid5="$Id: smartctl.c,v 1.26 2002/11/07 11:00:56 ballen4705 Exp $"
+const char* CVSid5="$Id: smartctl.c,v 1.27 2002/11/07 19:07:20 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID3 CVSID4 CVSID5 CVSID6;
 
 // This is a block containing all the "control variables".  We declare
@@ -325,8 +325,7 @@ int main (int argc, char **argv){
   }
   
   // open device - read-only mode is enough to issue needed commands
-  fd = open(device=argv[2], O_RDONLY);
-  
+  fd = open(device=argv[2], O_RDONLY);  
   if (fd<0) {
     perror("Smartctl device open failed");
     return FAILDEV;
diff --git a/sm5/smartctl.cpp b/sm5/smartctl.cpp
index b299655a893c200baf63eee26ba3a7b5c5710506..64e4948a862af615da01843e7ac864b92fc84e97 100644
--- a/sm5/smartctl.cpp
+++ b/sm5/smartctl.cpp
@@ -39,7 +39,7 @@
 #include "extern.h"
 
 extern const char *CVSid1, *CVSid2, *CVSid3, *CVSid4; 
-const char* CVSid5="$Id: smartctl.cpp,v 1.26 2002/11/07 11:00:56 ballen4705 Exp $"
+const char* CVSid5="$Id: smartctl.cpp,v 1.27 2002/11/07 19:07:20 ballen4705 Exp $"
 CVSID1 CVSID2 CVSID3 CVSID4 CVSID5 CVSID6;
 
 // This is a block containing all the "control variables".  We declare
@@ -325,8 +325,7 @@ int main (int argc, char **argv){
   }
   
   // open device - read-only mode is enough to issue needed commands
-  fd = open(device=argv[2], O_RDONLY);
-  
+  fd = open(device=argv[2], O_RDONLY);  
   if (fd<0) {
     perror("Smartctl device open failed");
     return FAILDEV;
diff --git a/sm5/smartctl.h b/sm5/smartctl.h
index 3b18efef98921638ad773338297d5934c6e4398f..5a59a2ef7342c464eaf64d75b09a6dc15a848abd 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.12 2002/11/07 11:00:56 ballen4705 Exp $\n"
+#define CVSID6 "$Id: smartctl.h,v 1.13 2002/11/07 19:07:20 ballen4705 Exp $\n"
 #endif
 
 /* Defines for command line options */ 
@@ -55,7 +55,7 @@
 #define VERYQUIETMODE           'Q'
 #define NOTATADEVICE            'N'
 #define NOTSCSIDEVICE           'n'
-#define EXITCHECKSUMERROR        'W'
+#define EXITCHECKSUMERROR       'W'
 #define ULTRACONSERVATIVE       'U'
 #define PERMISSIVE              'P'