我在openssl源代碼中注意到一個奇怪的成語,
here并重復如下:
if ((in == NULL) && (passwds == NULL)) {
if (1) { (*
#ifndef OPENSSL_NO_UI
/* build a null-terminated list */
static char *passwds_static[2] = { NULL, NULL };
passwds = passwds_static;
if (in == NULL)
if (EVP_read_pw_string
(passwd_malloc, passwd_malloc_size, "Password: ",
!(passed_salt || in_noverify)) != 0)
goto end;
passwds[0] = passwd_malloc;
} else {
#endif
BIO_printf(bio_err, "password required\n");
goto end;
}
}
看來這段代碼相當于:
if ((in == NULL) && (passwds == NULL)) {
#ifndef OPENSSL_NO_UI
/* build a null-terminated list */
static char *passwds_static[2] = { NULL, NULL };
passwds = passwds_static;
if (in == NULL)
if (EVP_read_pw_string
(passwd_malloc, passwd_malloc_size, "Password: ",
!(passed_salt || in_noverify)) != 0)
goto end;
passwds[0] = passwd_malloc;
#else
BIO_printf(bio_err, "password required\n");
goto end;
#endif
}
我排除了一些解釋:
>它可能是為passwds_static引入塊范圍,但是如果將為類似的目的提供封閉的范圍
>它可能是一個通過幾個有意義的變換變得沒有意義的結構,但那個結構就是since the introduction of OPENSSL_NO_UI.
我在這里遺漏了什么嗎? (1)有什么好處?這是否用于其他代碼庫?
謝謝!