+diff --git a/crypto/srp/srp.h b/crypto/srp/srp.h\r
+index d072536..73b945f 100644\r
+--- a/crypto/srp/srp.h\r
++++ b/crypto/srp/srp.h\r
+@@ -114,7 +114,9 @@ DECLARE_STACK_OF(SRP_gN)\r
+ \r
+ SRP_VBASE *SRP_VBASE_new(char *seed_key);\r
+ int SRP_VBASE_free(SRP_VBASE *vb);\r
++#ifndef OPENSSL_NO_STDIO\r
+ int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file);\r
++#endif\r
+ SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username);\r
+ char *SRP_create_verifier(const char *user, const char *pass, char **salt,\r
+ char **verifier, const char *N, const char *g);\r
+diff --git a/crypto/srp/srp_vfy.c b/crypto/srp/srp_vfy.c\r
+index a3f1a8a..3fbb186 100644\r
+--- a/crypto/srp/srp_vfy.c\r
++++ b/crypto/srp/srp_vfy.c\r
+@@ -225,6 +225,7 @@ static int SRP_user_pwd_set_ids(SRP_user_pwd *vinfo, const char *id,\r
+ return (info == NULL || NULL != (vinfo->info = BUF_strdup(info)));\r
+ }\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ static int SRP_user_pwd_set_sv(SRP_user_pwd *vinfo, const char *s,\r
+ const char *v)\r
+ {\r
+@@ -239,6 +240,7 @@ static int SRP_user_pwd_set_sv(SRP_user_pwd *vinfo, const char *s,\r
+ len = t_fromb64(tmp, s);\r
+ return ((vinfo->s = BN_bin2bn(tmp, len, NULL)) != NULL);\r
+ }\r
++#endif\r
+ \r
+ static int SRP_user_pwd_set_sv_BN(SRP_user_pwd *vinfo, BIGNUM *s, BIGNUM *v)\r
+ {\r
+@@ -279,6 +281,7 @@ int SRP_VBASE_free(SRP_VBASE *vb)\r
+ return 0;\r
+ }\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ static SRP_gN_cache *SRP_gN_new_init(const char *ch)\r
+ {\r
+ unsigned char tmp[MAX_LEN];\r
+@@ -310,6 +313,7 @@ static void SRP_gN_free(SRP_gN_cache *gN_cache)\r
+ BN_free(gN_cache->bn);\r
+ OPENSSL_free(gN_cache);\r
+ }\r
++#endif\r
+ \r
+ static SRP_gN *SRP_get_gN_by_id(const char *id, STACK_OF(SRP_gN) *gN_tab)\r
+ {\r
+@@ -326,6 +330,7 @@ static SRP_gN *SRP_get_gN_by_id(const char *id, STACK_OF(SRP_gN) *gN_tab)\r
+ return SRP_get_default_gN(id);\r
+ }\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ static BIGNUM *SRP_gN_place_bn(STACK_OF(SRP_gN_cache) *gN_cache, char *ch)\r
+ {\r
+ int i;\r
+@@ -467,6 +472,7 @@ int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file)\r
+ return error_code;\r
+ \r
+ }\r
++#endif\r
+ \r
+ SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)\r
+ {\r
+diff --git a/crypto/ts/ts.h b/crypto/ts/ts.h\r
+index 16eccbb..a9fe40e 100644\r
+--- a/crypto/ts/ts.h\r
++++ b/crypto/ts/ts.h\r
+@@ -281,8 +281,10 @@ TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length);\r
+ \r
+ TS_REQ *TS_REQ_dup(TS_REQ *a);\r
+ \r
++#ifndef OPENSSL_NO_FP_API\r
+ TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a);\r
+ int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a);\r
++#endif\r
+ TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a);\r
+ int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a);\r
+ \r
+@@ -294,10 +296,12 @@ TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a,\r
+ \r
+ TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a);\r
+ \r
++#ifndef OPENSSL_NO_FP_API\r
+ TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a);\r
+ int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a);\r
+-TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT **a);\r
+-int i2d_TS_MSG_IMPRINT_bio(BIO *fp, TS_MSG_IMPRINT *a);\r
++#endif\r
++TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a);\r
++int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a);\r
+ \r
+ TS_RESP *TS_RESP_new(void);\r
+ void TS_RESP_free(TS_RESP *a);\r
+@@ -306,10 +310,12 @@ TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length);\r
+ TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token);\r
+ TS_RESP *TS_RESP_dup(TS_RESP *a);\r
+ \r
++#ifndef OPENSSL_NO_FP_API\r
+ TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a);\r
+ int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a);\r
+-TS_RESP *d2i_TS_RESP_bio(BIO *fp, TS_RESP **a);\r
+-int i2d_TS_RESP_bio(BIO *fp, TS_RESP *a);\r
++#endif\r
++TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a);\r
++int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a);\r
+ \r
+ TS_STATUS_INFO *TS_STATUS_INFO_new(void);\r
+ void TS_STATUS_INFO_free(TS_STATUS_INFO *a);\r
+@@ -325,10 +331,12 @@ TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp,\r
+ long length);\r
+ TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a);\r
+ \r
++#ifndef OPENSSL_NO_FP_API\r
+ TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a);\r
+ int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a);\r
+-TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO **a);\r
+-int i2d_TS_TST_INFO_bio(BIO *fp, TS_TST_INFO *a);\r
++#endif\r
++TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a);\r
++int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a);\r
+ \r
+ TS_ACCURACY *TS_ACCURACY_new(void);\r
+ void TS_ACCURACY_free(TS_ACCURACY *a);\r
+@@ -728,15 +736,18 @@ int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg);\r
+ * ts/ts_conf.c\r
+ */\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ X509 *TS_CONF_load_cert(const char *file);\r
+ STACK_OF(X509) *TS_CONF_load_certs(const char *file);\r
+ EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass);\r
++#endif\r
+ const char *TS_CONF_get_tsa_section(CONF *conf, const char *section);\r
+ int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb,\r
+ TS_RESP_CTX *ctx);\r
+ int TS_CONF_set_crypto_device(CONF *conf, const char *section,\r
+ const char *device);\r
+ int TS_CONF_set_default_engine(const char *name);\r
++#ifndef OPENSSL_NO_STDIO\r
+ int TS_CONF_set_signer_cert(CONF *conf, const char *section,\r
+ const char *cert, TS_RESP_CTX *ctx);\r
+ int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs,\r
+@@ -744,6 +755,7 @@ int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs,\r
+ int TS_CONF_set_signer_key(CONF *conf, const char *section,\r
+ const char *key, const char *pass,\r
+ TS_RESP_CTX *ctx);\r
++#endif\r
+ int TS_CONF_set_def_policy(CONF *conf, const char *section,\r
+ const char *policy, TS_RESP_CTX *ctx);\r
+ int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx);\r
+@@ -784,6 +796,11 @@ void ERR_load_TS_strings(void);\r
+ # define TS_F_TS_CHECK_SIGNING_CERTS 103\r
+ # define TS_F_TS_CHECK_STATUS_INFO 104\r
+ # define TS_F_TS_COMPUTE_IMPRINT 145\r
++# define TS_F_TS_CONF_INVALID 151\r
++# define TS_F_TS_CONF_LOAD_CERT 153\r
++# define TS_F_TS_CONF_LOAD_CERTS 154\r
++# define TS_F_TS_CONF_LOAD_KEY 155\r
++# define TS_F_TS_CONF_LOOKUP_FAIL 152\r
+ # define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146\r
+ # define TS_F_TS_GET_STATUS_TEXT 105\r
+ # define TS_F_TS_MSG_IMPRINT_SET_ALGO 118\r
+@@ -822,6 +839,8 @@ void ERR_load_TS_strings(void);\r
+ /* Reason codes. */\r
+ # define TS_R_BAD_PKCS7_TYPE 132\r
+ # define TS_R_BAD_TYPE 133\r
++# define TS_R_CANNOT_LOAD_CERT 137\r
++# define TS_R_CANNOT_LOAD_KEY 138\r
+ # define TS_R_CERTIFICATE_VERIFY_ERROR 100\r
+ # define TS_R_COULD_NOT_SET_ENGINE 127\r
+ # define TS_R_COULD_NOT_SET_TIME 115\r
+@@ -854,6 +873,8 @@ void ERR_load_TS_strings(void);\r
+ # define TS_R_UNACCEPTABLE_POLICY 125\r
+ # define TS_R_UNSUPPORTED_MD_ALGORITHM 126\r
+ # define TS_R_UNSUPPORTED_VERSION 113\r
++# define TS_R_VAR_BAD_VALUE 135\r
++# define TS_R_VAR_LOOKUP_FAILURE 136\r
+ # define TS_R_WRONG_CONTENT_TYPE 114\r
+ \r
+ #ifdef __cplusplus\r
+diff --git a/crypto/ts/ts_conf.c b/crypto/ts/ts_conf.c\r
+index 4716b23..c4416ba 100644\r
+--- a/crypto/ts/ts_conf.c\r
++++ b/crypto/ts/ts_conf.c\r
+@@ -92,6 +92,7 @@\r
+ \r
+ /* Function definitions for certificate and key loading. */\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ X509 *TS_CONF_load_cert(const char *file)\r
+ {\r
+ BIO *cert = NULL;\r
+@@ -102,7 +103,7 @@ X509 *TS_CONF_load_cert(const char *file)\r
+ x = PEM_read_bio_X509_AUX(cert, NULL, NULL, NULL);\r
+ end:\r
+ if (x == NULL)\r
+- fprintf(stderr, "unable to load certificate: %s\n", file);\r
++ TSerr(TS_F_TS_CONF_LOAD_CERT, TS_R_CANNOT_LOAD_CERT);\r
+ BIO_free(cert);\r
+ return x;\r
+ }\r
+@@ -129,7 +130,7 @@ STACK_OF(X509) *TS_CONF_load_certs(const char *file)\r
+ }\r
+ end:\r
+ if (othercerts == NULL)\r
+- fprintf(stderr, "unable to load certificates: %s\n", file);\r
++ TSerr(TS_F_TS_CONF_LOAD_CERTS, TS_R_CANNOT_LOAD_CERT);\r
+ sk_X509_INFO_pop_free(allcerts, X509_INFO_free);\r
+ BIO_free(certs);\r
+ return othercerts;\r
+@@ -145,21 +146,24 @@ EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass)\r
+ pkey = PEM_read_bio_PrivateKey(key, NULL, NULL, (char *)pass);\r
+ end:\r
+ if (pkey == NULL)\r
+- fprintf(stderr, "unable to load private key: %s\n", file);\r
++ TSerr(TS_F_TS_CONF_LOAD_KEY, TS_R_CANNOT_LOAD_KEY);\r
+ BIO_free(key);\r
+ return pkey;\r
+ }\r
++#endif /* !OPENSSL_NO_STDIO */\r
+ \r
+ /* Function definitions for handling configuration options. */\r
+ \r
+ static void TS_CONF_lookup_fail(const char *name, const char *tag)\r
+ {\r
+- fprintf(stderr, "variable lookup failed for %s::%s\n", name, tag);\r
++ TSerr(TS_F_TS_CONF_LOOKUP_FAIL, TS_R_VAR_LOOKUP_FAILURE);\r
++ ERR_add_error_data(3, name, "::", tag);\r
+ }\r
+ \r
+ static void TS_CONF_invalid(const char *name, const char *tag)\r
+ {\r
+- fprintf(stderr, "invalid variable value for %s::%s\n", name, tag);\r
++ TSerr(TS_F_TS_CONF_INVALID, TS_R_VAR_BAD_VALUE);\r
++ ERR_add_error_data(3, name, "::", tag);\r
+ }\r
+ \r
+ const char *TS_CONF_get_tsa_section(CONF *conf, const char *section)\r
+@@ -237,6 +241,7 @@ int TS_CONF_set_default_engine(const char *name)\r
+ \r
+ #endif\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
+ int TS_CONF_set_signer_cert(CONF *conf, const char *section,\r
+ const char *cert, TS_RESP_CTX *ctx)\r
+ {\r
+@@ -302,6 +307,7 @@ int TS_CONF_set_signer_key(CONF *conf, const char *section,\r
+ EVP_PKEY_free(key_obj);\r
+ return ret;\r
+ }\r
++#endif /* !OPENSSL_NO_STDIO */\r
+ \r
+ int TS_CONF_set_def_policy(CONF *conf, const char *section,\r
+ const char *policy, TS_RESP_CTX *ctx)\r
+diff --git a/crypto/ts/ts_err.c b/crypto/ts/ts_err.c\r
+index ff1abf4..3f5b78f 100644\r
+--- a/crypto/ts/ts_err.c\r
++++ b/crypto/ts/ts_err.c\r
+@@ -1,6 +1,6 @@\r
+ /* crypto/ts/ts_err.c */\r
+ /* ====================================================================\r
+- * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.\r
++ * Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+@@ -87,6 +87,11 @@ static ERR_STRING_DATA TS_str_functs[] = {\r
+ {ERR_FUNC(TS_F_TS_CHECK_SIGNING_CERTS), "TS_CHECK_SIGNING_CERTS"},\r
+ {ERR_FUNC(TS_F_TS_CHECK_STATUS_INFO), "TS_CHECK_STATUS_INFO"},\r
+ {ERR_FUNC(TS_F_TS_COMPUTE_IMPRINT), "TS_COMPUTE_IMPRINT"},\r
++ {ERR_FUNC(TS_F_TS_CONF_INVALID), "ts_CONF_invalid"},\r
++ {ERR_FUNC(TS_F_TS_CONF_LOAD_CERT), "TS_CONF_load_cert"},\r
++ {ERR_FUNC(TS_F_TS_CONF_LOAD_CERTS), "TS_CONF_load_certs"},\r
++ {ERR_FUNC(TS_F_TS_CONF_LOAD_KEY), "TS_CONF_load_key"},\r
++ {ERR_FUNC(TS_F_TS_CONF_LOOKUP_FAIL), "ts_CONF_lookup_fail"},\r
+ {ERR_FUNC(TS_F_TS_CONF_SET_DEFAULT_ENGINE), "TS_CONF_set_default_engine"},\r
+ {ERR_FUNC(TS_F_TS_GET_STATUS_TEXT), "TS_GET_STATUS_TEXT"},\r
+ {ERR_FUNC(TS_F_TS_MSG_IMPRINT_SET_ALGO), "TS_MSG_IMPRINT_set_algo"},\r
+@@ -132,6 +137,8 @@ static ERR_STRING_DATA TS_str_functs[] = {\r
+ static ERR_STRING_DATA TS_str_reasons[] = {\r
+ {ERR_REASON(TS_R_BAD_PKCS7_TYPE), "bad pkcs7 type"},\r
+ {ERR_REASON(TS_R_BAD_TYPE), "bad type"},\r
++ {ERR_REASON(TS_R_CANNOT_LOAD_CERT), "cannot load certificate"},\r
++ {ERR_REASON(TS_R_CANNOT_LOAD_KEY), "cannot load private key"},\r
+ {ERR_REASON(TS_R_CERTIFICATE_VERIFY_ERROR), "certificate verify error"},\r
+ {ERR_REASON(TS_R_COULD_NOT_SET_ENGINE), "could not set engine"},\r
+ {ERR_REASON(TS_R_COULD_NOT_SET_TIME), "could not set time"},\r
+@@ -170,6 +177,8 @@ static ERR_STRING_DATA TS_str_reasons[] = {\r
+ {ERR_REASON(TS_R_UNACCEPTABLE_POLICY), "unacceptable policy"},\r
+ {ERR_REASON(TS_R_UNSUPPORTED_MD_ALGORITHM), "unsupported md algorithm"},\r
+ {ERR_REASON(TS_R_UNSUPPORTED_VERSION), "unsupported version"},\r
++ {ERR_REASON(TS_R_VAR_BAD_VALUE), "var bad value"},\r
++ {ERR_REASON(TS_R_VAR_LOOKUP_FAILURE), "cannot find config variable"},\r
+ {ERR_REASON(TS_R_WRONG_CONTENT_TYPE), "wrong content type"},\r
+ {0, NULL}\r
+ };\r
+diff --git a/crypto/ui/ui_util.c b/crypto/ui/ui_util.c\r
+index 0f29011..80dd40e 100644\r
+--- a/crypto/ui/ui_util.c\r
++++ b/crypto/ui/ui_util.c\r
+@@ -56,6 +56,10 @@\r
+ #include <string.h>\r
+ #include "ui_locl.h"\r
+ \r
++#ifndef BUFSIZ\r
++#define BUFSIZ 256\r
++#endif\r
++\r
+ int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,\r
+ int verify)\r
+ {\r
+diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c\r
+index 9ee8f8d..64b052e 100644\r
+--- a/crypto/x509/by_dir.c\r
++++ b/crypto/x509/by_dir.c\r
+@@ -69,6 +69,8 @@\r
+ # include <sys/stat.h>\r
+ #endif\r
+ \r
++#ifndef OPENSSL_NO_STDIO\r
++\r
+ #include <openssl/lhash.h>\r
+ #include <openssl/x509.h>\r
+ \r
+@@ -434,3 +436,5 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,\r
+ BUF_MEM_free(b);\r
+ return (ok);\r
+ }\r
++\r
++#endif /* OPENSSL_NO_STDIO */\r