- Added commandline error code convertor (util/strerror)

diff --git a/ChangeLog b/ChangeLog
index c1be440..6364c0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,7 @@
    * Added base Galois Counter Mode (GCM) for AES
    * Added TLS 1.2 support
    * Added GCM suites to TLS 1.2 (RFC 5288)
+   * Added commandline error code convertor (util/strerror)
 
 Changes
    * Removed redundant POLARSSL_DEBUG_MSG define
diff --git a/programs/Makefile b/programs/Makefile
index e6771ce..8780633 100644
--- a/programs/Makefile
+++ b/programs/Makefile
@@ -28,6 +28,7 @@
 	random/gen_random_ctr_drbg				\
 	test/ssl_cert_test	test/benchmark		\
 	test/selftest		test/ssl_test		\
+	util/strerror							\
 	x509/cert_app		x509/crl_app		\
 	x509/cert_req
 
@@ -163,6 +164,10 @@
 	echo   "  CC    test/ssl_test.c"
 	$(CC) $(CFLAGS) $(OFLAGS) test/ssl_test.c    $(LDFLAGS) -o $@
 
+util/strerror: util/strerror.c ../library/libpolarssl.a
+	echo   "  CC    util/strerror.c"
+	$(CC) $(CFLAGS) $(OFLAGS) util/strerror.c    $(LDFLAGS) -o $@
+
 x509/cert_app: x509/cert_app.c ../library/libpolarssl.a
 	echo   "  CC    x509/cert_app.c"
 	$(CC) $(CFLAGS) $(OFLAGS) x509/cert_app.c    $(LDFLAGS) -o $@
diff --git a/programs/util/strerror.c b/programs/util/strerror.c
new file mode 100644
index 0000000..bb31b3d
--- /dev/null
+++ b/programs/util/strerror.c
@@ -0,0 +1,79 @@
+/*
+ *  Translate error code to error string
+ *
+ *  Copyright (C) 2006-2012, Brainspark B.V.
+ *
+ *  This file is part of PolarSSL (http://www.polarssl.org)
+ *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
+ *
+ *  All rights reserved.
+ *
+ *  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 Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "polarssl/config.h"
+
+#include "polarssl/error.h"
+
+#define USAGE \
+    "\n usage: strerror <errorcode>\n"
+
+#if !defined(POLARSSL_ERROR_C) 
+int main( int argc, char *argv[] )
+{
+    ((void) argc);
+    ((void) argv);
+
+    printf("POLARSSL_ERROR_C not defined.\n");
+    return( 0 );
+}
+#else
+int main( int argc, char *argv[] )
+{
+    int ret;
+
+    if( argc != 2 )
+    {
+        printf( USAGE );
+        return( 0 );
+    }
+
+    ret = atoi( argv[1] );
+    if( ret > 0 )
+        ret = - ret;
+
+    if( ret != 0 )
+    {
+        char error_buf[200];
+        error_strerror( ret, error_buf, 200 );
+        printf("Last error was: %d - %s\n\n", ret, error_buf );
+    }
+
+#if defined(_WIN32)
+    printf( "  + Press Enter to exit this program.\n" );
+    fflush( stdout ); getchar();
+#endif
+
+    return( ret );
+}
+#endif /* POLARSSL_ERROR_C */