diff --git a/programs/test/selftest.c b/programs/test/selftest.c
index b168b71..3765a0a 100644
--- a/programs/test/selftest.c
+++ b/programs/test/selftest.c
@@ -52,15 +52,19 @@
 #include "mbedtls/ecjpake.h"
 #include "mbedtls/timing.h"
 
-#include <stdio.h>
+//#include <stdio.h>
 #include <string.h>
 
 #if defined(MBEDTLS_PLATFORM_C)
 #include "mbedtls/platform.h"
 #else
 #include <stdio.h>
+#include <stdlib.h>
 #define mbedtls_printf     printf
 #define mbedtls_snprintf   snprintf
+#define mbedtls_exit       exit
+#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS
+#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
 #endif
 
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
@@ -99,8 +103,7 @@
 
 int main( int argc, char *argv[] )
 {
-    int ret = 0, v, suites_tested = 0, suites_failed = 0,
-        exitcode = EXIT_SUCCESS;
+    int v, suites_tested = 0, suites_failed = 0;
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
     unsigned char buf[1000000];
 #endif
@@ -115,7 +118,7 @@
     if( pointer != NULL )
     {
         mbedtls_printf( "all-bits-zero is not a NULL pointer\n" );
-        return( 1 );
+        mbedtls_exit( MBEDTLS_EXIT_FAILURE );
     }
 
     /*
@@ -124,7 +127,7 @@
     if( run_test_snprintf() != 0 )
     {
         mbedtls_printf( "the snprintf implementation is broken\n" );
-        return( 0 );
+        mbedtls_exit( MBEDTLS_EXIT_FAILURE );
     }
 
     if( argc == 2 && ( strcmp( argv[1], "--quiet" ) == 0  ||
@@ -145,7 +148,7 @@
 #endif
 
 #if defined(MBEDTLS_MD2_C)
-    if( ( ret = mbedtls_md2_self_test( v ) ) != 0 )
+    if( mbedtls_md2_self_test( v )  != 0 )
     {
         suites_failed++;
     }
@@ -153,7 +156,7 @@
 #endif
 
 #if defined(MBEDTLS_MD4_C)
-    if( ( ret = mbedtls_md4_self_test( v ) ) != 0 )
+    if( mbedtls_md4_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -161,7 +164,7 @@
 #endif
 
 #if defined(MBEDTLS_MD5_C)
-    if( ( ret = mbedtls_md5_self_test( v ) ) != 0 )
+    if( mbedtls_md5_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -169,7 +172,7 @@
 #endif
 
 #if defined(MBEDTLS_RIPEMD160_C)
-    if( ( ret = mbedtls_ripemd160_self_test( v ) ) != 0 )
+    if( mbedtls_ripemd160_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -177,7 +180,7 @@
 #endif
 
 #if defined(MBEDTLS_SHA1_C)
-    if( ( ret = mbedtls_sha1_self_test( v ) ) != 0 )
+    if( mbedtls_sha1_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -185,7 +188,7 @@
 #endif
 
 #if defined(MBEDTLS_SHA256_C)
-    if( ( ret = mbedtls_sha256_self_test( v ) ) != 0 )
+    if( mbedtls_sha256_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -193,7 +196,7 @@
 #endif
 
 #if defined(MBEDTLS_SHA512_C)
-    if( ( ret = mbedtls_sha512_self_test( v ) ) != 0 )
+    if( mbedtls_sha512_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -201,7 +204,7 @@
 #endif
 
 #if defined(MBEDTLS_ARC4_C)
-    if( ( ret = mbedtls_arc4_self_test( v ) ) != 0 )
+    if( mbedtls_arc4_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -209,7 +212,7 @@
 #endif
 
 #if defined(MBEDTLS_DES_C)
-    if( ( ret = mbedtls_des_self_test( v ) ) != 0 )
+    if( mbedtls_des_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -217,7 +220,7 @@
 #endif
 
 #if defined(MBEDTLS_AES_C)
-    if( ( ret = mbedtls_aes_self_test( v ) ) != 0 )
+    if( mbedtls_aes_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -225,7 +228,7 @@
 #endif
 
 #if defined(MBEDTLS_GCM_C) && defined(MBEDTLS_AES_C)
-    if( ( ret = mbedtls_gcm_self_test( v ) ) != 0 )
+    if( mbedtls_gcm_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -233,7 +236,7 @@
 #endif
 
 #if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C)
-    if( ( ret = mbedtls_ccm_self_test( v ) ) != 0 )
+    if( mbedtls_ccm_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -241,7 +244,7 @@
 #endif
 
 #if defined(MBEDTLS_BASE64_C)
-    if( ( ret = mbedtls_base64_self_test( v ) ) != 0 )
+    if( mbedtls_base64_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -249,7 +252,7 @@
 #endif
 
 #if defined(MBEDTLS_BIGNUM_C)
-    if( ( ret = mbedtls_mpi_self_test( v ) ) != 0 )
+    if( mbedtls_mpi_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -257,7 +260,7 @@
 #endif
 
 #if defined(MBEDTLS_RSA_C)
-    if( ( ret = mbedtls_rsa_self_test( v ) ) != 0 )
+    if( mbedtls_rsa_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -265,7 +268,7 @@
 #endif
 
 #if defined(MBEDTLS_X509_USE_C)
-    if( ( ret = mbedtls_x509_self_test( v ) ) != 0 )
+    if( mbedtls_x509_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -273,7 +276,7 @@
 #endif
 
 #if defined(MBEDTLS_XTEA_C)
-    if( ( ret = mbedtls_xtea_self_test( v ) ) != 0 )
+    if( mbedtls_xtea_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -281,7 +284,7 @@
 #endif
 
 #if defined(MBEDTLS_CAMELLIA_C)
-    if( ( ret = mbedtls_camellia_self_test( v ) ) != 0 )
+    if( mbedtls_camellia_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -289,7 +292,7 @@
 #endif
 
 #if defined(MBEDTLS_CTR_DRBG_C)
-    if( ( ret = mbedtls_ctr_drbg_self_test( v ) ) != 0 )
+    if( mbedtls_ctr_drbg_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -297,7 +300,7 @@
 #endif
 
 #if defined(MBEDTLS_HMAC_DRBG_C)
-    if( ( ret = mbedtls_hmac_drbg_self_test( v ) ) != 0 )
+    if( mbedtls_hmac_drbg_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -305,7 +308,7 @@
 #endif
 
 #if defined(MBEDTLS_ECP_C)
-    if( ( ret = mbedtls_ecp_self_test( v ) ) != 0 )
+    if( mbedtls_ecp_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -313,7 +316,7 @@
 #endif
 
 #if defined(MBEDTLS_ECJPAKE_C)
-    if( ( ret = mbedtls_ecjpake_self_test( v ) ) != 0 )
+    if( mbedtls_ecjpake_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -321,7 +324,7 @@
 #endif
 
 #if defined(MBEDTLS_DHM_C)
-    if( ( ret = mbedtls_dhm_self_test( v ) ) != 0 )
+    if( mbedtls_dhm_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -329,7 +332,7 @@
 #endif
 
 #if defined(MBEDTLS_ENTROPY_C)
-    if( ( ret = mbedtls_entropy_self_test( v ) ) != 0 )
+    if( mbedtls_entropy_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -337,7 +340,7 @@
 #endif
 
 #if defined(MBEDTLS_PKCS5_C)
-    if( ( ret = mbedtls_pkcs5_self_test( v ) ) != 0 )
+    if( mbedtls_pkcs5_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -347,7 +350,7 @@
 /* Slow tests last */
 
 #if defined(MBEDTLS_TIMING_C)
-    if( ( ret = mbedtls_timing_self_test( v ) ) != 0 )
+    if( mbedtls_timing_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -367,7 +370,7 @@
 
 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
     mbedtls_memory_buffer_alloc_free();
-    if( ( ret = mbedtls_memory_buffer_alloc_self_test( v ) ) != 0 )
+    if( mbedtls_memory_buffer_alloc_self_test( v ) != 0 )
     {
         suites_failed++;
     }
@@ -393,8 +396,8 @@
     }
 
     if( suites_failed > 0)
-        exitcode = EXIT_FAILURE;
+        mbedtls_exit( MBEDTLS_EXIT_FAILURE );
 
-    exit( exitcode );
+    mbedtls_exit( MBEDTLS_EXIT_SUCCESS );
 }
 
