diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c
index 5732f50..d487739 100644
--- a/programs/pkey/dh_genprime.c
+++ b/programs/pkey/dh_genprime.c
@@ -43,22 +43,22 @@
 #define GENERATOR "4"
 
 #if !defined(POLARSSL_BIGNUM_C) || !defined(POLARSSL_ENTROPY_C) ||   \
-    !defined(POLARSSL_FS_IO) || !defined(POLARSSL_CTR_DRBG_C)
+    !defined(POLARSSL_FS_IO) || !defined(POLARSSL_CTR_DRBG_C) ||     \
+    !defined(POLARSSL_GENPRIME)
 int main( int argc, char *argv[] )
 {
     ((void) argc);
     ((void) argv);
 
     printf("POLARSSL_BIGNUM_C and/or POLARSSL_ENTROPY_C and/or "
-           "POLARSSL_FS_IO and/or POLARSSL_CTR_DRBG_C not defined.\n");
+           "POLARSSL_FS_IO and/or POLARSSL_CTR_DRBG_C and/or "
+           "POLARSSL_GENPRIME not defined.\n");
     return( 0 );
 }
 #else
 int main( int argc, char *argv[] )
 {
     int ret = 1;
-
-#if defined(POLARSSL_GENPRIME)
     mpi G, P, Q;
     entropy_context entropy;
     ctr_drbg_context ctr_drbg;
@@ -147,9 +147,6 @@
 exit:
 
     mpi_free( &G ); mpi_free( &P ); mpi_free( &Q );
-#else
-    printf( "\n  ! Prime-number generation is not available.\n\n" );
-#endif
 
 #if defined(_WIN32)
     printf( "  Press Enter to exit this program.\n" );
@@ -159,4 +156,4 @@
     return( ret );
 }
 #endif /* POLARSSL_BIGNUM_C && POLARSSL_ENTROPY_C && POLARSSL_FS_IO &&
-          POLARSSL_CTR_DRBG_C */
+          POLARSSL_CTR_DRBG_C && POLARSSL_GENPRIME */
diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c
index d4c30d2..b3b235e 100644
--- a/programs/pkey/key_app.c
+++ b/programs/pkey/key_app.c
@@ -169,8 +169,7 @@
 
         if( ret != 0 )
         {
-            polarssl_strerror( ret, buf, sizeof(buf) );
-            printf( " failed\n  !  pk_parse_keyfile returned -0x%04x - %s\n\n", -ret, buf );
+            printf( " failed\n  !  pk_parse_keyfile returned -0x%04x\n", -ret );
             goto exit;
         }
 
@@ -223,8 +222,7 @@
 
         if( ret != 0 )
         {
-            polarssl_strerror( ret, buf, sizeof(buf) );
-            printf( " failed\n  !  pk_parse_public_keyfile returned -0x%04x - %s\n\n", -ret, buf );
+            printf( " failed\n  !  pk_parse_public_keyfile returned -0x%04x\n", -ret );
             goto exit;
         }
 
@@ -260,6 +258,11 @@
 
 exit:
 
+#if defined(POLARSSL_ERROR_C)
+    polarssl_strerror( ret, buf, sizeof(buf) );
+    printf( "  !  Last error was: %s\n", buf );
+#endif
+
     pk_free( &pk );
 
 #if defined(_WIN32)
diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c
index 416bbec..8e0d9aa 100644
--- a/programs/pkey/pk_decrypt.c
+++ b/programs/pkey/pk_decrypt.c
@@ -97,9 +97,7 @@
 
     if( ( ret = pk_parse_keyfile( &pk, argv[1], "" ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_parse_keyfile returned -0x%04x - %s\n\n", -ret,
-                buf );
+        printf( " failed\n  ! pk_parse_keyfile returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -131,9 +129,7 @@
     if( ( ret = pk_decrypt( &pk, buf, i, result, &olen, sizeof(result),
                             ctr_drbg_random, &ctr_drbg ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_decrypt returned -0x%04x - %s\n\n", -ret,
-                buf );
+        printf( " failed\n  ! pk_decrypt returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -145,6 +141,11 @@
 
 exit:
 
+#if defined(POLARSSL_ERROR_C)
+    polarssl_strerror( ret, (char *) buf, sizeof(buf) );
+    printf( "  !  Last error was: %s\n", buf );
+#endif
+
 #if defined(_WIN32)
     printf( "  + Press Enter to exit this program.\n" );
     fflush( stdout ); getchar();
diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c
index 5d7d1e0..3230eb0 100644
--- a/programs/pkey/pk_encrypt.c
+++ b/programs/pkey/pk_encrypt.c
@@ -84,8 +84,7 @@
                                (const unsigned char *) pers,
                                strlen( pers ) ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! ctr_drbg_init returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! ctr_drbg_init returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -96,8 +95,7 @@
 
     if( ( ret = pk_parse_public_keyfile( &pk, argv[1] ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_parse_public_keyfile returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! pk_parse_public_keyfile returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -119,8 +117,7 @@
                             buf, &olen, sizeof(buf),
                             ctr_drbg_random, &ctr_drbg ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_encrypt returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! pk_encrypt returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -144,6 +141,11 @@
 
 exit:
 
+#if defined(POLARSSL_ERROR_C)
+    polarssl_strerror( ret, (char *) buf, sizeof(buf) );
+    printf( "  !  Last error was: %s\n", buf );
+#endif
+
 #if defined(_WIN32)
     printf( "  + Press Enter to exit this program.\n" );
     fflush( stdout ); getchar();
diff --git a/programs/pkey/pk_sign.c b/programs/pkey/pk_sign.c
index 61a4868..625a299 100644
--- a/programs/pkey/pk_sign.c
+++ b/programs/pkey/pk_sign.c
@@ -93,8 +93,7 @@
                                (const unsigned char *) pers,
                                strlen( pers ) ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! ctr_drbg_init returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! ctr_drbg_init returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -126,8 +125,7 @@
     if( ( ret = pk_sign( &pk, POLARSSL_MD_SHA1, hash, 0, buf, &olen,
                          ctr_drbg_random, &ctr_drbg ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_sign returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! pk_sign returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -156,6 +154,11 @@
 exit:
     pk_free( &pk );
 
+#if defined(POLARSSL_ERROR_C)
+    polarssl_strerror( ret, (char *) buf, sizeof(buf) );
+    printf( "  !  Last error was: %s\n", buf );
+#endif
+
 #if defined(_WIN32)
     printf( "  + Press Enter to exit this program.\n" );
     fflush( stdout ); getchar();
diff --git a/programs/pkey/pk_verify.c b/programs/pkey/pk_verify.c
index 68c0887..4e8fc84 100644
--- a/programs/pkey/pk_verify.c
+++ b/programs/pkey/pk_verify.c
@@ -84,8 +84,7 @@
 
     if( ( ret = pk_parse_public_keyfile( &pk, argv[1] ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_parse_public_keyfile returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! pk_parse_public_keyfile returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -122,8 +121,7 @@
     if( ( ret = pk_verify( &pk, POLARSSL_MD_SHA1, hash, 0,
                            buf, i ) ) != 0 )
     {
-        polarssl_strerror( ret, (char *) buf, sizeof(buf) );
-        printf( " failed\n  ! pk_verify returned -0x%04x - %s\n\n", -ret, buf );
+        printf( " failed\n  ! pk_verify returned -0x%04x\n", -ret );
         goto exit;
     }
 
@@ -134,6 +132,11 @@
 exit:
     pk_free( &pk );
 
+#if defined(POLARSSL_ERROR_C)
+    polarssl_strerror( ret, (char *) buf, sizeof(buf) );
+    printf( "  !  Last error was: %s\n", buf );
+#endif
+
 #if defined(_WIN32)
     printf( "  + Press Enter to exit this program.\n" );
     fflush( stdout ); getchar();
