Make the no-err option work properly
diff --git a/CHANGES b/CHANGES
index aab1915..6c07f91 100644
--- a/CHANGES
+++ b/CHANGES
@@ -436,6 +436,17 @@
 
  Changes between 0.9.7 and 0.9.7a  [XX xxx 2003]
 
+  *) Make the no-err option work as intended.  The intention with no-err
+     is not to have the whole error stack handling routines removed from
+     libcrypto, it's only intended to remove all the function name and
+     reason texts, thereby removing some of the footprint that may not
+     be interesting if those errors aren't displayed anyway.
+
+     NOTE: it's still possible for any application or module to have it's
+     own set of error texts inserted.  The routines are there, just not
+     used by default when no-err is given.
+     [Richard Levitte]
+
   *) Add support for FreeBSD on IA64.
      [dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454]
 
diff --git a/Configure b/Configure
index ba19077..78ad1d8 100755
--- a/Configure
+++ b/Configure
@@ -692,6 +692,11 @@
 			$flags .= "-DOPENSSL_NO_ASM ";
 			$openssl_other_defines .= "#define OPENSSL_NO_ASM\n";
 			}
+		elsif (/^no-err$/)
+		 	{
+			$flags .= "-DOPENSSL_NO_ERR ";
+			$openssl_other_defines .= "#define OPENSSL_NO_ERR\n";
+			}
 		elsif (/^no-hw-(.+)$/)
 			{
 			my $hw=$1;
diff --git a/crypto/err/err.c b/crypto/err/err.c
index 85ff9a5..1f943c8 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -212,6 +212,7 @@
 
 {0,NULL},
 	};
+#endif
 
 
 /* Define the predeclared (but externally opaque) "ERR_FNS" type */
@@ -492,6 +493,7 @@
 	}
 
 
+#ifndef OPENSSL_NO_ERR
 #define NUM_SYS_STR_REASONS 127
 #define LEN_SYS_STR_REASON 32