Introduced POLARSSL_HAVE_READDIR_R for systems without it
diff --git a/ChangeLog b/ChangeLog
index f6def8c..9d7cce4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
 Changes
    * RSA blinding locks for a smaller amount of time
    * TLS compression only allocates working buffer once
+   * Introduced POLARSSL_HAVE_READDIR_R for systems without it
 
 Bugfix
    * Missing MSVC defines added
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index e4ab5e1..0e725d3 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -94,6 +94,17 @@
  */
 
 /**
+ * \def POLARSSL_HAVE_READDIR_R
+ *
+ * (Non Windows) System has readdir_r().
+ *
+ * Required for x509_crt_parse_path() in non-Windows systems.
+ *
+ * Comment if your system does not have support.
+ */
+#define POLARSSL_HAVE_READDIR_R
+
+/**
  * \def POLARSSL_HAVE_TIME
  *
  * System has time.h and time() / localtime()  / gettimeofday().
diff --git a/library/x509_crt.c b/library/x509_crt.c
index d7723ac..0a22b87 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -986,7 +986,8 @@
         ret = POLARSSL_ERR_X509_FILE_IO_ERROR;
 
     FindClose( hFind );
-#else
+#else /* _WIN32 */
+#if defined(POLARSSL_HAVE_READDIR_R)
     int t_ret, i;
     struct stat sb;
     struct dirent entry, *result = NULL;
@@ -1023,7 +1024,12 @@
             ret += t_ret;
     }
     closedir( dir );
-#endif
+#else /* POLARSSL_HAVE_READDIR_R */
+    ((void) chain);
+    ((void) path);
+    ret = POLARSSL_ERR_X509_FEATURE_UNAVAILABLE;
+#endif /* POLARSSL_HAVE_READDIR_R */
+#endif /* _WIN32 */
 
     return( ret );
 }