void ERR_load_ERR_strings(void) { static int init=1; if (init) { CRYPTO_w_lock(CRYPTO_LOCK_ERR); if (init == 0) { CRYPTO_w_unlock(CRYPTO_LOCK_ERR); return; } CRYPTO_w_unlock(CRYPTO_LOCK_ERR); #ifndef NO_ERR ERR_load_strings(0,ERR_str_libraries); ERR_load_strings(0,ERR_str_reasons); ERR_load_strings(ERR_LIB_SYS,ERR_str_functs); build_SYS_str_reasons(); ERR_load_strings(ERR_LIB_SYS,SYS_str_reasons); #endif init=0; } }
static void err_load_strings(void) { unsigned i, j = 0; err_fns_check(); /* This loop loads strings for the libraries for the ERR_R_*_LIB * reasons. */ for (i = ERR_LIB_NONE; i < ERR_NUM_LIBS; i++) { ERR_STRING_DATA *data = &kStaticErrors[j++]; data->string = kLibraryNames[i]; data->error = ERR_PACK(i, 0, 0); ERRFN(set_item)(data); data = &kStaticErrors[j++]; data->string = kLibraryNames[i]; data->error = ERR_PACK(0, 0, i); ERRFN(set_item)(data); } for (i = 1; i < 1 + NUM_SYS_ERRNOS; i++) { /* The "SYS" library sets errno values as the reason for its errors. * Thus we load the first |NUM_SYS_ERRNOS| errno strings as the * reason strings for that library. */ ERR_STRING_DATA *data = &kStaticErrors[j++]; data->string = strerror(i); data->error = ERR_PACK(ERR_LIB_SYS, 0, i); ERRFN(set_item)(data); } ERR_load_strings(kGlobalErrors); ERR_load_strings(ASN1_error_string_data); ERR_load_strings(BIO_error_string_data); ERR_load_strings(BN_error_string_data); ERR_load_strings(BUF_error_string_data); ERR_load_strings(CIPHER_error_string_data); ERR_load_strings(CONF_error_string_data); ERR_load_strings(CRYPTO_error_string_data); ERR_load_strings(DH_error_string_data); ERR_load_strings(DIGEST_error_string_data); ERR_load_strings(DSA_error_string_data); ERR_load_strings(ECDH_error_string_data); ERR_load_strings(ECDSA_error_string_data); ERR_load_strings(EC_error_string_data); ERR_load_strings(EVP_error_string_data); ERR_load_strings(OBJ_error_string_data); ERR_load_strings(PEM_error_string_data); ERR_load_strings(RSA_error_string_data); ERR_load_strings(X509V3_error_string_data); ERR_load_strings(X509_error_string_data); }