
# Copyright (C) Igor Sysoev


### STUB

if [ $USE_THREADS != NO ]; then

cat << END

$0: error: the threads support is broken now.

END
        exit 1
    fi

###


echo
echo "Configuration summary"


#case $USE_THREADS in
#    rfork)         echo "  + using rfork()ed threads" ;;
#    pthreads)      echo "  + using libpthread threads library" ;;
#    libthr)        echo "  + using FreeBSD libthr threads library" ;;
#    libc_r)        echo "  + using FreeBSD libc_r threads library" ;;
#    linuxthreads)  echo "  + using FreeBSD LinuxThreads port library" ;;
#    NO)            echo "  + threads are not used" ;;
#    *)             echo "  + using lib$USE_THREADS threads library" ;;
#esac

if [ $USE_PCRE = DISABLED ]; then
    echo "  + PCRE library is disabled"

else
    case $PCRE in
        YES)   echo "  + using system PCRE library" ;;
        NONE)  echo "  + PCRE library is not used" ;;
        NO)    echo "  + PCRE library is not found" ;;
        *)     echo "  + using PCRE library: $PCRE" ;;
    esac
fi

case $OPENSSL in
    YES)   echo "  + using system OpenSSL library" ;;
    NONE)  echo "  + OpenSSL library is not used" ;;
    NO)    echo "  + OpenSSL library is not found" ;;
    *)     echo "  + using OpenSSL library: $OPENSSL" ;;
esac

case $MD5 in
    YES)   echo "  + md5: using $MD5_LIB library" ;;
    NONE)  echo "  + md5 library is not used" ;;
    NO)    echo "  + md5 library is not found" ;;
    *)     echo "  + using md5 library: $MD5" ;;
esac

case $SHA1 in
    YES)   echo "  + sha1: using $SHA1_LIB library" ;;
    NONE)  echo "  + sha1 library is not used" ;;
    NO)    echo "  + sha1 library is not found" ;;
    *)     echo "  + using sha1 library: $SHA1" ;;
esac

case $ZLIB in
    YES)   echo "  + using system zlib library" ;;
    NONE)  echo "  + zlib library is not used" ;;
    NO)    echo "  + zlib library is not found" ;;
    *)     echo "  + using zlib library: $ZLIB" ;;
esac

echo


cat << END
  nginx path prefix: "$NGX_PREFIX"
  nginx binary file: "$NGX_SBIN_PATH"
  nginx configuration prefix: "$NGX_CONF_PREFIX"
  nginx configuration file: "$NGX_CONF_PATH"
  nginx pid file: "$NGX_PID_PATH"
END

if test -n "$NGX_ERROR_LOG_PATH"; then
    echo "  nginx error log file: \"$NGX_ERROR_LOG_PATH\""
else
    echo "  nginx logs errors to stderr"
fi

cat << END
  nginx http access log file: "$NGX_HTTP_LOG_PATH"
  nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH"
  nginx http proxy temporary files: "$NGX_HTTP_PROXY_TEMP_PATH"
  nginx http fastcgi temporary files: "$NGX_HTTP_FASTCGI_TEMP_PATH"

END
