anchor.diff:             "",
              "have_ssl_honor_cipher_order()   -> ?HAVE_SSL_HONOR_CIPHER_ORDER.",
              "have_ssl_client_renegotiation() -> ?HAVE_SSL_CLIENT_RENEGOTIATION.",
  -           "have_ssl_sni()                  -> ?HAVE_SSL_SNI.",
              "have_ssl_log_alert()            -> ?HAVE_SSL_LOG_ALERT.",
  -           "have_ssl_handshake()            -> ?HAVE_SSL_HANDSHAKE.",
  -           "have_start_error_logger()       -> ?HAVE_START_ERROR_LOGGER.",
              "",
              "-ifdef(HAVE_ERLANG_NOW).",
              "have_erlang_now() -> true.",
  
positive.code:            "-endif.",
             "",
             "-ifdef(HAVE_SSL_SNI).",
             "connection_information(Sock, Items) -> ",
             "    ssl:connection_information(Sock, Items).",
             "-else.",
             "connection_information(_, _) -> undefined.",
             "-endif.",
             "",
             "-ifdef(HAVE_SSL_HANDSHAKE).",
             "ssl_handshake(Sock, Timeout) ->",
             "    ssl:handshake(Sock, Timeout).",
             "-else.",
             "ssl_handshake(Sock, Timeout) ->",
             "    case ssl:ssl_accept(Sock, Timeout) of"
             "        ok -> {ok, Sock};",
  
negative.code:         ++
          case have_rand() of
              true  -> [{d, 'HAVE_RAND'}];
              false -> []
          end
          ++
          case have_ssl_sni() of
              true  -> [{d, 'HAVE_SSL_SNI'}];
              false -> []
          end
          ++
          case have_ssl_handshake() of
              true  -> [{d, 'HAVE_SSL_HANDSHAKE'}];
              false -> []
          end
          ++
          case have_start_error_logger() of
              true  -> [{d, 'HAVE_START_ERROR_LOGGER'}];
              false -> []
          end.
  
  