libs: updated to cURL 7.58.0
This commit is contained in:
parent
50a596810d
commit
f8b65b2e41
11086
curl/CHANGES
11086
curl/CHANGES
File diff suppressed because it is too large
Load Diff
|
@ -93,3 +93,32 @@ macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
|
||||||
endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||||
endif()
|
endif()
|
||||||
endmacro(CURL_INTERNAL_TEST_RUN)
|
endmacro(CURL_INTERNAL_TEST_RUN)
|
||||||
|
|
||||||
|
macro(CURL_NROFF_CHECK)
|
||||||
|
find_program(NROFF NAMES gnroff nroff)
|
||||||
|
if(NROFF)
|
||||||
|
# Need a way to write to stdin, this will do
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
|
||||||
|
# Tests for a valid nroff option to generate a manpage
|
||||||
|
foreach(_MANOPT "-man" "-mandoc")
|
||||||
|
execute_process(COMMAND "${NROFF}" ${_MANOPT}
|
||||||
|
OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
|
||||||
|
INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
|
||||||
|
ERROR_QUIET)
|
||||||
|
# Save the option if it was valid
|
||||||
|
if(NROFF_MANOPT_OUTPUT)
|
||||||
|
message("Found *nroff option: -- ${_MANOPT}")
|
||||||
|
set(NROFF_MANOPT ${_MANOPT})
|
||||||
|
set(NROFF_USEFUL ON)
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
# No need for the temporary file
|
||||||
|
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
|
||||||
|
if(NOT NROFF_USEFUL)
|
||||||
|
message(WARNING "Found no *nroff option to get plaintext from man pages")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "Found no *nroff program")
|
||||||
|
endif()
|
||||||
|
endmacro(CURL_NROFF_CHECK)
|
||||||
|
|
|
@ -32,9 +32,9 @@ int main(void) {
|
||||||
if(curl_cv_recv)
|
if(curl_cv_recv)
|
||||||
if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
foreach(recv_retv "int" "ssize_t" )
|
foreach(recv_retv "int" "ssize_t" )
|
||||||
foreach(recv_arg1 "int" "ssize_t" "SOCKET")
|
foreach(recv_arg1 "SOCKET" "int" )
|
||||||
foreach(recv_arg2 "void *" "char *")
|
foreach(recv_arg2 "char *" "void *" )
|
||||||
foreach(recv_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
foreach(recv_arg3 "int" "size_t" "socklen_t" "unsigned int")
|
||||||
foreach(recv_arg4 "int" "unsigned int")
|
foreach(recv_arg4 "int" "unsigned int")
|
||||||
if(NOT curl_cv_func_recv_done)
|
if(NOT curl_cv_func_recv_done)
|
||||||
unset(curl_cv_func_recv_test CACHE)
|
unset(curl_cv_func_recv_test CACHE)
|
||||||
|
@ -96,9 +96,9 @@ int main(void) {
|
||||||
if(curl_cv_send)
|
if(curl_cv_send)
|
||||||
if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
foreach(send_retv "int" "ssize_t" )
|
foreach(send_retv "int" "ssize_t" )
|
||||||
foreach(send_arg1 "int" "ssize_t" "SOCKET")
|
foreach(send_arg1 "SOCKET" "int" "ssize_t" )
|
||||||
foreach(send_arg2 "const void *" "void *" "char *" "const char *")
|
foreach(send_arg2 "const char *" "const void *" "void *" "char *")
|
||||||
foreach(send_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
foreach(send_arg3 "int" "size_t" "socklen_t" "unsigned int")
|
||||||
foreach(send_arg4 "int" "unsigned int")
|
foreach(send_arg4 "int" "unsigned int")
|
||||||
if(NOT curl_cv_func_send_done)
|
if(NOT curl_cv_func_send_done)
|
||||||
unset(curl_cv_func_send_test CACHE)
|
unset(curl_cv_func_send_test CACHE)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||||
|
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||||
|
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||||
|
|
||||||
|
if (NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||||
|
set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
|
||||||
|
endif ()
|
||||||
|
message(${CMAKE_INSTALL_PREFIX})
|
||||||
|
|
||||||
|
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||||
|
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||||
|
foreach(file ${files})
|
||||||
|
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||||
|
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||||
|
exec_program(
|
||||||
|
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||||
|
OUTPUT_VARIABLE rm_out
|
||||||
|
RETURN_VALUE rm_retval
|
||||||
|
)
|
||||||
|
if(NOT "${rm_retval}" STREQUAL 0)
|
||||||
|
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||||
|
endif(NOT "${rm_retval}" STREQUAL 0)
|
||||||
|
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||||
|
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||||
|
endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||||
|
endforeach(file)
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
|
||||||
|
if(NOT CURL_FIND_COMPONENTS)
|
||||||
|
set(CURL_FIND_COMPONENTS curl libcurl)
|
||||||
|
if(CURL_FIND_REQUIRED)
|
||||||
|
set(CURL_FIND_REQUIRED_curl TRUE)
|
||||||
|
set(CURL_FIND_REQUIRED_libcurl TRUE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_curl_missing_components)
|
||||||
|
foreach(_comp ${CURL_FIND_COMPONENTS})
|
||||||
|
if(EXISTS "${_DIR}/${_comp}-target.cmake")
|
||||||
|
include("${_DIR}/${_comp}-target.cmake")
|
||||||
|
set(CURL_${_comp}_FOUND TRUE)
|
||||||
|
else()
|
||||||
|
set(CURL_${_comp}_FOUND FALSE)
|
||||||
|
if(CURL_FIND_REQUIRED_${_comp})
|
||||||
|
set(CURL_FOUND FALSE)
|
||||||
|
list(APPEND _curl_missing_components ${_comp})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(_curl_missing_components)
|
||||||
|
set(CURL_NOT_FOUND_MESSAGE "Following required components not found: " ${_curl_missing_components})
|
||||||
|
else()
|
||||||
|
if(TARGET CURL::libcurl)
|
||||||
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" _curl_current_config)
|
||||||
|
if(NOT _curl_current_config)
|
||||||
|
set(_curl_current_config "NOCONFIG")
|
||||||
|
endif()
|
||||||
|
get_target_property(_curl_configurations CURL::libcurl IMPORTED_CONFIGURATIONS)
|
||||||
|
list(FIND _curl_configurations "${_curl_current_config}" _i)
|
||||||
|
if(_i LESS 0)
|
||||||
|
set(_curl_config "RELEASE")
|
||||||
|
list(FIND _curl_configurations "${_curl_current_config}" _i)
|
||||||
|
if(_i LESS 0)
|
||||||
|
set(_curl_config "NOCONFIG")
|
||||||
|
list(FIND _curl_configurations "${_curl_current_config}" _i)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(_i LESS 0)
|
||||||
|
set(_curl_current_config "") # let CMake pick config at random
|
||||||
|
else()
|
||||||
|
set(_curl_current_config "_${_curl_current_config}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_target_property(CURL_INCLUDE_DIRS CURL::libcurl INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
get_target_property(CURL_LIBRARIES CURL::libcurl "LOCATION${_curl_current_config}")
|
||||||
|
set(_curl_current_config)
|
||||||
|
set(_curl_configurations)
|
||||||
|
set(_i)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_curl_missing_components)
|
|
@ -5,7 +5,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -38,11 +38,12 @@
|
||||||
# To check:
|
# To check:
|
||||||
# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
|
# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
|
||||||
# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
|
# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
|
||||||
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
|
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
||||||
include(Utilities)
|
include(Utilities)
|
||||||
include(Macros)
|
include(Macros)
|
||||||
include(CMakeDependentOption)
|
include(CMakeDependentOption)
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
|
||||||
project( CURL C )
|
project( CURL C )
|
||||||
|
|
||||||
|
@ -72,20 +73,36 @@ set(OS "\"${CMAKE_SYSTEM_NAME}\"")
|
||||||
include_directories(${PROJECT_BINARY_DIR}/include/curl)
|
include_directories(${PROJECT_BINARY_DIR}/include/curl)
|
||||||
include_directories( ${CURL_SOURCE_DIR}/include )
|
include_directories( ${CURL_SOURCE_DIR}/include )
|
||||||
|
|
||||||
|
option(CURL_WERROR "Turn compiler warnings into errors" OFF)
|
||||||
|
option(PICKY_COMPILER "Enable picky compiler options" ON)
|
||||||
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
|
option(BUILD_CURL_EXE "Set to ON to build curl executable." ON)
|
||||||
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
|
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
|
||||||
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
|
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
CMAKE_DEPENDENT_OPTION(ENABLE_THREADED_RESOLVER
|
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
|
||||||
"Set to ON to enable threaded DNS lookup"
|
option(ENABLE_INET_PTON "Set to OFF to prevent usage of inet_pton when building against modern SDKs while still requiring compatibility with older Windows versions, such as Windows XP, Windows Server 2003 etc." ON)
|
||||||
ON "NOT ENABLE_ARES"
|
|
||||||
OFF)
|
|
||||||
else()
|
|
||||||
option(ENABLE_THREADED_RESOLVER "Set to ON to enable POSIX threaded DNS lookup" OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
CMAKE_DEPENDENT_OPTION(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DNS lookup"
|
||||||
|
ON "NOT ENABLE_ARES"
|
||||||
|
OFF)
|
||||||
|
|
||||||
option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
|
option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF)
|
||||||
option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
|
option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF)
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||||
|
if (PICKY_COMPILER)
|
||||||
|
foreach (_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wundef -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wno-sign-conversion -Wvla -Wdouble-promotion -Wno-system-headers)
|
||||||
|
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
|
||||||
|
# test result in.
|
||||||
|
CHECK_C_COMPILER_FLAG(${_CCOPT} OPT${_CCOPT})
|
||||||
|
if(OPT${_CCOPT})
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif(PICKY_COMPILER)
|
||||||
|
endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||||
|
|
||||||
if (ENABLE_DEBUG)
|
if (ENABLE_DEBUG)
|
||||||
# DEBUGBUILD will be defined only for Debug builds
|
# DEBUGBUILD will be defined only for Debug builds
|
||||||
if(NOT CMAKE_VERSION VERSION_LESS 3.0)
|
if(NOT CMAKE_VERSION VERSION_LESS 3.0)
|
||||||
|
@ -100,13 +117,12 @@ if (ENABLE_CURLDEBUG)
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
|
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# For debug libs and exes, add "-d" postfix
|
||||||
|
set(CMAKE_DEBUG_POSTFIX "-d" CACHE STRING "Set debug library postfix")
|
||||||
|
|
||||||
# initialize CURL_LIBS
|
# initialize CURL_LIBS
|
||||||
set(CURL_LIBS "")
|
set(CURL_LIBS "")
|
||||||
|
|
||||||
if(ENABLE_THREADED_RESOLVER AND ENABLE_ARES)
|
|
||||||
message(FATAL_ERROR "Options ENABLE_THREADED_RESOLVER and ENABLE_ARES are mutually exclusive")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ENABLE_ARES)
|
if(ENABLE_ARES)
|
||||||
set(USE_ARES 1)
|
set(USE_ARES 1)
|
||||||
find_package(CARES REQUIRED)
|
find_package(CARES REQUIRED)
|
||||||
|
@ -114,11 +130,6 @@ if(ENABLE_ARES)
|
||||||
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
|
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
option(BUILD_RELEASE_DEBUG_DIRS "Set OFF to build each configuration to a separate directory" OFF)
|
|
||||||
mark_as_advanced(BUILD_RELEASE_DEBUG_DIRS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(CurlSymbolHiding)
|
include(CurlSymbolHiding)
|
||||||
|
|
||||||
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
|
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
|
||||||
|
@ -176,8 +187,6 @@ option(CURL_DISABLE_CRYPTO_AUTH "to disable cryptographic authentication" OFF)
|
||||||
mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
|
mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
|
||||||
option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
|
option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
|
||||||
mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
|
mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
|
||||||
option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use thread-safe functions" OFF)
|
|
||||||
mark_as_advanced(DISABLED_THREADSAFE)
|
|
||||||
option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON)
|
option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON)
|
||||||
mark_as_advanced(ENABLE_IPV6)
|
mark_as_advanced(ENABLE_IPV6)
|
||||||
if(ENABLE_IPV6 AND NOT WIN32)
|
if(ENABLE_IPV6 AND NOT WIN32)
|
||||||
|
@ -194,48 +203,45 @@ if(ENABLE_IPV6 AND NOT WIN32)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ENABLE_MANUAL "to provide the built-in manual" ON)
|
CURL_NROFF_CHECK()
|
||||||
unset(USE_MANUAL CACHE) # TODO: cache NROFF/NROFF_MANOPT/USE_MANUAL vars?
|
|
||||||
if(ENABLE_MANUAL)
|
|
||||||
find_program(NROFF NAMES gnroff nroff)
|
|
||||||
if(NROFF)
|
|
||||||
# Need a way to write to stdin, this will do
|
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
|
|
||||||
# Tests for a valid nroff option to generate a manpage
|
|
||||||
foreach(_MANOPT "-man" "-mandoc")
|
|
||||||
execute_process(COMMAND "${NROFF}" ${_MANOPT}
|
|
||||||
OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
|
|
||||||
INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
|
|
||||||
ERROR_QUIET)
|
|
||||||
# Save the option if it was valid
|
|
||||||
if(NROFF_MANOPT_OUTPUT)
|
|
||||||
message("Found *nroff option: -- ${_MANOPT}")
|
|
||||||
set(NROFF_MANOPT ${_MANOPT})
|
|
||||||
set(USE_MANUAL 1)
|
|
||||||
break()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
# No need for the temporary file
|
|
||||||
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
|
|
||||||
if(NOT USE_MANUAL)
|
|
||||||
message(WARNING "Found no *nroff option to get plaintext from man pages")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(WARNING "Found no *nroff program")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
# Required for building manual, docs, tests
|
|
||||||
find_package(Perl)
|
find_package(Perl)
|
||||||
|
|
||||||
|
CMAKE_DEPENDENT_OPTION(ENABLE_MANUAL "to provide the built-in manual"
|
||||||
|
ON "NROFF_USEFUL;PERL_FOUND"
|
||||||
|
OFF)
|
||||||
|
|
||||||
|
if(NOT PERL_FOUND)
|
||||||
|
message(STATUS "Perl not found, testing disabled.")
|
||||||
|
set(BUILD_TESTING OFF)
|
||||||
|
endif()
|
||||||
|
if(ENABLE_MANUAL)
|
||||||
|
set(USE_MANUAL ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
# We need ansi c-flags, especially on HP
|
# We need ansi c-flags, especially on HP
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
|
||||||
set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
|
set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
|
||||||
|
|
||||||
|
if(CURL_STATIC_CRT)
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Disable warnings on Borland to avoid changing 3rd party code.
|
# Disable warnings on Borland to avoid changing 3rd party code.
|
||||||
if(BORLAND)
|
if(BORLAND)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
|
||||||
endif(BORLAND)
|
endif(BORLAND)
|
||||||
|
|
||||||
|
if(CURL_WERROR)
|
||||||
|
if(MSVC_VERSION)
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /WX")
|
||||||
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX")
|
||||||
|
else()
|
||||||
|
# this assumes clang or gcc style options
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||||
|
endif()
|
||||||
|
endif(CURL_WERROR)
|
||||||
|
|
||||||
# If we are on AIX, do the _ALL_SOURCE magic
|
# If we are on AIX, do the _ALL_SOURCE magic
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
|
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
|
||||||
set(_ALL_SOURCE 1)
|
set(_ALL_SOURCE 1)
|
||||||
|
@ -258,19 +264,14 @@ if(WIN32)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
if(ENABLE_THREADED_RESOLVER)
|
if(ENABLE_THREADED_RESOLVER)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(USE_THREADS_WIN32 ON)
|
set(USE_THREADS_WIN32 ON)
|
||||||
else()
|
else()
|
||||||
check_include_file_concat("pthread.h" HAVE_PTHREAD_H)
|
set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT})
|
||||||
if(HAVE_PTHREAD_H)
|
set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
|
||||||
set(CMAKE_THREAD_PREFER_PTHREAD 1)
|
|
||||||
find_package(Threads)
|
|
||||||
if(CMAKE_USE_PTHREADS_INIT)
|
|
||||||
set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
set(USE_THREADS_POSIX 1)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check for all needed libraries
|
# Check for all needed libraries
|
||||||
|
@ -365,7 +366,6 @@ if(CMAKE_USE_OPENSSL)
|
||||||
check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
|
check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
|
||||||
check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H)
|
check_include_file("openssl/err.h" HAVE_OPENSSL_ERR_H)
|
||||||
check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H)
|
check_include_file("openssl/pem.h" HAVE_OPENSSL_PEM_H)
|
||||||
check_include_file("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
|
|
||||||
check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
|
check_include_file("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
|
||||||
check_include_file("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
|
check_include_file("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
|
||||||
check_include_file("openssl/x509.h" HAVE_OPENSSL_X509_H)
|
check_include_file("openssl/x509.h" HAVE_OPENSSL_X509_H)
|
||||||
|
@ -737,7 +737,6 @@ check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H)
|
||||||
check_include_file_concat("io.h" HAVE_IO_H)
|
check_include_file_concat("io.h" HAVE_IO_H)
|
||||||
check_include_file_concat("krb.h" HAVE_KRB_H)
|
check_include_file_concat("krb.h" HAVE_KRB_H)
|
||||||
check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
|
check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
|
||||||
check_include_file_concat("limits.h" HAVE_LIMITS_H)
|
|
||||||
check_include_file_concat("locale.h" HAVE_LOCALE_H)
|
check_include_file_concat("locale.h" HAVE_LOCALE_H)
|
||||||
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
|
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
|
||||||
check_include_file_concat("netdb.h" HAVE_NETDB_H)
|
check_include_file_concat("netdb.h" HAVE_NETDB_H)
|
||||||
|
@ -795,50 +794,6 @@ if(NOT HAVE_SIZEOF_SSIZE_T)
|
||||||
endif(NOT HAVE_SIZEOF_SSIZE_T)
|
endif(NOT HAVE_SIZEOF_SSIZE_T)
|
||||||
# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test
|
# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test
|
||||||
|
|
||||||
# Different sizeofs, etc.
|
|
||||||
|
|
||||||
# define CURL_SIZEOF_LONG 4
|
|
||||||
# define CURL_TYPEOF_CURL_OFF_T long long
|
|
||||||
# define CURL_FORMAT_CURL_OFF_T "lld"
|
|
||||||
# define CURL_FORMAT_CURL_OFF_TU "llu"
|
|
||||||
# define CURL_FORMAT_OFF_T "%lld"
|
|
||||||
# define CURL_SIZEOF_CURL_OFF_T 8
|
|
||||||
# define CURL_SUFFIX_CURL_OFF_T LL
|
|
||||||
# define CURL_SUFFIX_CURL_OFF_TU ULL
|
|
||||||
|
|
||||||
set(CURL_SIZEOF_LONG ${SIZEOF_LONG})
|
|
||||||
|
|
||||||
if(SIZEOF_LONG EQUAL 8)
|
|
||||||
set(CURL_TYPEOF_CURL_OFF_T long)
|
|
||||||
set(CURL_SIZEOF_CURL_OFF_T 8)
|
|
||||||
set(CURL_FORMAT_CURL_OFF_T "ld")
|
|
||||||
set(CURL_FORMAT_CURL_OFF_TU "lu")
|
|
||||||
set(CURL_FORMAT_OFF_T "%ld")
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_T L)
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_TU UL)
|
|
||||||
endif(SIZEOF_LONG EQUAL 8)
|
|
||||||
|
|
||||||
if(SIZEOF_LONG_LONG EQUAL 8)
|
|
||||||
set(CURL_TYPEOF_CURL_OFF_T "long long")
|
|
||||||
set(CURL_SIZEOF_CURL_OFF_T 8)
|
|
||||||
set(CURL_FORMAT_CURL_OFF_T "lld")
|
|
||||||
set(CURL_FORMAT_CURL_OFF_TU "llu")
|
|
||||||
set(CURL_FORMAT_OFF_T "%lld")
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_T LL)
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_TU ULL)
|
|
||||||
endif(SIZEOF_LONG_LONG EQUAL 8)
|
|
||||||
|
|
||||||
if(NOT CURL_TYPEOF_CURL_OFF_T)
|
|
||||||
set(CURL_TYPEOF_CURL_OFF_T ${ssize_t})
|
|
||||||
set(CURL_SIZEOF_CURL_OFF_T ${SIZEOF_SSIZE_T})
|
|
||||||
# TODO: need adjustment here.
|
|
||||||
set(CURL_FORMAT_CURL_OFF_T "ld")
|
|
||||||
set(CURL_FORMAT_CURL_OFF_TU "lu")
|
|
||||||
set(CURL_FORMAT_OFF_T "%ld")
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_T L)
|
|
||||||
set(CURL_SUFFIX_CURL_OFF_TU LU)
|
|
||||||
endif(NOT CURL_TYPEOF_CURL_OFF_T)
|
|
||||||
|
|
||||||
if(HAVE_SIZEOF_LONG_LONG)
|
if(HAVE_SIZEOF_LONG_LONG)
|
||||||
set(HAVE_LONGLONG 1)
|
set(HAVE_LONGLONG 1)
|
||||||
set(HAVE_LL 1)
|
set(HAVE_LL 1)
|
||||||
|
@ -918,13 +873,26 @@ check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
|
||||||
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
|
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
|
||||||
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
|
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
|
||||||
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
|
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
|
||||||
|
check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE)
|
||||||
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
|
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
|
||||||
check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
|
check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
|
||||||
check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
|
check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
|
||||||
check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
|
check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
|
||||||
|
check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
|
||||||
|
|
||||||
# symbol exists in win32, but function does not.
|
# symbol exists in win32, but function does not.
|
||||||
check_function_exists(inet_pton HAVE_INET_PTON)
|
if(WIN32)
|
||||||
|
if(ENABLE_INET_PTON)
|
||||||
|
check_function_exists(inet_pton HAVE_INET_PTON)
|
||||||
|
# _WIN32_WINNT_VISTA (0x0600)
|
||||||
|
add_definitions(-D_WIN32_WINNT=0x0600)
|
||||||
|
else()
|
||||||
|
# _WIN32_WINNT_WINXP (0x0501)
|
||||||
|
add_definitions(-D_WIN32_WINNT=0x0501)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
check_function_exists(inet_pton HAVE_INET_PTON)
|
||||||
|
endif()
|
||||||
|
|
||||||
check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
|
check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
|
||||||
if(HAVE_FSETXATTR)
|
if(HAVE_FSETXATTR)
|
||||||
|
@ -996,6 +964,13 @@ if(HAVE_FILE_OFFSET_BITS)
|
||||||
set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
|
set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||||
endif(HAVE_FILE_OFFSET_BITS)
|
endif(HAVE_FILE_OFFSET_BITS)
|
||||||
check_type_size("off_t" SIZEOF_OFF_T)
|
check_type_size("off_t" SIZEOF_OFF_T)
|
||||||
|
|
||||||
|
# include this header to get the type
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCE_DIR}/include")
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
|
||||||
|
check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "")
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_FLAGS)
|
set(CMAKE_REQUIRED_FLAGS)
|
||||||
|
|
||||||
foreach(CURL_TEST
|
foreach(CURL_TEST
|
||||||
|
@ -1111,7 +1086,7 @@ else()
|
||||||
set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
|
set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO test which of these headers are required for the typedefs used in curlbuild.h
|
# TODO test which of these headers are required
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CURL_PULL_WS2TCPIP_H ${HAVE_WS2TCPIP_H})
|
set(CURL_PULL_WS2TCPIP_H ${HAVE_WS2TCPIP_H})
|
||||||
else()
|
else()
|
||||||
|
@ -1126,11 +1101,6 @@ include(CMake/OtherTests.cmake)
|
||||||
|
|
||||||
add_definitions(-DHAVE_CONFIG_H)
|
add_definitions(-DHAVE_CONFIG_H)
|
||||||
|
|
||||||
# For windows, do not allow the compiler to use default target (Vista).
|
|
||||||
if(WIN32)
|
|
||||||
add_definitions(-D_WIN32_WINNT=0x0501)
|
|
||||||
endif(WIN32)
|
|
||||||
|
|
||||||
# For windows, all compilers used by cmake should support large files
|
# For windows, all compilers used by cmake should support large files
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(USE_WIN32_LARGE_FILES ON)
|
set(USE_WIN32_LARGE_FILES ON)
|
||||||
|
@ -1138,6 +1108,11 @@ endif(WIN32)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||||
|
if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
|
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
else(CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
|
||||||
|
endif(CMAKE_C_FLAGS MATCHES "/W[0-4]")
|
||||||
endif(MSVC)
|
endif(MSVC)
|
||||||
|
|
||||||
# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
|
# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
|
||||||
|
@ -1156,8 +1131,18 @@ function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
add_subdirectory(docs)
|
if(WIN32 AND NOT CYGWIN)
|
||||||
|
set(CURL_INSTALL_CMAKE_DIR CMake)
|
||||||
|
else()
|
||||||
|
set(CURL_INSTALL_CMAKE_DIR lib/cmake/curl)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(USE_MANUAL)
|
||||||
|
add_subdirectory(docs)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(lib)
|
add_subdirectory(lib)
|
||||||
|
|
||||||
if(BUILD_CURL_EXE)
|
if(BUILD_CURL_EXE)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1261,7 +1246,7 @@ set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||||
set(LIBCURL_LIBS "")
|
set(LIBCURL_LIBS "")
|
||||||
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
|
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
|
||||||
foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
|
foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
|
||||||
if(_lib MATCHES ".*/.*")
|
if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
|
||||||
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
|
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
|
||||||
else()
|
else()
|
||||||
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
|
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
|
||||||
|
@ -1297,17 +1282,30 @@ if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
|
||||||
set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
|
set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Installation.
|
# install headers
|
||||||
# First, install generated curlbuild.h
|
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/include/curl/curlbuild.h"
|
|
||||||
DESTINATION include/curl )
|
|
||||||
# Next, install other headers excluding curlbuild.h
|
|
||||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
|
||||||
DESTINATION include
|
DESTINATION include
|
||||||
FILES_MATCHING PATTERN "*.h"
|
FILES_MATCHING PATTERN "*.h")
|
||||||
PATTERN "curlbuild.h" EXCLUDE)
|
|
||||||
|
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${PROJECT_BINARY_DIR}/curl-config-version.cmake"
|
||||||
|
VERSION ${CURL_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(CMake/curl-config.cmake
|
||||||
|
"${PROJECT_BINARY_DIR}/curl-config.cmake"
|
||||||
|
COPYONLY
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${PROJECT_BINARY_DIR}/curl-config.cmake
|
||||||
|
${PROJECT_BINARY_DIR}/curl-config-version.cmake
|
||||||
|
DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
# Workaround for MSVS10 to avoid the Dialog Hell
|
# Workaround for MSVS10 to avoid the Dialog Hell
|
||||||
# FIXME: This could be removed with future version of CMake.
|
# FIXME: This could be removed with future version of CMake.
|
||||||
if(MSVC_VERSION EQUAL 1600)
|
if(MSVC_VERSION EQUAL 1600)
|
||||||
|
@ -1316,3 +1314,14 @@ if(MSVC_VERSION EQUAL 1600)
|
||||||
file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n")
|
file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NOT TARGET uninstall)
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
|
||||||
|
IMMEDIATE @ONLY)
|
||||||
|
|
||||||
|
add_custom_target(uninstall
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
|
||||||
|
endif()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
COPYRIGHT AND PERMISSION NOTICE
|
COPYRIGHT AND PERMISSION NOTICE
|
||||||
|
|
||||||
Copyright (c) 1996 - 2017, Daniel Stenberg, <daniel@haxx.se>, and many
|
Copyright (c) 1996 - 2018, Daniel Stenberg, <daniel@haxx.se>, and many
|
||||||
contributors, see the THANKS file.
|
contributors, see the THANKS file.
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
|
@ -126,15 +126,6 @@ if test ! -z $SDK32; then
|
||||||
pwd
|
pwd
|
||||||
lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
|
lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
|
||||||
rm libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
|
rm libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
|
||||||
cp libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild32.h
|
|
||||||
cp include/curl/curlbuild.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild64.h
|
|
||||||
cat >libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild.h <<EOF
|
|
||||||
#ifdef __LP64__
|
|
||||||
#include "curl/curlbuild64.h"
|
|
||||||
#else
|
|
||||||
#include "curl/curlbuild32.h"
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pwd
|
pwd
|
||||||
|
|
|
@ -27,10 +27,11 @@ ACLOCAL_AMFLAGS = -I m4
|
||||||
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
||||||
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
||||||
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
||||||
include/curl/curlbuild.h.cmake CMake/Macros.cmake \
|
CMake/Macros.cmake \
|
||||||
CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
|
CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
|
||||||
CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
|
CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
|
||||||
CMake/FindMbedTLS.cmake
|
CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in \
|
||||||
|
CMake/curl-config.cmake
|
||||||
|
|
||||||
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
|
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
|
||||||
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
|
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
|
||||||
|
@ -95,6 +96,13 @@ VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
|
||||||
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
|
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
|
||||||
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
|
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
|
||||||
|
|
||||||
|
VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
|
||||||
|
VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
|
||||||
|
VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
|
||||||
|
VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
|
||||||
|
VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
|
||||||
|
VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
|
||||||
|
|
||||||
VC_DIST = projects/README \
|
VC_DIST = projects/README \
|
||||||
projects/build-openssl.bat \
|
projects/build-openssl.bat \
|
||||||
projects/build-wolfssl.bat \
|
projects/build-wolfssl.bat \
|
||||||
|
@ -134,6 +142,11 @@ VC_DIST = projects/README \
|
||||||
projects/Windows/VC14/lib/libcurl.vcxproj.filters \
|
projects/Windows/VC14/lib/libcurl.vcxproj.filters \
|
||||||
projects/Windows/VC14/src/curl.sln \
|
projects/Windows/VC14/src/curl.sln \
|
||||||
projects/Windows/VC14/src/curl.vcxproj.filters \
|
projects/Windows/VC14/src/curl.vcxproj.filters \
|
||||||
|
projects/Windows/VC15/curl-all.sln \
|
||||||
|
projects/Windows/VC15/lib/libcurl.sln \
|
||||||
|
projects/Windows/VC15/lib/libcurl.vcxproj.filters \
|
||||||
|
projects/Windows/VC15/src/curl.sln \
|
||||||
|
projects/Windows/VC15/src/curl.vcxproj.filters \
|
||||||
projects/generate.bat \
|
projects/generate.bat \
|
||||||
projects/wolfssl_options.h \
|
projects/wolfssl_options.h \
|
||||||
projects/wolfssl_override.props
|
projects/wolfssl_override.props
|
||||||
|
@ -150,12 +163,12 @@ CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
|
||||||
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
|
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
|
||||||
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
|
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
|
||||||
$(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
|
$(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
|
||||||
$(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
|
$(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
|
||||||
|
|
||||||
bin_SCRIPTS = curl-config
|
bin_SCRIPTS = curl-config
|
||||||
|
|
||||||
SUBDIRS = lib docs src include
|
SUBDIRS = lib src
|
||||||
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts
|
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libcurl.pc
|
pkgconfig_DATA = libcurl.pc
|
||||||
|
@ -170,7 +183,7 @@ dist-hook:
|
||||||
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
||||||
for file in $$distit; do \
|
for file in $$distit; do \
|
||||||
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||||
cp $$file $(distdir)$$strip; \
|
cp -p $$file $(distdir)$$strip; \
|
||||||
done)
|
done)
|
||||||
|
|
||||||
html:
|
html:
|
||||||
|
@ -216,15 +229,6 @@ examples:
|
||||||
check-docs:
|
check-docs:
|
||||||
@(cd docs/libcurl; $(MAKE) check)
|
@(cd docs/libcurl; $(MAKE) check)
|
||||||
|
|
||||||
# This is a hook to have 'make clean' also clean up the docs and the tests
|
|
||||||
# dir. The extra check for the Makefiles being present is necessary because
|
|
||||||
# 'make distcheck' will make clean first in these directories _before_ it runs
|
|
||||||
# this hook.
|
|
||||||
clean-local:
|
|
||||||
@(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi)
|
|
||||||
@(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
||||||
# must contain the following line:
|
# must contain the following line:
|
||||||
# %_topdir /home/loic/local/rpm
|
# %_topdir /home/loic/local/rpm
|
||||||
|
@ -276,11 +280,13 @@ cygwinbin:
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
cd include && $(MAKE) install
|
cd include && $(MAKE) install
|
||||||
cd docs && $(MAKE) install
|
cd docs && $(MAKE) install
|
||||||
|
cd docs/libcurl && $(MAKE) install
|
||||||
|
|
||||||
# We extend the standard uninstall with a custom hook:
|
# We extend the standard uninstall with a custom hook:
|
||||||
uninstall-hook:
|
uninstall-hook:
|
||||||
cd include && $(MAKE) uninstall
|
cd include && $(MAKE) uninstall
|
||||||
cd docs && $(MAKE) uninstall
|
cd docs && $(MAKE) uninstall
|
||||||
|
cd docs/libcurl && $(MAKE) uninstall
|
||||||
|
|
||||||
ca-bundle: lib/mk-ca-bundle.pl
|
ca-bundle: lib/mk-ca-bundle.pl
|
||||||
@echo "generating a fresh ca-bundle.crt"
|
@echo "generating a fresh ca-bundle.crt"
|
||||||
|
@ -304,7 +310,8 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
|
||||||
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
|
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
|
||||||
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
|
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
|
||||||
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
||||||
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
|
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
|
||||||
|
$(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
|
||||||
@(win32_lib_srcs='$(LIB_CFILES)'; \
|
@(win32_lib_srcs='$(LIB_CFILES)'; \
|
||||||
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
|
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
|
||||||
win32_lib_rc='$(LIB_RCFILES)'; \
|
win32_lib_rc='$(LIB_RCFILES)'; \
|
||||||
|
@ -614,4 +621,24 @@ function gen_element(type, dir, file)\
|
||||||
-v src_rc="$$win32_src_rc" \
|
-v src_rc="$$win32_src_rc" \
|
||||||
-v src_x_srcs="$$sorted_src_x_srcs" \
|
-v src_x_srcs="$$sorted_src_x_srcs" \
|
||||||
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
||||||
"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
|
"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
|
||||||
|
\
|
||||||
|
echo "generating '$(VC15_LIBVCXPROJ)'"; \
|
||||||
|
awk -v proj_type=vcxproj \
|
||||||
|
-v lib_srcs="$$sorted_lib_srcs" \
|
||||||
|
-v lib_hdrs="$$sorted_lib_hdrs" \
|
||||||
|
-v lib_rc="$$win32_lib_rc" \
|
||||||
|
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
|
||||||
|
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
|
||||||
|
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||||
|
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||||
|
"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
|
||||||
|
\
|
||||||
|
echo "generating '$(VC15_SRCVCXPROJ)'"; \
|
||||||
|
awk -v proj_type=vcxproj \
|
||||||
|
-v src_srcs="$$sorted_src_srcs" \
|
||||||
|
-v src_hdrs="$$sorted_src_hdrs" \
|
||||||
|
-v src_rc="$$win32_src_rc" \
|
||||||
|
-v src_x_srcs="$$sorted_src_x_srcs" \
|
||||||
|
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
||||||
|
"$$awk_code" $(srcdir)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
|
||||||
|
|
103
curl/Makefile.in
103
curl/Makefile.in
|
@ -1,7 +1,7 @@
|
||||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -169,8 +169,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
configure.lineno config.status.lineno
|
configure.lineno config.status.lineno
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||||
$(top_builddir)/include/curl/curlbuild.h
|
|
||||||
CONFIG_CLEAN_FILES = curl-config libcurl.pc
|
CONFIG_CLEAN_FILES = curl-config libcurl.pc
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
@ -319,8 +318,11 @@ CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||||
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
||||||
|
CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
|
||||||
|
CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
|
||||||
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
||||||
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
||||||
|
CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
|
||||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
@ -346,7 +348,9 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||||
|
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
DEPDIR = @DEPDIR@
|
DEPDIR = @DEPDIR@
|
||||||
DLLTOOL = @DLLTOOL@
|
DLLTOOL = @DLLTOOL@
|
||||||
|
@ -363,6 +367,7 @@ FGREP = @FGREP@
|
||||||
GCOV = @GCOV@
|
GCOV = @GCOV@
|
||||||
GENHTML = @GENHTML@
|
GENHTML = @GENHTML@
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
|
HAVE_BROTLI = @HAVE_BROTLI@
|
||||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||||
HAVE_LIBZ = @HAVE_LIBZ@
|
HAVE_LIBZ = @HAVE_LIBZ@
|
||||||
|
@ -420,6 +425,7 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||||
SED = @SED@
|
SED = @SED@
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
|
SSL_BACKENDS = @SSL_BACKENDS@
|
||||||
SSL_ENABLED = @SSL_ENABLED@
|
SSL_ENABLED = @SSL_ENABLED@
|
||||||
SSL_LIBS = @SSL_LIBS@
|
SSL_LIBS = @SSL_LIBS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
|
@ -432,6 +438,7 @@ USE_DARWINSSL = @USE_DARWINSSL@
|
||||||
USE_GNUTLS = @USE_GNUTLS@
|
USE_GNUTLS = @USE_GNUTLS@
|
||||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||||
USE_LIBRTMP = @USE_LIBRTMP@
|
USE_LIBRTMP = @USE_LIBRTMP@
|
||||||
|
USE_LIBSSH = @USE_LIBSSH@
|
||||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||||
USE_MBEDTLS = @USE_MBEDTLS@
|
USE_MBEDTLS = @USE_MBEDTLS@
|
||||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||||
|
@ -505,10 +512,11 @@ ACLOCAL_AMFLAGS = -I m4
|
||||||
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
||||||
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
||||||
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
||||||
include/curl/curlbuild.h.cmake CMake/Macros.cmake \
|
CMake/Macros.cmake \
|
||||||
CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
|
CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
|
||||||
CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
|
CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
|
||||||
CMake/FindMbedTLS.cmake
|
CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in \
|
||||||
|
CMake/curl-config.cmake
|
||||||
|
|
||||||
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
|
VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
|
||||||
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
|
VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
|
||||||
|
@ -564,6 +572,12 @@ VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
|
||||||
VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
|
VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
|
||||||
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
|
VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
|
||||||
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
|
VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
|
||||||
|
VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
|
||||||
|
VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
|
||||||
|
VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
|
||||||
|
VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
|
||||||
|
VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
|
||||||
|
VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
|
||||||
VC_DIST = projects/README \
|
VC_DIST = projects/README \
|
||||||
projects/build-openssl.bat \
|
projects/build-openssl.bat \
|
||||||
projects/build-wolfssl.bat \
|
projects/build-wolfssl.bat \
|
||||||
|
@ -603,6 +617,11 @@ VC_DIST = projects/README \
|
||||||
projects/Windows/VC14/lib/libcurl.vcxproj.filters \
|
projects/Windows/VC14/lib/libcurl.vcxproj.filters \
|
||||||
projects/Windows/VC14/src/curl.sln \
|
projects/Windows/VC14/src/curl.sln \
|
||||||
projects/Windows/VC14/src/curl.vcxproj.filters \
|
projects/Windows/VC14/src/curl.vcxproj.filters \
|
||||||
|
projects/Windows/VC15/curl-all.sln \
|
||||||
|
projects/Windows/VC15/lib/libcurl.sln \
|
||||||
|
projects/Windows/VC15/lib/libcurl.vcxproj.filters \
|
||||||
|
projects/Windows/VC15/src/curl.sln \
|
||||||
|
projects/Windows/VC15/src/curl.vcxproj.filters \
|
||||||
projects/generate.bat \
|
projects/generate.bat \
|
||||||
projects/wolfssl_options.h \
|
projects/wolfssl_options.h \
|
||||||
projects/wolfssl_override.props
|
projects/wolfssl_override.props
|
||||||
|
@ -619,11 +638,11 @@ CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
|
||||||
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
|
$(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
|
||||||
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
|
$(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
|
||||||
$(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
|
$(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
|
||||||
$(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ)
|
$(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
|
||||||
|
|
||||||
bin_SCRIPTS = curl-config
|
bin_SCRIPTS = curl-config
|
||||||
SUBDIRS = lib docs src include
|
SUBDIRS = lib src
|
||||||
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts
|
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libcurl.pc
|
pkgconfig_DATA = libcurl.pc
|
||||||
LIB_VAUTH_CFILES = vauth/vauth.c vauth/cleartext.c vauth/cram.c \
|
LIB_VAUTH_CFILES = vauth/vauth.c vauth/cleartext.c vauth/cram.c \
|
||||||
|
@ -651,14 +670,15 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
|
||||||
http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
|
http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
|
||||||
strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
|
strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
|
||||||
inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
|
inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
|
||||||
ssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
|
ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
|
||||||
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
|
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
|
||||||
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
|
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
|
||||||
openldap.c curl_gethostname.c gopher.c idn_win32.c \
|
openldap.c curl_gethostname.c gopher.c idn_win32.c \
|
||||||
http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \
|
http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \
|
||||||
http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \
|
http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c \
|
||||||
curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
|
curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c \
|
||||||
x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c
|
x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c \
|
||||||
|
mime.c sha256.c setopt.c curl_path.c
|
||||||
|
|
||||||
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
||||||
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
|
formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h \
|
||||||
|
@ -677,7 +697,8 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
|
||||||
curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \
|
curl_sasl.h curl_multibyte.h hostcheck.h conncache.h \
|
||||||
curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
|
curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h \
|
||||||
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
|
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
|
||||||
curl_printf.h system_win32.h rand.h
|
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \
|
||||||
|
curl_path.h
|
||||||
|
|
||||||
LIB_RCFILES = libcurl.rc
|
LIB_RCFILES = libcurl.rc
|
||||||
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
|
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
|
||||||
|
@ -721,7 +742,6 @@ CURL_CFILES = \
|
||||||
tool_libinfo.c \
|
tool_libinfo.c \
|
||||||
tool_main.c \
|
tool_main.c \
|
||||||
tool_metalink.c \
|
tool_metalink.c \
|
||||||
tool_mfiles.c \
|
|
||||||
tool_msgs.c \
|
tool_msgs.c \
|
||||||
tool_operate.c \
|
tool_operate.c \
|
||||||
tool_operhlp.c \
|
tool_operhlp.c \
|
||||||
|
@ -762,7 +782,6 @@ CURL_HFILES = \
|
||||||
tool_libinfo.h \
|
tool_libinfo.h \
|
||||||
tool_main.h \
|
tool_main.h \
|
||||||
tool_metalink.h \
|
tool_metalink.h \
|
||||||
tool_mfiles.h \
|
|
||||||
tool_msgs.h \
|
tool_msgs.h \
|
||||||
tool_operate.h \
|
tool_operate.h \
|
||||||
tool_operhlp.h \
|
tool_operhlp.h \
|
||||||
|
@ -1066,7 +1085,7 @@ distdir: $(DISTFILES)
|
||||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|| chmod -R a+r "$(distdir)"
|
|| chmod -R a+r "$(distdir)"
|
||||||
dist-gzip: distdir
|
dist-gzip: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-bzip2: distdir
|
dist-bzip2: distdir
|
||||||
|
@ -1092,7 +1111,7 @@ dist-shar: distdir
|
||||||
@echo WARNING: "Support for shar distribution archives is" \
|
@echo WARNING: "Support for shar distribution archives is" \
|
||||||
"deprecated." >&2
|
"deprecated." >&2
|
||||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||||
$(am__post_remove_distdir)
|
$(am__post_remove_distdir)
|
||||||
|
|
||||||
dist-zip: distdir
|
dist-zip: distdir
|
||||||
|
@ -1110,7 +1129,7 @@ dist dist-all:
|
||||||
distcheck: dist
|
distcheck: dist
|
||||||
case '$(DIST_ARCHIVES)' in \
|
case '$(DIST_ARCHIVES)' in \
|
||||||
*.tar.gz*) \
|
*.tar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
*.tar.bz2*) \
|
*.tar.bz2*) \
|
||||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
*.tar.lz*) \
|
*.tar.lz*) \
|
||||||
|
@ -1120,7 +1139,7 @@ distcheck: dist
|
||||||
*.tar.Z*) \
|
*.tar.Z*) \
|
||||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
*.shar.gz*) \
|
*.shar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||||
*.zip*) \
|
*.zip*) \
|
||||||
unzip $(distdir).zip ;;\
|
unzip $(distdir).zip ;;\
|
||||||
esac
|
esac
|
||||||
|
@ -1230,7 +1249,7 @@ maintainer-clean-generic:
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-recursive
|
clean: clean-recursive
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-recursive
|
distclean: distclean-recursive
|
||||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
@ -1301,9 +1320,9 @@ uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA
|
||||||
|
|
||||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||||
am--refresh check check-am clean clean-cscope clean-generic \
|
am--refresh check check-am clean clean-cscope clean-generic \
|
||||||
clean-libtool clean-local cscope cscopelist-am ctags ctags-am \
|
clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||||
dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
|
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
|
||||||
dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
|
dist-tarZ dist-xz dist-zip distcheck distclean \
|
||||||
distclean-generic distclean-libtool distclean-tags \
|
distclean-generic distclean-libtool distclean-tags \
|
||||||
distcleancheck distdir distuninstallcheck dvi dvi-am html \
|
distcleancheck distdir distuninstallcheck dvi dvi-am html \
|
||||||
html-am info info-am install install-am install-binSCRIPTS \
|
html-am info info-am install install-am install-binSCRIPTS \
|
||||||
|
@ -1329,7 +1348,7 @@ dist-hook:
|
||||||
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
||||||
for file in $$distit; do \
|
for file in $$distit; do \
|
||||||
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||||
cp $$file $(distdir)$$strip; \
|
cp -p $$file $(distdir)$$strip; \
|
||||||
done)
|
done)
|
||||||
|
|
||||||
html:
|
html:
|
||||||
|
@ -1370,15 +1389,6 @@ examples:
|
||||||
check-docs:
|
check-docs:
|
||||||
@(cd docs/libcurl; $(MAKE) check)
|
@(cd docs/libcurl; $(MAKE) check)
|
||||||
|
|
||||||
# This is a hook to have 'make clean' also clean up the docs and the tests
|
|
||||||
# dir. The extra check for the Makefiles being present is necessary because
|
|
||||||
# 'make distcheck' will make clean first in these directories _before_ it runs
|
|
||||||
# this hook.
|
|
||||||
clean-local:
|
|
||||||
@(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi)
|
|
||||||
@(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
||||||
# must contain the following line:
|
# must contain the following line:
|
||||||
# %_topdir /home/loic/local/rpm
|
# %_topdir /home/loic/local/rpm
|
||||||
|
@ -1430,11 +1440,13 @@ cygwinbin:
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
cd include && $(MAKE) install
|
cd include && $(MAKE) install
|
||||||
cd docs && $(MAKE) install
|
cd docs && $(MAKE) install
|
||||||
|
cd docs/libcurl && $(MAKE) install
|
||||||
|
|
||||||
# We extend the standard uninstall with a custom hook:
|
# We extend the standard uninstall with a custom hook:
|
||||||
uninstall-hook:
|
uninstall-hook:
|
||||||
cd include && $(MAKE) uninstall
|
cd include && $(MAKE) uninstall
|
||||||
cd docs && $(MAKE) uninstall
|
cd docs && $(MAKE) uninstall
|
||||||
|
cd docs/libcurl && $(MAKE) uninstall
|
||||||
|
|
||||||
ca-bundle: lib/mk-ca-bundle.pl
|
ca-bundle: lib/mk-ca-bundle.pl
|
||||||
@echo "generating a fresh ca-bundle.crt"
|
@echo "generating a fresh ca-bundle.crt"
|
||||||
|
@ -1458,7 +1470,8 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
|
||||||
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
|
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
|
||||||
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
|
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
|
||||||
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
||||||
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS)
|
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
|
||||||
|
$(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
|
||||||
@(win32_lib_srcs='$(LIB_CFILES)'; \
|
@(win32_lib_srcs='$(LIB_CFILES)'; \
|
||||||
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
|
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
|
||||||
win32_lib_rc='$(LIB_RCFILES)'; \
|
win32_lib_rc='$(LIB_RCFILES)'; \
|
||||||
|
@ -1768,7 +1781,27 @@ function gen_element(type, dir, file)\
|
||||||
-v src_rc="$$win32_src_rc" \
|
-v src_rc="$$win32_src_rc" \
|
||||||
-v src_x_srcs="$$sorted_src_x_srcs" \
|
-v src_x_srcs="$$sorted_src_x_srcs" \
|
||||||
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
||||||
"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };)
|
"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
|
||||||
|
\
|
||||||
|
echo "generating '$(VC15_LIBVCXPROJ)'"; \
|
||||||
|
awk -v proj_type=vcxproj \
|
||||||
|
-v lib_srcs="$$sorted_lib_srcs" \
|
||||||
|
-v lib_hdrs="$$sorted_lib_hdrs" \
|
||||||
|
-v lib_rc="$$win32_lib_rc" \
|
||||||
|
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
|
||||||
|
-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
|
||||||
|
-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||||
|
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||||
|
"$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
|
||||||
|
\
|
||||||
|
echo "generating '$(VC15_SRCVCXPROJ)'"; \
|
||||||
|
awk -v proj_type=vcxproj \
|
||||||
|
-v src_srcs="$$sorted_src_srcs" \
|
||||||
|
-v src_hdrs="$$sorted_src_hdrs" \
|
||||||
|
-v src_rc="$$win32_src_rc" \
|
||||||
|
-v src_x_srcs="$$sorted_src_x_srcs" \
|
||||||
|
-v src_x_hdrs="$$sorted_src_x_hdrs" \
|
||||||
|
"$$awk_code" $(srcdir)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
|
|
@ -1,132 +1,100 @@
|
||||||
Curl and libcurl 7.54.1
|
Curl and libcurl 7.58.0
|
||||||
|
|
||||||
Public curl releases: 166
|
Public curl releases: 172
|
||||||
Command line options: 207
|
Command line options: 211
|
||||||
curl_easy_setopt() options: 245
|
curl_easy_setopt() options: 249
|
||||||
Public functions in libcurl: 61
|
Public functions in libcurl: 74
|
||||||
Contributors: 1571
|
Contributors: 1685
|
||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
o curl: show the libcurl release date in --version output [32]
|
o new libssh-powered SSH SCP/SFTP back-end
|
||||||
|
o curl-config: add --ssl-backends [10]
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
o CVE-2017-9502: file: URL buffer overflow [65]
|
o http2: fix incorrect trailer buffer size [40]
|
||||||
o openssl: fix memory leak in servercert
|
o http: prevent custom Authorization headers in redirects [55]
|
||||||
o tests: remove the html and PDF versions from the tarball
|
o travis: add boringssl build [1]
|
||||||
o mbedtls: enable NTLM (& SMB) even if MD4 support is unavailable
|
o examples/xmlstream.c: don't switch off CURL_GLOBAL_SSL [2]
|
||||||
o typecheck-gcc: handle function pointers properly [1]
|
o SSL: Avoid magic allocation of SSL backend specific data [3]
|
||||||
o llist: no longer uses malloc [2]
|
o lib: don't export all symbols, just everything curl_* [4]
|
||||||
o gnutls: removed some code when --disable-verbose is configured
|
o libssh2: send the correct CURLE error code on scp file not found
|
||||||
o lib: fix maybe-uninitialized warnings
|
o libssh2: return CURLE_UPLOAD_FAILED on failure to upload
|
||||||
o multi: clarify condition in curl_multi_wait [3]
|
o openssl: enable pkcs12 in boringssl builds [5]
|
||||||
o schannel: Don't treat encrypted partial record as pending data [4]
|
o libssh2: remove dead code from SSH_SFTP_QUOTE [6]
|
||||||
o configure: fix the -ldl check for openssl, add -lpthread check [5]
|
o sasl_getmesssage: make sure we have a long enough string to pass [7]
|
||||||
o configure: accept -Og and -Ofast GCC flags [6]
|
o conncache: fix several lock issues [8]
|
||||||
o Makefile: avoid use of GNU-specific form of $< [7]
|
o threaded-shared-conn.c: new example
|
||||||
o if2ip: fix -Wcast-align warning
|
o conncache: only allow multiplexing within same multi handle [9]
|
||||||
o configure: stop prepending to LDFLAGS, CPPFLAGS [8]
|
o configure: check for netinet/in6.h [11]
|
||||||
o curl: set a 100K buffer size by default [9]
|
o URL: tolerate backslash after drive letter for FILE: [12]
|
||||||
o typecheck-gcc: fix _curl_is_slist_info [10]
|
o openldap: add commented out debug possibilities [13]
|
||||||
o nss: do not leak PKCS #11 slot while loading a key [11]
|
o include: get netinet/in.h before linux/tcp.h [14]
|
||||||
o nss: load libnssckbi.so if no other trust is specified [12]
|
o CONNECT: keep close connection flag in http_connect_state struct [15]
|
||||||
o examples: ftpuploadfrommem.c [13]
|
o BINDINGS: another PostgreSQL client
|
||||||
o url: declare get_protocol_family() static [14]
|
o curl: limit -# update frequency for unknown total size [16]
|
||||||
o examples/cookie_interface.c: changed to example.com
|
o configure: add AX_CODE_COVERAGE only if using gcc [17]
|
||||||
o test1443: test --remote-time
|
o curl.h: remove incorrect comment about ERRORBUFFER
|
||||||
o curl: use utimes instead of obsolescent utime when available
|
o openssl: improve data-pending check for https proxy [18]
|
||||||
o url: fixed a memory leak on OOM while setting CURLOPT_BUFFERSIZE
|
o curl: remove __EMX__ #ifdefs [19]
|
||||||
o curl_rtmp: fix missing-variable-declarations warnings
|
o CURLOPT_PRIVATE.3: fix grammar [20]
|
||||||
o tests: fixed OOM handling of unit tests to abort test
|
o sftp: allow quoted commands to use relative paths [21]
|
||||||
o curl_setup: Ensure no more than one IDN lib is enabled [15]
|
o CURLOPT_DNS_CACHE_TIMEOUT.3: see also CURLOPT_RESOLVE
|
||||||
o tool: Fix missing prototype warnings for CURL_DOES_CONVERSIONS [16]
|
o RESOLVE: output verbose text when trying to set a duplicate name
|
||||||
o CURLOPT_BUFFERSIZE: 1024 bytes is now the minimum size [17]
|
o openssl: Disable file buffering for Win32 SSLKEYLOGFILE [22]
|
||||||
o curl: non-boolean command line args reject --no- prefixes [18]
|
o multi_done: prune DNS cache [23]
|
||||||
o telnet: Write full buffer instead of byte-by-byte [19]
|
o tests: update .gitignore for libtests
|
||||||
o typecheck-gcc: add missing string options [20]
|
o tests: mark data files as non-executable in git
|
||||||
o typecheck-gcc: add support for CURLINFO_SOCKET [21]
|
o CURLOPT_DNS_LOCAL_IP4.3: fixed the "SEE ALSO" to not self-reference
|
||||||
o opt man pages: they all have examples now
|
o curl.1: documented two missing valid exit codes
|
||||||
o curl_setup_once: use SEND_QUAL_ARG2 for swrite [22]
|
o curl.1: mention http:// and https:// as valid proxy prefixes
|
||||||
o test557: set a known good numeric locale
|
o vtls: replaced getenv() with curl_getenv() [24]
|
||||||
o schannel: return a more specific error code for SEC_E_UNTRUSTED_ROOT
|
o setopt: less *or equal* than INT_MAX/1000 should be fine [25]
|
||||||
o tests/server: make string literals const
|
o examples/smtp-mail.c: use separate defines for options and mail
|
||||||
o runtests: use -R for random order [23]
|
o curl: support >256 bytes warning messsages [26]
|
||||||
o unit1305: fix compiler warning
|
o conncache: fix a return code
|
||||||
o curl_slist_append.3: clarify a NULL input creates a new list
|
o krb5: fix a potential access of uninitialized memory
|
||||||
o tests/server: run checksrc by default in debug-builds
|
o rand: add a clang-analyzer work-around
|
||||||
o tests: fix -Wcast-qual warnings
|
o CURLOPT_READFUNCTION.3: refer to argument with correct name [27]
|
||||||
o runtests.pl: simplify the datacheck read section
|
o brotli: allow compiling with version 0.6.0
|
||||||
o curl: remove --environment and tool_writeenv.c [24]
|
o content_encoding: rework zlib_inflate [28]
|
||||||
o buildconf: fix hang on IRIX [25]
|
o curl_easy_reset: release mime-related data [29]
|
||||||
o tftp: silence bad-function-cast warning
|
o examples/rtsp: fix error handling macros [30]
|
||||||
o asyn-thread: fix unused macro warnings
|
o build-openssl.bat: Added support for VC15
|
||||||
o tool_parsecfg: fix -Wcast-qual warning
|
o build-wolfssl.bat: Added support for VC15
|
||||||
o sendrecv: fix MinGW-w64 warning
|
o build: Added Visual Studio 2017 project files
|
||||||
o test537: use correct variable type [26]
|
o winbuild: Added support for VC15
|
||||||
o rand: treat fake entropy the same regardless of endianness [27]
|
o curl: Support size modifiers for --max-filesize [32]
|
||||||
o curl: generate the --help output [28]
|
o examples/cacertinmem: ignore cert-already-exists error [33]
|
||||||
o tests: removed redundant --trace-ascii arguments
|
o brotli: data at the end of content can be lost [34]
|
||||||
o multi: assign IDs to all timers and make each timer singleton
|
o curl_version_info.3: call the argument 'age' [35]
|
||||||
o multi: use a fixed array of timers instead of malloc [29]
|
o openssl: fix memory leak of SSLKEYLOGFILE filename
|
||||||
o mbedtls: Support server renegotiation request [30]
|
o build: remove HAVE_LIMITS_H check [36]
|
||||||
o pipeline: fix mistakenly trying to pipeline POSTs [31]
|
o --mail-rcpt: fix short-text description
|
||||||
o lib510: don't write past the end of the buffer if it's too small
|
o scripts: allow all perl scripts to be run directly [37]
|
||||||
o CURLOPT_HTTPPROXYTUNNEL.3: clarify, add example
|
o progress: calculate transfer speed on milliseconds if possible [38]
|
||||||
o SecureTransport/DarwinSSL: Implement public key pinning [33]
|
o system.h: check __LONG_MAX__ for defining curl_off_t [31]
|
||||||
o curl.1: clarify --config
|
o easy: fix connection ownership in curl_easy_pause [39]
|
||||||
o curl_sasl: fix build error with CURL_DISABLE_CRYPTO_AUTH + USE_NTLM [34]
|
o setopt: reintroduce non-static Curl_vsetopt() for OS400 support [41]
|
||||||
o darwinssl: Fix exception when processing a client-side certificate [35]
|
o setopt: fix SSLVERSION to allow CURL_SSLVERSION_MAX_ values [42]
|
||||||
o curl.1: mention --oauth2-bearer's <token> argument
|
o configure.ac: append extra linker flags instead of prepending them [43]
|
||||||
o mkhelp.pl: do not add current time into curl binary [36]
|
o HTTP: bail out on negative Content-Length: values [44]
|
||||||
o asiohiper.cpp / evhiperfifo.c: deal with negative timerfunction input [37]
|
o docs: comment about CURLE_READ_ERROR returned by curl_mime_filedata
|
||||||
o ssh: fix memory leak in disconnect due to timeout [38]
|
o mime: clone mime tree upon easy handle duplication [45]
|
||||||
o tests: stabilize test 1034 [39]
|
o openssl: enable SSLKEYLOGFILE support by default [46]
|
||||||
o cmake: auto detection of CURL_CA_BUNDLE/CURL_CA_PATH [40]
|
o smtp/pop3/imap_get_message: decrease the data length too... [47]
|
||||||
o assert: avoid, use DEBUGASSERT instead [41]
|
o CURLOPT_TCP_NODELAY.3: fix typo [48]
|
||||||
o LDAP: using ldap_bind_s on Windows with methods [42]
|
o SMB: fix numeric constant suffix and variable types [49]
|
||||||
o redirect: store the "would redirect to" URL when max redirs is reached [43]
|
o ftp-wildcard: fix matching an empty string with "*[^a]" [50]
|
||||||
o winbuild: fix the nghttp2 build [44]
|
o curl_fnmatch: only allow 5 '*' sections in a single pattern
|
||||||
o examples: fix -Wimplicit-fallthrough warnings
|
o openssl: fix potential memory leak in SSLKEYLOGFILE logic
|
||||||
o time: fix type conversions and compiler warnings [45]
|
o SSH: Fix state machine for ssh-agent authentication [51]
|
||||||
o mbedtls: fix variable shadow warning
|
o examples/url2file.c: add missing curl_global_cleanup() call [52]
|
||||||
o test557: fix ubsan runtime error due to int left shift [46]
|
o http2: don't close connection when single transfer is stopped [53]
|
||||||
o transfer: init the infilesize from the postfields [47]
|
o libcurl-env.3: first version
|
||||||
o docs: clarify NO_PROXY further [48]
|
o curl: progress bar refresh, get width using ioctl() [54]
|
||||||
o build-wolfssl: Sync config with wolfSSL 3.11
|
o CONNECT_TO: fail attempt to set an IPv6 numerical without IPv6 support [56]
|
||||||
o curl-compilers.m4: enable -Wshift-sign-overflow for clang [49]
|
|
||||||
o example/externalsocket.c: make it use CLOSESOCKETFUNCTION too
|
|
||||||
o lib574.c: use correct callback proto
|
|
||||||
o lib583: fix compiler warning
|
|
||||||
o curl-compilers.m4: fix compiler_num for clang [50]
|
|
||||||
o typecheck-gcc.h: separate getinfo slist checks from other pointers [51]
|
|
||||||
o typecheck-gcc.h: check CURLINFO_TLS_SSL_PTR and CURLINFO_TLS_SESSION
|
|
||||||
o typecheck-gcc.h: check CURLINFO_CERTINFO [52]
|
|
||||||
o build: provide easy code coverage measuring [53]
|
|
||||||
o test1537: dedicated tests of the URL (un)escape API calls [54]
|
|
||||||
o curl_endian: remove unused functions [55]
|
|
||||||
o test1538: verify the libcurl strerror API calls
|
|
||||||
o MD(4|5): silence cast-align clang warning
|
|
||||||
o dedotdot: fixed output for ".." and "." only input [56]
|
|
||||||
o cyassl: define build macros before including ssl.h [57]
|
|
||||||
o updatemanpages.pl: error out on too old git version
|
|
||||||
o curl_sasl: fix unused-variable warning
|
|
||||||
o x509asn1: fix implicit-fallthrough warning with GCC 7
|
|
||||||
o libtest: fix implicit-fallthrough warnings with GCC 7
|
|
||||||
o BINDINGS: add Ring binding [58]
|
|
||||||
o curl_ntlm_core: pass unsigned char to toupper
|
|
||||||
o test1262: verify ftp download with -z for "if older than this"
|
|
||||||
o test1521: test all curl_easy_setopt options [59]
|
|
||||||
o typecheck-gcc: allow CURLOPT_STDERR to be NULL too
|
|
||||||
o metalink: remove unused printf() argument
|
|
||||||
o file: make speedcheck use current time for checks [60]
|
|
||||||
o configure: fix link with librtmp when specifying path [61]
|
|
||||||
o examples/multi-uv.c: fix deprecated symbol [62]
|
|
||||||
o cmake: Fix inconsistency regarding mbed TLS include directory [63]
|
|
||||||
o setopt: check CURLOPT_ADDRESS_SCOPE option range
|
|
||||||
o gitignore: ignore all vim swap files [64]
|
|
||||||
o urlglob: fix division by zero
|
|
||||||
o libressl: OCSP and intermediate certs workaround no longer needed [66]
|
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
|
@ -135,85 +103,78 @@ This release includes the following known bugs:
|
||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Akhil Kedia, Alan Jenkins, Anatol Belski, Bernhard M. Wiedemann,
|
ahodesuka on github, Andreas Schneider, Basuke Suzuki, Brad Spencer,
|
||||||
Brian Childs, canavan at github, Chris Carlmar, Dan Fandrich,
|
Chester Liu, cmfrolick on github, Craig de Stigter, Daniel Stenberg,
|
||||||
Daniel Stenberg, Edward Thomson, Gisle Vanem, GwanYeong Kim,
|
Dan Johnson, David Benjamin, Dima Tisnek, Dimitrios Apostolou,
|
||||||
Helmut K. C. Tessarek, Joel Depooter, jonrumsey at github, Kai Engert,
|
Dmitry Kostjuchenko, Dominik Hölzl, Elliot Saba, Frank Gevaerts, Gisle Vanem,
|
||||||
Kamil Dudka, Kevin Ji, Lloyd Fournier, Mahmoud Samir Fayed, Marcel Raad,
|
guitared on github, Jan Ehrhardt, Johannes Schindelin, John DeHelian,
|
||||||
Martin Kepplinger, Max Dymond, Michael Kaufmann, Nick Zitzmann, Paul Harris,
|
John Hascall, jonrumsey on github, jungle-boogie on github, Kartik Mahajan,
|
||||||
Phil Crump, Piotr Dobrogost, Ray Satiro, Richard Hsu, Ron Eldor,
|
Martin Galvan, Matthew Kerwin, Mattias Fornander, Max Dymond, Michael Felt,
|
||||||
Ryuichi KAWAMATA, Sergei Nikulov, Simon Warta, stootill at github,
|
Michael Gmelin, Michael Kaufmann, Mikalai Ananenka, Nikos Mavrogiannopoulos,
|
||||||
Stuart Henderson, TheAssassin at github, Thomas Klausner, Travis Burtrum,
|
Oleg Pudeyev, Patrick Dawson, Patrick Monnerat, Per Malmberg, Pete Lomax,
|
||||||
Vincas Razma, wyattoday at github,
|
Rainer Canavan, Randall S. Becker, Ray Satiro, Richard Alcock, Robert Kolcun,
|
||||||
(41 contributors)
|
Sean MacLennan, Stanislav Zidek, Stepan Broz, Steve Holme,
|
||||||
|
Thomas van Hesteren, Tomas Mraz, W. Mark Kubacki, XhstormR on github,
|
||||||
|
Zachary Seguin, Zhouyihai Ding,
|
||||||
|
(54 contributors)
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
|
||||||
References to bug reports and discussions on issues:
|
References to bug reports and discussions on issues:
|
||||||
|
|
||||||
[1] = https://curl.haxx.se/bug/?i=1403
|
[1] = https://curl.haxx.se/bug/?i=2118
|
||||||
[2] = https://curl.haxx.se/bug/?i=1435
|
[2] = https://curl.haxx.se/mail/lib-2017-12/0000.html
|
||||||
[3] = https://curl.haxx.se/bug/?i=1439
|
[3] = https://curl.haxx.se/bug/?i=2119
|
||||||
[4] = https://curl.haxx.se/bug/?i=1392
|
[4] = https://curl.haxx.se/bug/?i=2127
|
||||||
[5] = https://curl.haxx.se/bug/?i=1427
|
[5] = https://curl.haxx.se/bug/?i=2134
|
||||||
[6] = https://curl.haxx.se/bug/?i=1440
|
[6] = https://curl.haxx.se/bug/?i=2143
|
||||||
[7] = https://curl.haxx.se/bug/?i=1432
|
[7] = https://curl.haxx.se/bug/?i=2150
|
||||||
[8] = https://curl.haxx.se/bug/?i=1420
|
[8] = https://curl.haxx.se/bug/?i=2132
|
||||||
[9] = https://curl.haxx.se/bug/?i=1446
|
[9] = https://curl.haxx.se/bug/?i=2152
|
||||||
[10] = https://curl.haxx.se/bug/?i=1447
|
[10] = https://curl.haxx.se/bug/?i=2128
|
||||||
[11] = https://bugzilla.redhat.com/1444860
|
[11] = https://curl.haxx.se/bug/?i=2146
|
||||||
[12] = https://curl.haxx.se/bug/?i=1414
|
[12] = https://curl.haxx.se/bug/?i=2154
|
||||||
[13] = https://curl.haxx.se/bug/?i=1451
|
[13] = https://curl.haxx.se/bug/?i=2159
|
||||||
[14] = https://curl.haxx.se/mail/lib-2017-04/0127.html
|
[14] = https://curl.haxx.se/bug/?i=2160
|
||||||
[15] = https://github.com/curl/curl/issues/1441#issuecomment-297689856
|
[15] = https://curl.haxx.se/bug/?i=2088
|
||||||
[16] = https://curl.haxx.se/bug/?i=1460
|
[16] = https://curl.haxx.se/bug/?i=2158
|
||||||
[17] = https://curl.haxx.se/bug/?i=1449
|
[17] = https://curl.haxx.se/bug/?i=2076
|
||||||
[18] = https://curl.haxx.se/bug/?i=1453
|
[18] = https://curl.haxx.se/bug/?i=1916
|
||||||
[19] = https://curl.haxx.se/bug/?i=1389
|
[19] = https://curl.haxx.se/bug/?i=2166
|
||||||
[20] = https://curl.haxx.se/bug/?i=1452
|
[20] = https://curl.haxx.se/bug/?i=2168
|
||||||
[21] = https://curl.haxx.se/bug/?i=1452
|
[21] = https://curl.haxx.se/bug/?i=1900
|
||||||
[22] = https://curl.haxx.se/bug/?i=1464
|
[22] = https://github.com/curl/curl/pull/1346#issuecomment-350530901
|
||||||
[23] = https://curl.haxx.se/bug/?i=1466
|
[23] = https://curl.haxx.se/bug/?i=2169
|
||||||
[24] = https://curl.haxx.se/bug/?i=1463
|
[24] = https://curl.haxx.se/bug/?i=2171
|
||||||
[25] = https://curl.haxx.se/bug/?i=1471
|
[25] = https://curl.haxx.se/bug/?i=2173
|
||||||
[26] = https://curl.haxx.se/bug/?i=1469
|
[26] = https://curl.haxx.se/bug/?i=2174
|
||||||
[27] = https://curl.haxx.se/bug/?i=1315
|
[27] = https://curl.haxx.se/bug/?i=2175
|
||||||
[28] = https://curl.haxx.se/bug/?i=1465
|
[28] = https://curl.haxx.se/bug/?i=2068
|
||||||
[29] = https://curl.haxx.se/bug/?i=1472
|
[29] = https://curl.haxx.se/mail/lib-2017-12/0060.html
|
||||||
[30] = https://curl.haxx.se/bug/?i=1475
|
[30] = https://curl.haxx.se/bug/?i=2185
|
||||||
[31] = https://curl.haxx.se/bug/?i=1481
|
[31] = https://curl.haxx.se/bug/?i=2216
|
||||||
[32] = https://curl.haxx.se/bug/?i=1474
|
[32] = https://curl.haxx.se/bug/?i=2179
|
||||||
[33] = https://curl.haxx.se/bug/?i=1400
|
[33] = https://curl.haxx.se/mail/lib-2017-12/0057.html
|
||||||
[34] = https://curl.haxx.se/bug/?i=1487
|
[34] = https://curl.haxx.se/bug/?i=2194
|
||||||
[35] = https://curl.haxx.se/bug/?i=1450
|
[35] = https://curl.haxx.se/mail/lib-2017-12/0074.html
|
||||||
[36] = https://curl.haxx.se/bug/?i=1490
|
[36] = https://curl.haxx.se/bug/?i=2215
|
||||||
[37] = https://curl.haxx.se/bug/?i=1253
|
[37] = https://curl.haxx.se/bug/?i=2222
|
||||||
[38] = https://curl.haxx.se/bug/?i=1479
|
[38] = https://curl.haxx.se/bug/?i=2200
|
||||||
[39] = https://curl.haxx.se/bug/?i=1488
|
[39] = https://curl.haxx.se/bug/?i=2217
|
||||||
[40] = https://curl.haxx.se/bug/?i=1461
|
[40] = https://curl.haxx.se/docs/adv_2018-824a.html
|
||||||
[41] = https://curl.haxx.se/bug/?i=1504
|
[41] = https://curl.haxx.se/bug/?i=2230
|
||||||
[42] = https://curl.haxx.se/bug/?i=878
|
[42] = https://curl.haxx.se/bug/?i=2225
|
||||||
[43] = https://curl.haxx.se/bug/?i=1489
|
[43] = https://curl.haxx.se/bug/?i=2234
|
||||||
[44] = https://curl.haxx.se/bug/?i=1321
|
[44] = https://curl.haxx.se/bug/?i=2212
|
||||||
[45] = https://curl.haxx.se/bug/?i=1499
|
[45] = https://curl.haxx.se/bug/?i=2235
|
||||||
[46] = https://curl.haxx.se/bug/?i=1516
|
[46] = https://curl.haxx.se/bug/?i=2210
|
||||||
[47] = https://curl.haxx.se/bug/?i=1294
|
[47] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5206
|
||||||
[48] = https://curl.haxx.se/bug/?i=1208
|
[48] = https://curl.haxx.se/bug/?i=2239
|
||||||
[49] = https://curl.haxx.se/bug/?i=1516
|
[49] = https://curl.haxx.se/bug/?i=2211
|
||||||
[50] = https://curl.haxx.se/bug/?i=1522
|
[50] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5251
|
||||||
[51] = https://curl.haxx.se/bug/?i=1524
|
[51] = https://curl.haxx.se/bug/?i=2248
|
||||||
[52] = https://curl.haxx.se/bug/?i=846
|
[52] = https://curl.haxx.se/bug/?i=2245
|
||||||
[53] = https://curl.haxx.se/bug/?i=1528
|
[53] = https://curl.haxx.se/bug/?i=2237
|
||||||
[54] = https://curl.haxx.se/bug/?i=1530
|
[54] = https://curl.haxx.se/bug/?i=2242
|
||||||
[55] = https://curl.haxx.se/bug/?i=1529
|
[55] = https://curl.haxx.se/docs/adv_2018-b3bf.html
|
||||||
[56] = https://curl.haxx.se/bug/?i=1532
|
[56] = https://curl.haxx.se/mail/lib-2018-01/0087.html
|
||||||
[57] = https://curl.haxx.se/bug/?i=1536
|
|
||||||
[58] = https://curl.haxx.se/bug/?i=1539
|
|
||||||
[59] = https://curl.haxx.se/bug/?i=1543
|
|
||||||
[60] = https://curl.haxx.se/bug/?i=1550
|
|
||||||
[61] = https://curl.haxx.se/mail/lib-2017-06/0017.html
|
|
||||||
[62] = https://curl.haxx.se/bug/?i=1557
|
|
||||||
[63] = https://curl.haxx.se/bug/?i=1541
|
|
||||||
[64] = https://curl.haxx.se/bug/?i=1561
|
|
||||||
[65] = https://curl.haxx.se/docs/adv_20170614.html
|
|
||||||
[66] = https://curl.haxx.se/mail/lib-2017-06/0038.html
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -199,8 +199,6 @@ AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
|
||||||
yes)
|
yes)
|
||||||
AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
|
AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
|
||||||
[Define to 1 if you have the windows.h header file.])
|
[Define to 1 if you have the windows.h header file.])
|
||||||
AC_DEFINE_UNQUOTED(WIN32_LEAN_AND_MEAN, 1,
|
|
||||||
[Define to avoid automatic inclusion of winsock.h])
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
])
|
])
|
||||||
|
@ -790,8 +788,8 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
|
||||||
#
|
#
|
||||||
for x_nlibs in '' "$u_libs" \
|
for x_nlibs in '' "$u_libs" \
|
||||||
'-lldap' \
|
'-lldap' \
|
||||||
'-llber -lldap' \
|
|
||||||
'-lldap -llber' \
|
'-lldap -llber' \
|
||||||
|
'-llber -lldap' \
|
||||||
'-lldapssl -lldapx -lldapsdk' \
|
'-lldapssl -lldapx -lldapsdk' \
|
||||||
'-lldapsdk -lldapx -lldapssl' ; do
|
'-lldapsdk -lldapx -lldapssl' ; do
|
||||||
if test "$curl_cv_ldap_LIBS" = "unknown"; then
|
if test "$curl_cv_ldap_LIBS" = "unknown"; then
|
||||||
|
@ -1084,7 +1082,11 @@ AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
|
||||||
#endif
|
#endif
|
||||||
#define GNICALLCONV
|
#define GNICALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern int GNICALLCONV getnameinfo($gni_arg1, $gni_arg2,
|
extern int GNICALLCONV
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
__attribute__((overloadable))
|
||||||
|
#endif
|
||||||
|
getnameinfo($gni_arg1, $gni_arg2,
|
||||||
char *, $gni_arg46,
|
char *, $gni_arg46,
|
||||||
char *, $gni_arg46,
|
char *, $gni_arg46,
|
||||||
$gni_arg7);
|
$gni_arg7);
|
||||||
|
@ -1388,6 +1390,9 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
|
||||||
#define RECVCALLCONV
|
#define RECVCALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern $recv_retv RECVCALLCONV
|
extern $recv_retv RECVCALLCONV
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
__attribute__((overloadable))
|
||||||
|
#endif
|
||||||
recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
|
recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
|
||||||
]],[[
|
]],[[
|
||||||
$recv_arg1 s=0;
|
$recv_arg1 s=0;
|
||||||
|
@ -1522,6 +1527,9 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
||||||
#define SENDCALLCONV
|
#define SENDCALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern $send_retv SENDCALLCONV
|
extern $send_retv SENDCALLCONV
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
__attribute__((overloadable))
|
||||||
|
#endif
|
||||||
send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
|
send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
|
||||||
]],[[
|
]],[[
|
||||||
$send_arg1 s=0;
|
$send_arg1 s=0;
|
||||||
|
@ -2076,29 +2084,8 @@ _EOF
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CONFIGURE_LONG
|
|
||||||
dnl -------------------------------------------------
|
|
||||||
dnl Find out the size of long as reported by sizeof() and define
|
|
||||||
dnl CURL_SIZEOF_LONG as appropriate to be used in template file
|
|
||||||
dnl include/curl/curlbuild.h.in to properly configure the library.
|
|
||||||
dnl The size of long is a build time characteristic and as such
|
|
||||||
dnl must be recorded in curlbuild.h
|
|
||||||
|
|
||||||
AC_DEFUN([CURL_CONFIGURE_LONG], [
|
|
||||||
if test -z "$ac_cv_sizeof_long" ||
|
|
||||||
test "$ac_cv_sizeof_long" -eq "0"; then
|
|
||||||
AC_MSG_ERROR([cannot find out size of long.])
|
|
||||||
fi
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_SIZEOF_LONG], [$ac_cv_sizeof_long])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CONFIGURE_CURL_SOCKLEN_T
|
dnl CURL_CONFIGURE_CURL_SOCKLEN_T
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Find out suitable curl_socklen_t data type definition and size, making
|
|
||||||
dnl appropriate definitions for template file include/curl/curlbuild.h.in
|
|
||||||
dnl to properly configure and use the library.
|
|
||||||
dnl
|
|
||||||
dnl The need for the curl_socklen_t definition arises mainly to properly
|
dnl The need for the curl_socklen_t definition arises mainly to properly
|
||||||
dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t
|
dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t
|
||||||
dnl data type which is 32 or 64-Bit wide depending on the data model being
|
dnl data type which is 32 or 64-Bit wide depending on the data model being
|
||||||
|
@ -2222,10 +2209,6 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
|
||||||
|
|
||||||
dnl CURL_CONFIGURE_PULL_SYS_POLL
|
dnl CURL_CONFIGURE_PULL_SYS_POLL
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Find out if system header file sys/poll.h must be included by the
|
|
||||||
dnl external interface, making appropriate definitions for template file
|
|
||||||
dnl include/curl/curlbuild.h.in to properly configure and use the library.
|
|
||||||
dnl
|
|
||||||
dnl The need for the sys/poll.h inclusion arises mainly to properly
|
dnl The need for the sys/poll.h inclusion arises mainly to properly
|
||||||
dnl interface AIX systems which define macros 'events' and 'revents'.
|
dnl interface AIX systems which define macros 'events' and 'revents'.
|
||||||
|
|
||||||
|
@ -2378,11 +2361,15 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
|
||||||
long tv_usec;
|
long tv_usec;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
extern $sel_retv SELECTCALLCONV select($sel_arg1,
|
extern $sel_retv SELECTCALLCONV
|
||||||
$sel_arg234,
|
#ifdef __ANDROID__
|
||||||
$sel_arg234,
|
__attribute__((overloadable))
|
||||||
$sel_arg234,
|
#endif
|
||||||
$sel_arg5);
|
select($sel_arg1,
|
||||||
|
$sel_arg234,
|
||||||
|
$sel_arg234,
|
||||||
|
$sel_arg234,
|
||||||
|
$sel_arg5);
|
||||||
]],[[
|
]],[[
|
||||||
$sel_arg1 nfds=0;
|
$sel_arg1 nfds=0;
|
||||||
$sel_arg234 rfds=0;
|
$sel_arg234 rfds=0;
|
||||||
|
@ -2717,292 +2704,6 @@ AC_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl DO_CURL_OFF_T_CHECK (TYPE, SIZE)
|
|
||||||
dnl -------------------------------------------------
|
|
||||||
dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
|
|
||||||
|
|
||||||
AC_DEFUN([DO_CURL_OFF_T_CHECK], [
|
|
||||||
AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
|
|
||||||
if test "$curl_typeof_curl_off_t" = "unknown" && test ! -z "$1"; then
|
|
||||||
tmp_includes=""
|
|
||||||
tmp_source=""
|
|
||||||
tmp_fmt=""
|
|
||||||
case XC_SH_TR_SH([$1]) in
|
|
||||||
int64_t)
|
|
||||||
tmp_includes="$curl_includes_inttypes"
|
|
||||||
tmp_source="char f@<:@@:>@ = PRId64;"
|
|
||||||
tmp_fmt="PRId64"
|
|
||||||
;;
|
|
||||||
int32_t)
|
|
||||||
tmp_includes="$curl_includes_inttypes"
|
|
||||||
tmp_source="char f@<:@@:>@ = PRId32;"
|
|
||||||
tmp_fmt="PRId32"
|
|
||||||
;;
|
|
||||||
int16_t)
|
|
||||||
tmp_includes="$curl_includes_inttypes"
|
|
||||||
tmp_source="char f@<:@@:>@ = PRId16;"
|
|
||||||
tmp_fmt="PRId16"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
AC_LANG_PROGRAM([[
|
|
||||||
$tmp_includes
|
|
||||||
typedef $1 curl_off_t;
|
|
||||||
typedef char dummy_arr[sizeof(curl_off_t) == $2 ? 1 : -1];
|
|
||||||
]],[[
|
|
||||||
$tmp_source
|
|
||||||
curl_off_t dummy;
|
|
||||||
]])
|
|
||||||
],[
|
|
||||||
if test -z "$tmp_fmt"; then
|
|
||||||
curl_typeof_curl_off_t="$1"
|
|
||||||
curl_sizeof_curl_off_t="$2"
|
|
||||||
else
|
|
||||||
CURL_CHECK_DEF([$tmp_fmt], [$curl_includes_inttypes], [silent])
|
|
||||||
AS_VAR_PUSHDEF([tmp_HaveFmtDef], [curl_cv_have_def_$tmp_fmt])dnl
|
|
||||||
AS_VAR_PUSHDEF([tmp_FmtDef], [curl_cv_def_$tmp_fmt])dnl
|
|
||||||
if test AS_VAR_GET(tmp_HaveFmtDef) = "yes"; then
|
|
||||||
curl_format_curl_off_t=AS_VAR_GET(tmp_FmtDef)
|
|
||||||
curl_typeof_curl_off_t="$1"
|
|
||||||
curl_sizeof_curl_off_t="$2"
|
|
||||||
fi
|
|
||||||
AS_VAR_POPDEF([tmp_FmtDef])dnl
|
|
||||||
AS_VAR_POPDEF([tmp_HaveFmtDef])dnl
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl DO_CURL_OFF_T_SUFFIX_CHECK (TYPE)
|
|
||||||
dnl -------------------------------------------------
|
|
||||||
dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
|
|
||||||
|
|
||||||
AC_DEFUN([DO_CURL_OFF_T_SUFFIX_CHECK], [
|
|
||||||
AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
|
|
||||||
AC_MSG_CHECKING([constant suffix string for curl_off_t])
|
|
||||||
#
|
|
||||||
curl_suffix_curl_off_t="unknown"
|
|
||||||
curl_suffix_curl_off_tu="unknown"
|
|
||||||
#
|
|
||||||
case XC_SH_TR_SH([$1]) in
|
|
||||||
long_long | __longlong | __longlong_t)
|
|
||||||
tst_suffixes="LL::"
|
|
||||||
;;
|
|
||||||
long)
|
|
||||||
tst_suffixes="L::"
|
|
||||||
;;
|
|
||||||
int)
|
|
||||||
tst_suffixes="::"
|
|
||||||
;;
|
|
||||||
__int64 | int64_t)
|
|
||||||
tst_suffixes="LL:i64::"
|
|
||||||
;;
|
|
||||||
__int32 | int32_t)
|
|
||||||
tst_suffixes="L:i32::"
|
|
||||||
;;
|
|
||||||
__int16 | int16_t)
|
|
||||||
tst_suffixes="L:i16::"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_ERROR([unexpected data type $1])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
#
|
|
||||||
old_IFS=$IFS; IFS=':'
|
|
||||||
for tmp_ssuf in $tst_suffixes ; do
|
|
||||||
IFS=$old_IFS
|
|
||||||
if test "x$curl_suffix_curl_off_t" = "xunknown"; then
|
|
||||||
case $tmp_ssuf in
|
|
||||||
i64 | i32 | i16)
|
|
||||||
tmp_usuf="u$tmp_ssuf"
|
|
||||||
;;
|
|
||||||
LL | L)
|
|
||||||
tmp_usuf="U$tmp_ssuf"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
tmp_usuf=""
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
AC_LANG_PROGRAM([[
|
|
||||||
$curl_includes_inttypes
|
|
||||||
typedef $1 new_t;
|
|
||||||
]],[[
|
|
||||||
new_t s1;
|
|
||||||
new_t s2;
|
|
||||||
s1 = -10$tmp_ssuf ;
|
|
||||||
s2 = 20$tmp_ssuf ;
|
|
||||||
if(s1 > s2)
|
|
||||||
return 1;
|
|
||||||
]])
|
|
||||||
],[
|
|
||||||
curl_suffix_curl_off_t="$tmp_ssuf"
|
|
||||||
curl_suffix_curl_off_tu="$tmp_usuf"
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS=$old_IFS
|
|
||||||
#
|
|
||||||
if test "x$curl_suffix_curl_off_t" = "xunknown"; then
|
|
||||||
AC_MSG_ERROR([cannot find constant suffix string for curl_off_t.])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([$curl_suffix_curl_off_t])
|
|
||||||
AC_MSG_CHECKING([constant suffix string for unsigned curl_off_t])
|
|
||||||
AC_MSG_RESULT([$curl_suffix_curl_off_tu])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CONFIGURE_CURL_OFF_T
|
|
||||||
dnl -------------------------------------------------
|
|
||||||
dnl Find out suitable curl_off_t data type definition and associated
|
|
||||||
dnl items, and make the appropriate definitions used in template file
|
|
||||||
dnl include/curl/curlbuild.h.in to properly configure the library.
|
|
||||||
|
|
||||||
AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [
|
|
||||||
AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
|
|
||||||
#
|
|
||||||
AC_BEFORE([$0],[AC_SYS_LARGEFILE])dnl
|
|
||||||
AC_BEFORE([$0],[CURL_CONFIGURE_REENTRANT])dnl
|
|
||||||
AC_BEFORE([$0],[CURL_CHECK_AIX_ALL_SOURCE])dnl
|
|
||||||
#
|
|
||||||
if test -z "$SED"; then
|
|
||||||
AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
AC_CHECK_SIZEOF(long)
|
|
||||||
AC_CHECK_SIZEOF(void*)
|
|
||||||
#
|
|
||||||
if test -z "$ac_cv_sizeof_long" ||
|
|
||||||
test "$ac_cv_sizeof_long" -eq "0"; then
|
|
||||||
AC_MSG_ERROR([cannot find out size of long.])
|
|
||||||
fi
|
|
||||||
if test -z "$ac_cv_sizeof_voidp" ||
|
|
||||||
test "$ac_cv_sizeof_voidp" -eq "0"; then
|
|
||||||
AC_MSG_ERROR([cannot find out size of void*.])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
x_LP64_long=""
|
|
||||||
x_LP32_long=""
|
|
||||||
#
|
|
||||||
if test "$ac_cv_sizeof_long" -eq "8" &&
|
|
||||||
test "$ac_cv_sizeof_voidp" -ge "8"; then
|
|
||||||
x_LP64_long="long"
|
|
||||||
elif test "$ac_cv_sizeof_long" -eq "4" &&
|
|
||||||
test "$ac_cv_sizeof_voidp" -ge "4"; then
|
|
||||||
x_LP32_long="long"
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
dnl DO_CURL_OFF_T_CHECK results are stored in next 3 vars
|
|
||||||
#
|
|
||||||
curl_typeof_curl_off_t="unknown"
|
|
||||||
curl_sizeof_curl_off_t="unknown"
|
|
||||||
curl_format_curl_off_t="unknown"
|
|
||||||
curl_format_curl_off_tu="unknown"
|
|
||||||
#
|
|
||||||
if test "$curl_typeof_curl_off_t" = "unknown"; then
|
|
||||||
AC_MSG_CHECKING([for 64-bit curl_off_t data type])
|
|
||||||
for t8 in \
|
|
||||||
"$x_LP64_long" \
|
|
||||||
'int64_t' \
|
|
||||||
'__int64' \
|
|
||||||
'long long' \
|
|
||||||
'__longlong' \
|
|
||||||
'__longlong_t' ; do
|
|
||||||
DO_CURL_OFF_T_CHECK([$t8], [8])
|
|
||||||
done
|
|
||||||
AC_MSG_RESULT([$curl_typeof_curl_off_t])
|
|
||||||
fi
|
|
||||||
if test "$curl_typeof_curl_off_t" = "unknown"; then
|
|
||||||
AC_MSG_CHECKING([for 32-bit curl_off_t data type])
|
|
||||||
for t4 in \
|
|
||||||
"$x_LP32_long" \
|
|
||||||
'int32_t' \
|
|
||||||
'__int32' \
|
|
||||||
'int' ; do
|
|
||||||
DO_CURL_OFF_T_CHECK([$t4], [4])
|
|
||||||
done
|
|
||||||
AC_MSG_RESULT([$curl_typeof_curl_off_t])
|
|
||||||
fi
|
|
||||||
if test "$curl_typeof_curl_off_t" = "unknown"; then
|
|
||||||
AC_MSG_ERROR([cannot find data type for curl_off_t.])
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
AC_MSG_CHECKING([size of curl_off_t])
|
|
||||||
AC_MSG_RESULT([$curl_sizeof_curl_off_t])
|
|
||||||
#
|
|
||||||
AC_MSG_CHECKING([formatting string directive for curl_off_t])
|
|
||||||
if test "$curl_format_curl_off_t" != "unknown"; then
|
|
||||||
x_pull_headers="yes"
|
|
||||||
curl_format_curl_off_t=`echo "$curl_format_curl_off_t" | "$SED" 's/[["]]//g'`
|
|
||||||
curl_format_curl_off_tu=`echo "$curl_format_curl_off_t" | "$SED" 's/i$/u/'`
|
|
||||||
curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/d$/u/'`
|
|
||||||
curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/D$/U/'`
|
|
||||||
else
|
|
||||||
x_pull_headers="no"
|
|
||||||
case XC_SH_TR_SH([$curl_typeof_curl_off_t]) in
|
|
||||||
long_long | __longlong | __longlong_t)
|
|
||||||
curl_format_curl_off_t="lld"
|
|
||||||
curl_format_curl_off_tu="llu"
|
|
||||||
;;
|
|
||||||
long)
|
|
||||||
curl_format_curl_off_t="ld"
|
|
||||||
curl_format_curl_off_tu="lu"
|
|
||||||
;;
|
|
||||||
int)
|
|
||||||
curl_format_curl_off_t="d"
|
|
||||||
curl_format_curl_off_tu="u"
|
|
||||||
;;
|
|
||||||
__int64)
|
|
||||||
curl_format_curl_off_t="I64d"
|
|
||||||
curl_format_curl_off_tu="I64u"
|
|
||||||
;;
|
|
||||||
__int32)
|
|
||||||
curl_format_curl_off_t="I32d"
|
|
||||||
curl_format_curl_off_tu="I32u"
|
|
||||||
;;
|
|
||||||
__int16)
|
|
||||||
curl_format_curl_off_t="I16d"
|
|
||||||
curl_format_curl_off_tu="I16u"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_ERROR([cannot find print format string for curl_off_t.])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT(["$curl_format_curl_off_t"])
|
|
||||||
#
|
|
||||||
AC_MSG_CHECKING([formatting string directive for unsigned curl_off_t])
|
|
||||||
AC_MSG_RESULT(["$curl_format_curl_off_tu"])
|
|
||||||
#
|
|
||||||
DO_CURL_OFF_T_SUFFIX_CHECK([$curl_typeof_curl_off_t])
|
|
||||||
#
|
|
||||||
if test "$x_pull_headers" = "yes"; then
|
|
||||||
if test "x$ac_cv_header_sys_types_h" = "xyes"; then
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
|
|
||||||
fi
|
|
||||||
if test "x$ac_cv_header_stdint_h" = "xyes"; then
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_PULL_STDINT_H])
|
|
||||||
fi
|
|
||||||
if test "x$ac_cv_header_inttypes_h" = "xyes"; then
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_PULL_INTTYPES_H])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_OFF_T], [$curl_typeof_curl_off_t])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_T], ["$curl_format_curl_off_t"])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_TU], ["$curl_format_curl_off_tu"])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_FORMAT_OFF_T], ["%$curl_format_curl_off_t"])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_OFF_T], [$curl_sizeof_curl_off_t])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_T], [$curl_suffix_curl_off_t])
|
|
||||||
CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_TU], [$curl_suffix_curl_off_tu])
|
|
||||||
#
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_WIN32_LARGEFILE
|
dnl CURL_CHECK_WIN32_LARGEFILE
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Check if curl's WIN32 large file will be used
|
dnl Check if curl's WIN32 large file will be used
|
||||||
|
@ -3243,3 +2944,29 @@ AC_DEFUN([CURL_MAC_CFLAGS], [
|
||||||
fi
|
fi
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CURL_SUPPORTS_BUILTIN_AVAILABLE
|
||||||
|
dnl
|
||||||
|
dnl Check to see if the compiler supports __builtin_available. This built-in
|
||||||
|
dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at
|
||||||
|
dnl the time this macro was written, the function was not yet documented. Its
|
||||||
|
dnl purpose is to return true if the code is running under a certain OS version
|
||||||
|
dnl or later.
|
||||||
|
|
||||||
|
AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [
|
||||||
|
AC_MSG_CHECKING([to see if the compiler supports __builtin_available()])
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#include <stdlib.h>
|
||||||
|
]],[[
|
||||||
|
if (__builtin_available(macOS 10.8, iOS 5.0, *)) {}
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1,
|
||||||
|
[Define to 1 if you have the __builtin_available function.])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# generated automatically by aclocal 1.15 -*- Autoconf -*-
|
# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
||||||
If you have problems, you may need to regenerate the build system entirely.
|
If you have problems, you may need to regenerate the build system entirely.
|
||||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||||
|
|
||||||
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2002-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||||
[am__api_version='1.15'
|
[am__api_version='1.15'
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
dnl require some minimum version. Point them to the right macro.
|
||||||
m4_if([$1], [1.15], [],
|
m4_if([$1], [1.15.1], [],
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.15])dnl
|
[AM_AUTOMAKE_VERSION([1.15.1])dnl
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# AM_CONDITIONAL -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||||
Usually this means the macro was only invoked conditionally.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
fi])])
|
||||||
|
|
||||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||||
|
|
||||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -408,7 +408,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||||
|
|
||||||
# Do all the work for Automake. -*- Autoconf -*-
|
# Do all the work for Automake. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -605,7 +605,7 @@ for _am_header in $config_headers :; do
|
||||||
done
|
done
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -626,7 +626,7 @@ if test x"${install_sh+set}" != xset; then
|
||||||
fi
|
fi
|
||||||
AC_SUBST([install_sh])])
|
AC_SUBST([install_sh])])
|
||||||
|
|
||||||
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -648,7 +648,7 @@ AC_SUBST([am__leading_dot])])
|
||||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||||
# From Jim Meyering
|
# From Jim Meyering
|
||||||
|
|
||||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -683,7 +683,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||||
|
|
||||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -733,7 +733,7 @@ rm -f confinc confmf
|
||||||
|
|
||||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -772,7 +772,7 @@ fi
|
||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -801,7 +801,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
||||||
AC_DEFUN([_AM_IF_OPTION],
|
AC_DEFUN([_AM_IF_OPTION],
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||||
|
|
||||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -848,7 +848,7 @@ AC_LANG_POP([C])])
|
||||||
# For backward compatibility.
|
# For backward compatibility.
|
||||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -867,7 +867,7 @@ AC_DEFUN([AM_RUN_LOG],
|
||||||
|
|
||||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -948,7 +948,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||||
rm -f conftest.file
|
rm -f conftest.file
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2009-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -1008,7 +1008,7 @@ AC_SUBST([AM_BACKSLASH])dnl
|
||||||
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -1036,7 +1036,7 @@ fi
|
||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||||
|
|
||||||
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2006-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -1055,7 +1055,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||||
|
|
||||||
# Check how to create a tarball. -*- Autoconf -*-
|
# Check how to create a tarball. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2004-2014 Free Software Foundation, Inc.
|
# Copyright (C) 2004-2017 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
|
|
@ -306,7 +306,6 @@ for fname in .deps \
|
||||||
configure \
|
configure \
|
||||||
configurehelp.pm \
|
configurehelp.pm \
|
||||||
curl-config \
|
curl-config \
|
||||||
curlbuild.h \
|
|
||||||
depcomp \
|
depcomp \
|
||||||
libcares.pc \
|
libcares.pc \
|
||||||
libcurl.pc \
|
libcurl.pc \
|
||||||
|
|
|
@ -6,7 +6,7 @@ rem * / __| | | | |_) | |
|
||||||
rem * | (__| |_| | _ <| |___
|
rem * | (__| |_| | _ <| |___
|
||||||
rem * \___|\___/|_| \_\_____|
|
rem * \___|\___/|_| \_\_____|
|
||||||
rem *
|
rem *
|
||||||
rem * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
rem * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
rem *
|
rem *
|
||||||
rem * This software is licensed as described in the file COPYING, which
|
rem * This software is licensed as described in the file COPYING, which
|
||||||
rem * you should have received as part of this distribution. The terms
|
rem * you should have received as part of this distribution. The terms
|
||||||
|
@ -73,7 +73,6 @@ rem
|
||||||
echo Generating prerequisite files
|
echo Generating prerequisite files
|
||||||
|
|
||||||
call :generate
|
call :generate
|
||||||
if errorlevel 4 goto nogencurlbuild
|
|
||||||
if errorlevel 3 goto nogenhugehelp
|
if errorlevel 3 goto nogenhugehelp
|
||||||
if errorlevel 2 goto nogenmakefile
|
if errorlevel 2 goto nogenmakefile
|
||||||
if errorlevel 1 goto warning
|
if errorlevel 1 goto warning
|
||||||
|
@ -83,7 +82,6 @@ rem
|
||||||
echo Removing prerequisite files
|
echo Removing prerequisite files
|
||||||
|
|
||||||
call :clean
|
call :clean
|
||||||
if errorlevel 3 goto nocleancurlbuild
|
|
||||||
if errorlevel 2 goto nocleanhugehelp
|
if errorlevel 2 goto nocleanhugehelp
|
||||||
if errorlevel 1 goto nocleanmakefile
|
if errorlevel 1 goto nocleanmakefile
|
||||||
)
|
)
|
||||||
|
@ -98,7 +96,6 @@ rem 0 - success
|
||||||
rem 1 - success with simplified tool_hugehelp.c
|
rem 1 - success with simplified tool_hugehelp.c
|
||||||
rem 2 - failed to generate Makefile
|
rem 2 - failed to generate Makefile
|
||||||
rem 3 - failed to generate tool_hugehelp.c
|
rem 3 - failed to generate tool_hugehelp.c
|
||||||
rem 4 - failed to generate curlbuild.h
|
|
||||||
rem
|
rem
|
||||||
:generate
|
:generate
|
||||||
if "%OS%" == "Windows_NT" setlocal
|
if "%OS%" == "Windows_NT" setlocal
|
||||||
|
@ -126,16 +123,6 @@ rem
|
||||||
)
|
)
|
||||||
cmd /c exit 0
|
cmd /c exit 0
|
||||||
|
|
||||||
rem Create curlbuild.h
|
|
||||||
echo * %CD%\include\curl\curlbuild.h
|
|
||||||
if exist include\curl\curlbuild.h.dist (
|
|
||||||
copy /Y include\curl\curlbuild.h.dist include\curl\curlbuild.h 1>NUL 2>&1
|
|
||||||
if errorlevel 1 (
|
|
||||||
if "%OS%" == "Windows_NT" endlocal
|
|
||||||
exit /B 4
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
rem Setup c-ares git tree
|
rem Setup c-ares git tree
|
||||||
if exist ares\buildconf.bat (
|
if exist ares\buildconf.bat (
|
||||||
echo.
|
echo.
|
||||||
|
@ -160,7 +147,6 @@ rem
|
||||||
rem 0 - success
|
rem 0 - success
|
||||||
rem 1 - failed to clean Makefile
|
rem 1 - failed to clean Makefile
|
||||||
rem 2 - failed to clean tool_hugehelp.c
|
rem 2 - failed to clean tool_hugehelp.c
|
||||||
rem 3 - failed to clean curlbuild.h
|
|
||||||
rem
|
rem
|
||||||
:clean
|
:clean
|
||||||
rem Remove Makefile
|
rem Remove Makefile
|
||||||
|
@ -181,15 +167,6 @@ rem
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
rem Remove curlbuild.h
|
|
||||||
echo * %CD%\include\curl\curlbuild.h
|
|
||||||
if exist include\curl\curlbuild.h (
|
|
||||||
del include\curl\curlbuild.h 2>NUL
|
|
||||||
if exist include\curl\curlbuild.h (
|
|
||||||
exit /B 3
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
exit /B
|
exit /B
|
||||||
|
|
||||||
rem Function to generate src\tool_hugehelp.c
|
rem Function to generate src\tool_hugehelp.c
|
||||||
|
@ -304,11 +281,6 @@ rem
|
||||||
echo Error: Unable to generate src\tool_hugehelp.c
|
echo Error: Unable to generate src\tool_hugehelp.c
|
||||||
goto error
|
goto error
|
||||||
|
|
||||||
:nogencurlbuild
|
|
||||||
echo.
|
|
||||||
echo Error: Unable to generate include\curl\curlbuild.h
|
|
||||||
goto error
|
|
||||||
|
|
||||||
:nocleanmakefile
|
:nocleanmakefile
|
||||||
echo.
|
echo.
|
||||||
echo Error: Unable to clean Makefile
|
echo Error: Unable to clean Makefile
|
||||||
|
@ -319,11 +291,6 @@ rem
|
||||||
echo Error: Unable to clean src\tool_hugehelp.c
|
echo Error: Unable to clean src\tool_hugehelp.c
|
||||||
goto error
|
goto error
|
||||||
|
|
||||||
:nocleancurlbuild
|
|
||||||
echo.
|
|
||||||
echo Error: Unable to clean include\curl\curlbuild.h
|
|
||||||
goto error
|
|
||||||
|
|
||||||
:warning
|
:warning
|
||||||
echo.
|
echo.
|
||||||
echo Warning: The curl manual could not be integrated in the source. This means when
|
echo Warning: The curl manual could not be integrated in the source. This means when
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright 1992-2016 Free Software Foundation, Inc.
|
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2016-10-02'
|
timestamp='2017-11-07'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
|
@ -15,7 +15,7 @@ timestamp='2016-10-02'
|
||||||
# General Public License for more details.
|
# General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
|
@ -27,7 +27,7 @@ timestamp='2016-10-02'
|
||||||
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||||
#
|
#
|
||||||
# You can get the latest version of this script from:
|
# You can get the latest version of this script from:
|
||||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||||
#
|
#
|
||||||
# Please send patches to <config-patches@gnu.org>.
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ Usage: $0 [OPTION]
|
||||||
|
|
||||||
Output the configuration name of the system \`$me' is run on.
|
Output the configuration name of the system \`$me' is run on.
|
||||||
|
|
||||||
Operation modes:
|
Options:
|
||||||
-h, --help print this help, then exit
|
-h, --help print this help, then exit
|
||||||
-t, --time-stamp print date of last modification, then exit
|
-t, --time-stamp print date of last modification, then exit
|
||||||
-v, --version print version number, then exit
|
-v, --version print version number, then exit
|
||||||
|
@ -50,7 +50,7 @@ version="\
|
||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright 1992-2016 Free Software Foundation, Inc.
|
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
|
@ -244,6 +244,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
|
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
|
||||||
echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
|
echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
*:MidnightBSD:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE}
|
||||||
|
exit ;;
|
||||||
*:ekkoBSD:*:*)
|
*:ekkoBSD:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
|
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
@ -259,6 +262,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
*:Sortix:*:*)
|
*:Sortix:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-sortix
|
echo ${UNAME_MACHINE}-unknown-sortix
|
||||||
exit ;;
|
exit ;;
|
||||||
|
*:Redox:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-redox
|
||||||
|
exit ;;
|
||||||
alpha:OSF1:*:*)
|
alpha:OSF1:*:*)
|
||||||
case $UNAME_RELEASE in
|
case $UNAME_RELEASE in
|
||||||
*4.0)
|
*4.0)
|
||||||
|
@ -315,15 +321,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
trap '' 0
|
trap '' 0
|
||||||
exit $exitcode ;;
|
exit $exitcode ;;
|
||||||
Alpha\ *:Windows_NT*:*)
|
|
||||||
# How do we know it's Interix rather than the generic POSIX subsystem?
|
|
||||||
# Should we change UNAME_MACHINE based on the output of uname instead
|
|
||||||
# of the specific Alpha model?
|
|
||||||
echo alpha-pc-interix
|
|
||||||
exit ;;
|
|
||||||
21064:Windows_NT:50:3)
|
|
||||||
echo alpha-dec-winnt3.5
|
|
||||||
exit ;;
|
|
||||||
Amiga*:UNIX_System_V:4.0:*)
|
Amiga*:UNIX_System_V:4.0:*)
|
||||||
echo m68k-unknown-sysv4
|
echo m68k-unknown-sysv4
|
||||||
exit ;;
|
exit ;;
|
||||||
|
@ -485,13 +482,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
#endif
|
#endif
|
||||||
#if defined (host_mips) && defined (MIPSEB)
|
#if defined (host_mips) && defined (MIPSEB)
|
||||||
#if defined (SYSTYPE_SYSV)
|
#if defined (SYSTYPE_SYSV)
|
||||||
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
|
printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
|
||||||
#endif
|
#endif
|
||||||
#if defined (SYSTYPE_SVR4)
|
#if defined (SYSTYPE_SVR4)
|
||||||
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
|
printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
|
||||||
#endif
|
#endif
|
||||||
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
|
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
|
||||||
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
|
printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
exit (-1);
|
exit (-1);
|
||||||
|
@ -614,7 +611,7 @@ EOF
|
||||||
*:AIX:*:*)
|
*:AIX:*:*)
|
||||||
echo rs6000-ibm-aix
|
echo rs6000-ibm-aix
|
||||||
exit ;;
|
exit ;;
|
||||||
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
|
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
|
||||||
echo romp-ibm-bsd4.4
|
echo romp-ibm-bsd4.4
|
||||||
exit ;;
|
exit ;;
|
||||||
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
|
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
|
||||||
|
@ -635,8 +632,8 @@ EOF
|
||||||
9000/[34678]??:HP-UX:*:*)
|
9000/[34678]??:HP-UX:*:*)
|
||||||
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
|
||||||
case "${UNAME_MACHINE}" in
|
case "${UNAME_MACHINE}" in
|
||||||
9000/31? ) HP_ARCH=m68000 ;;
|
9000/31?) HP_ARCH=m68000 ;;
|
||||||
9000/[34]?? ) HP_ARCH=m68k ;;
|
9000/[34]??) HP_ARCH=m68k ;;
|
||||||
9000/[678][0-9][0-9])
|
9000/[678][0-9][0-9])
|
||||||
if [ -x /usr/bin/getconf ]; then
|
if [ -x /usr/bin/getconf ]; then
|
||||||
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
|
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
|
||||||
|
@ -749,7 +746,7 @@ EOF
|
||||||
{ echo "$SYSTEM_NAME"; exit; }
|
{ echo "$SYSTEM_NAME"; exit; }
|
||||||
echo unknown-hitachi-hiuxwe2
|
echo unknown-hitachi-hiuxwe2
|
||||||
exit ;;
|
exit ;;
|
||||||
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
|
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
|
||||||
echo hppa1.1-hp-bsd
|
echo hppa1.1-hp-bsd
|
||||||
exit ;;
|
exit ;;
|
||||||
9000/8??:4.3bsd:*:*)
|
9000/8??:4.3bsd:*:*)
|
||||||
|
@ -758,7 +755,7 @@ EOF
|
||||||
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
|
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
|
||||||
echo hppa1.0-hp-mpeix
|
echo hppa1.0-hp-mpeix
|
||||||
exit ;;
|
exit ;;
|
||||||
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
|
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
|
||||||
echo hppa1.1-hp-osf
|
echo hppa1.1-hp-osf
|
||||||
exit ;;
|
exit ;;
|
||||||
hp8??:OSF1:*:*)
|
hp8??:OSF1:*:*)
|
||||||
|
@ -837,10 +834,11 @@ EOF
|
||||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||||
case ${UNAME_PROCESSOR} in
|
case ${UNAME_PROCESSOR} in
|
||||||
amd64)
|
amd64)
|
||||||
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
UNAME_PROCESSOR=x86_64 ;;
|
||||||
*)
|
i386)
|
||||||
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
UNAME_PROCESSOR=i586 ;;
|
||||||
esac
|
esac
|
||||||
|
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:CYGWIN*:*)
|
i*:CYGWIN*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-cygwin
|
echo ${UNAME_MACHINE}-pc-cygwin
|
||||||
|
@ -854,10 +852,6 @@ EOF
|
||||||
*:MSYS*:*)
|
*:MSYS*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-msys
|
echo ${UNAME_MACHINE}-pc-msys
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:windows32*:*)
|
|
||||||
# uname -m includes "-pc" on this system.
|
|
||||||
echo ${UNAME_MACHINE}-mingw32
|
|
||||||
exit ;;
|
|
||||||
i*:PW*:*)
|
i*:PW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-pw32
|
echo ${UNAME_MACHINE}-pc-pw32
|
||||||
exit ;;
|
exit ;;
|
||||||
|
@ -873,27 +867,12 @@ EOF
|
||||||
echo ia64-unknown-interix${UNAME_RELEASE}
|
echo ia64-unknown-interix${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
|
||||||
echo i${UNAME_MACHINE}-pc-mks
|
|
||||||
exit ;;
|
|
||||||
8664:Windows_NT:*)
|
|
||||||
echo x86_64-pc-mks
|
|
||||||
exit ;;
|
|
||||||
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
|
|
||||||
# How do we know it's Interix rather than the generic POSIX subsystem?
|
|
||||||
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
|
|
||||||
# UNAME_MACHINE based on the output of uname instead of i386?
|
|
||||||
echo i586-pc-interix
|
|
||||||
exit ;;
|
|
||||||
i*:UWIN*:*)
|
i*:UWIN*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-uwin
|
echo ${UNAME_MACHINE}-pc-uwin
|
||||||
exit ;;
|
exit ;;
|
||||||
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
|
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
|
||||||
echo x86_64-unknown-cygwin
|
echo x86_64-unknown-cygwin
|
||||||
exit ;;
|
exit ;;
|
||||||
p*:CYGWIN*:*)
|
|
||||||
echo powerpcle-unknown-cygwin
|
|
||||||
exit ;;
|
|
||||||
prep*:SunOS:5.*:*)
|
prep*:SunOS:5.*:*)
|
||||||
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||||
exit ;;
|
exit ;;
|
||||||
|
@ -1096,7 +1075,7 @@ EOF
|
||||||
i*86:*DOS:*:*)
|
i*86:*DOS:*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-msdosdjgpp
|
echo ${UNAME_MACHINE}-pc-msdosdjgpp
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
|
i*86:*:4.*:*)
|
||||||
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
|
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
|
||||||
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
|
||||||
echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
|
echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
|
||||||
|
@ -1303,14 +1282,21 @@ EOF
|
||||||
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
|
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
|
||||||
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
|
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
|
||||||
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
||||||
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||||
grep IS_64BIT_ARCH >/dev/null
|
grep IS_64BIT_ARCH >/dev/null
|
||||||
then
|
then
|
||||||
case $UNAME_PROCESSOR in
|
case $UNAME_PROCESSOR in
|
||||||
i386) UNAME_PROCESSOR=x86_64 ;;
|
i386) UNAME_PROCESSOR=x86_64 ;;
|
||||||
powerpc) UNAME_PROCESSOR=powerpc64 ;;
|
powerpc) UNAME_PROCESSOR=powerpc64 ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
|
||||||
|
if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
|
||||||
|
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||||
|
grep IS_PPC >/dev/null
|
||||||
|
then
|
||||||
|
UNAME_PROCESSOR=powerpc
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif test "$UNAME_PROCESSOR" = i386 ; then
|
elif test "$UNAME_PROCESSOR" = i386 ; then
|
||||||
# Avoid executing cc on OS X 10.9, as it ships with a stub
|
# Avoid executing cc on OS X 10.9, as it ships with a stub
|
||||||
|
@ -1334,15 +1320,18 @@ EOF
|
||||||
*:QNX:*:4*)
|
*:QNX:*:4*)
|
||||||
echo i386-pc-qnx
|
echo i386-pc-qnx
|
||||||
exit ;;
|
exit ;;
|
||||||
NEO-?:NONSTOP_KERNEL:*:*)
|
NEO-*:NONSTOP_KERNEL:*:*)
|
||||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
NSE-*:NONSTOP_KERNEL:*:*)
|
NSE-*:NONSTOP_KERNEL:*:*)
|
||||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
NSR-?:NONSTOP_KERNEL:*:*)
|
NSR-*:NONSTOP_KERNEL:*:*)
|
||||||
echo nsr-tandem-nsk${UNAME_RELEASE}
|
echo nsr-tandem-nsk${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
|
NSX-*:NONSTOP_KERNEL:*:*)
|
||||||
|
echo nsx-tandem-nsk${UNAME_RELEASE}
|
||||||
|
exit ;;
|
||||||
*:NonStop-UX:*:*)
|
*:NonStop-UX:*:*)
|
||||||
echo mips-compaq-nonstopux
|
echo mips-compaq-nonstopux
|
||||||
exit ;;
|
exit ;;
|
||||||
|
@ -1414,16 +1403,28 @@ EOF
|
||||||
exit ;;
|
exit ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
echo "$0: unable to guess system type" >&2
|
||||||
|
|
||||||
|
case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in
|
||||||
|
mips:Linux | mips64:Linux)
|
||||||
|
# If we got here on MIPS GNU/Linux, output extra information.
|
||||||
|
cat >&2 <<EOF
|
||||||
|
|
||||||
|
NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
|
||||||
|
the system type. Please install a C compiler and try again.
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
cat >&2 <<EOF
|
cat >&2 <<EOF
|
||||||
$0: unable to guess system type
|
|
||||||
|
|
||||||
This script (version $timestamp), has failed to recognize the
|
This script (version $timestamp), has failed to recognize the
|
||||||
operating system you are using. If your script is old, overwrite
|
operating system you are using. If your script is old, overwrite *all*
|
||||||
config.guess and config.sub with the latest versions from:
|
copies of config.guess and config.sub with the latest versions from:
|
||||||
|
|
||||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||||
and
|
and
|
||||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||||
|
|
||||||
If $0 has already been updated, send the following data and any
|
If $0 has already been updated, send the following data and any
|
||||||
information you think might be pertinent to config-patches@gnu.org to
|
information you think might be pertinent to config-patches@gnu.org to
|
||||||
|
@ -1455,7 +1456,7 @@ EOF
|
||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-functions 'time-stamp)
|
||||||
# time-stamp-start: "timestamp='"
|
# time-stamp-start: "timestamp='"
|
||||||
# time-stamp-format: "%:y-%02m-%02d"
|
# time-stamp-format: "%:y-%02m-%02d"
|
||||||
# time-stamp-end: "'"
|
# time-stamp-end: "'"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright 1992-2016 Free Software Foundation, Inc.
|
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2016-11-04'
|
timestamp='2017-11-23'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# under the terms of the GNU General Public License as published by
|
# under the terms of the GNU General Public License as published by
|
||||||
|
@ -15,7 +15,7 @@ timestamp='2016-11-04'
|
||||||
# General Public License for more details.
|
# General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
|
@ -33,7 +33,7 @@ timestamp='2016-11-04'
|
||||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||||
|
|
||||||
# You can get the latest version of this script from:
|
# You can get the latest version of this script from:
|
||||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||||
|
|
||||||
# This file is supposed to be the same for all GNU packages
|
# This file is supposed to be the same for all GNU packages
|
||||||
# and recognize all the CPU types, system types and aliases
|
# and recognize all the CPU types, system types and aliases
|
||||||
|
@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||||
|
|
||||||
Canonicalize a configuration name.
|
Canonicalize a configuration name.
|
||||||
|
|
||||||
Operation modes:
|
Options:
|
||||||
-h, --help print this help, then exit
|
-h, --help print this help, then exit
|
||||||
-t, --time-stamp print date of last modification, then exit
|
-t, --time-stamp print date of last modification, then exit
|
||||||
-v, --version print version number, then exit
|
-v, --version print version number, then exit
|
||||||
|
@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright 1992-2016 Free Software Foundation, Inc.
|
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
|
@ -229,9 +229,6 @@ case $os in
|
||||||
-ptx*)
|
-ptx*)
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||||
;;
|
;;
|
||||||
-windowsnt*)
|
|
||||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
|
||||||
;;
|
|
||||||
-psos*)
|
-psos*)
|
||||||
os=-psos
|
os=-psos
|
||||||
;;
|
;;
|
||||||
|
@ -263,7 +260,7 @@ case $basic_machine in
|
||||||
| fido | fr30 | frv | ft32 \
|
| fido | fr30 | frv | ft32 \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| hexagon \
|
| hexagon \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia16 | ia64 \
|
||||||
| ip2k | iq2000 \
|
| ip2k | iq2000 \
|
||||||
| k1om \
|
| k1om \
|
||||||
| le32 | le64 \
|
| le32 | le64 \
|
||||||
|
@ -315,7 +312,7 @@ case $basic_machine in
|
||||||
| ubicom32 \
|
| ubicom32 \
|
||||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||||
| visium \
|
| visium \
|
||||||
| we32k \
|
| wasm32 \
|
||||||
| x86 | xc16x | xstormy16 | xtensa \
|
| x86 | xc16x | xstormy16 | xtensa \
|
||||||
| z8k | z80)
|
| z8k | z80)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
|
@ -388,7 +385,7 @@ case $basic_machine in
|
||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
| hexagon-* \
|
| hexagon-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
|
||||||
| ip2k-* | iq2000-* \
|
| ip2k-* | iq2000-* \
|
||||||
| k1om-* \
|
| k1om-* \
|
||||||
| le32-* | le64-* \
|
| le32-* | le64-* \
|
||||||
|
@ -446,6 +443,7 @@ case $basic_machine in
|
||||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||||
| vax-* \
|
| vax-* \
|
||||||
| visium-* \
|
| visium-* \
|
||||||
|
| wasm32-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||||
| xstormy16-* | xtensa*-* \
|
| xstormy16-* | xtensa*-* \
|
||||||
|
@ -641,7 +639,7 @@ case $basic_machine in
|
||||||
basic_machine=rs6000-bull
|
basic_machine=rs6000-bull
|
||||||
os=-bosx
|
os=-bosx
|
||||||
;;
|
;;
|
||||||
dpx2* | dpx2*-bull)
|
dpx2*)
|
||||||
basic_machine=m68k-bull
|
basic_machine=m68k-bull
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
;;
|
;;
|
||||||
|
@ -903,7 +901,7 @@ case $basic_machine in
|
||||||
basic_machine=v70-nec
|
basic_machine=v70-nec
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
next | m*-next )
|
next | m*-next)
|
||||||
basic_machine=m68k-next
|
basic_machine=m68k-next
|
||||||
case $os in
|
case $os in
|
||||||
-nextstep* )
|
-nextstep* )
|
||||||
|
@ -948,6 +946,9 @@ case $basic_machine in
|
||||||
nsr-tandem)
|
nsr-tandem)
|
||||||
basic_machine=nsr-tandem
|
basic_machine=nsr-tandem
|
||||||
;;
|
;;
|
||||||
|
nsx-tandem)
|
||||||
|
basic_machine=nsx-tandem
|
||||||
|
;;
|
||||||
op50n-* | op60c-*)
|
op50n-* | op60c-*)
|
||||||
basic_machine=hppa1.1-oki
|
basic_machine=hppa1.1-oki
|
||||||
os=-proelf
|
os=-proelf
|
||||||
|
@ -1243,6 +1244,9 @@ case $basic_machine in
|
||||||
basic_machine=a29k-wrs
|
basic_machine=a29k-wrs
|
||||||
os=-vxworks
|
os=-vxworks
|
||||||
;;
|
;;
|
||||||
|
wasm32)
|
||||||
|
basic_machine=wasm32-unknown
|
||||||
|
;;
|
||||||
w65*)
|
w65*)
|
||||||
basic_machine=w65-wdc
|
basic_machine=w65-wdc
|
||||||
os=-none
|
os=-none
|
||||||
|
@ -1251,6 +1255,9 @@ case $basic_machine in
|
||||||
basic_machine=hppa1.1-winbond
|
basic_machine=hppa1.1-winbond
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
|
x64)
|
||||||
|
basic_machine=x86_64-pc
|
||||||
|
;;
|
||||||
xbox)
|
xbox)
|
||||||
basic_machine=i686-pc
|
basic_machine=i686-pc
|
||||||
os=-mingw32
|
os=-mingw32
|
||||||
|
@ -1358,8 +1365,8 @@ esac
|
||||||
if [ x"$os" != x"" ]
|
if [ x"$os" != x"" ]
|
||||||
then
|
then
|
||||||
case $os in
|
case $os in
|
||||||
# First match some system type aliases
|
# First match some system type aliases that might get confused
|
||||||
# that might get confused with valid system types.
|
# with valid system types.
|
||||||
# -solaris* is a basic system type, with this one exception.
|
# -solaris* is a basic system type, with this one exception.
|
||||||
-auroraux)
|
-auroraux)
|
||||||
os=-auroraux
|
os=-auroraux
|
||||||
|
@ -1379,9 +1386,9 @@ case $os in
|
||||||
-gnu/linux*)
|
-gnu/linux*)
|
||||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||||
;;
|
;;
|
||||||
# First accept the basic system types.
|
# Now accept the basic system types.
|
||||||
# The portable systems comes first.
|
# The portable systems comes first.
|
||||||
# Each alternative MUST END IN A *, to match a version number.
|
# Each alternative MUST end in a * to match a version number.
|
||||||
# -sysv* is not here because it comes later, after sysvr4.
|
# -sysv* is not here because it comes later, after sysvr4.
|
||||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||||
|
@ -1397,7 +1404,7 @@ case $os in
|
||||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||||
|
@ -1409,7 +1416,7 @@ case $os in
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||||
| -onefs* | -tirtos* | -phoenix* | -fuchsia*)
|
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
|
@ -1484,7 +1491,7 @@ case $os in
|
||||||
-nova*)
|
-nova*)
|
||||||
os=-rtmk-nova
|
os=-rtmk-nova
|
||||||
;;
|
;;
|
||||||
-ns2 )
|
-ns2)
|
||||||
os=-nextstep2
|
os=-nextstep2
|
||||||
;;
|
;;
|
||||||
-nsk*)
|
-nsk*)
|
||||||
|
@ -1539,6 +1546,19 @@ case $os in
|
||||||
-dicos*)
|
-dicos*)
|
||||||
os=-dicos
|
os=-dicos
|
||||||
;;
|
;;
|
||||||
|
-pikeos*)
|
||||||
|
# Until real need of OS specific support for
|
||||||
|
# particular features comes up, bare metal
|
||||||
|
# configurations are quite functional.
|
||||||
|
case $basic_machine in
|
||||||
|
arm*)
|
||||||
|
os=-eabi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
-nacl*)
|
-nacl*)
|
||||||
;;
|
;;
|
||||||
-ios)
|
-ios)
|
||||||
|
@ -1638,6 +1658,9 @@ case $basic_machine in
|
||||||
sparc-* | *-sun)
|
sparc-* | *-sun)
|
||||||
os=-sunos4.1.1
|
os=-sunos4.1.1
|
||||||
;;
|
;;
|
||||||
|
pru-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
*-be)
|
*-be)
|
||||||
os=-beos
|
os=-beos
|
||||||
;;
|
;;
|
||||||
|
@ -1683,7 +1706,7 @@ case $basic_machine in
|
||||||
m88k-omron*)
|
m88k-omron*)
|
||||||
os=-luna
|
os=-luna
|
||||||
;;
|
;;
|
||||||
*-next )
|
*-next)
|
||||||
os=-nextstep
|
os=-nextstep
|
||||||
;;
|
;;
|
||||||
*-sequent)
|
*-sequent)
|
||||||
|
@ -1818,7 +1841,7 @@ echo $basic_machine$os
|
||||||
exit
|
exit
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-functions 'time-stamp)
|
||||||
# time-stamp-start: "timestamp='"
|
# time-stamp-start: "timestamp='"
|
||||||
# time-stamp-format: "%:y-%02m-%02d"
|
# time-stamp-format: "%:y-%02m-%02d"
|
||||||
# time-stamp-end: "'"
|
# time-stamp-end: "'"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -36,7 +36,7 @@ This configure script may be copied, distributed and modified under the
|
||||||
terms of the curl license; see COPYING for more details])
|
terms of the curl license; see COPYING for more details])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([lib/urldata.h])
|
AC_CONFIG_SRCDIR([lib/urldata.h])
|
||||||
AC_CONFIG_HEADERS(lib/curl_config.h include/curl/curlbuild.h)
|
AC_CONFIG_HEADERS(lib/curl_config.h)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
@ -51,7 +51,6 @@ CURL_CHECK_OPTION_ARES
|
||||||
CURL_CHECK_OPTION_RT
|
CURL_CHECK_OPTION_RT
|
||||||
|
|
||||||
XC_CHECK_PATH_SEPARATOR
|
XC_CHECK_PATH_SEPARATOR
|
||||||
AX_CODE_COVERAGE
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# save the configure arguments
|
# save the configure arguments
|
||||||
|
@ -121,14 +120,16 @@ AC_SUBST([AR])
|
||||||
|
|
||||||
AC_SUBST(libext)
|
AC_SUBST(libext)
|
||||||
|
|
||||||
dnl Remove non-configure distributed curlbuild.h
|
|
||||||
if test -f ${srcdir}/include/curl/curlbuild.h; then
|
|
||||||
rm -f ${srcdir}/include/curl/curlbuild.h
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl figure out the libcurl version
|
dnl figure out the libcurl version
|
||||||
CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h`
|
CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h`
|
||||||
XC_CHECK_PROG_CC
|
XC_CHECK_PROG_CC
|
||||||
|
|
||||||
|
dnl Check if gcc is being used before adding AX_CODE_COVERAGE
|
||||||
|
AS_IF([ test "$GCC" = "yes" ], [AX_CODE_COVERAGE],
|
||||||
|
# not using GCC so pass a test below - CODE_COVERAGE_ENABLED_TRUE is not zero length
|
||||||
|
CODE_COVERAGE_ENABLED_TRUE='#'
|
||||||
|
)
|
||||||
|
|
||||||
XC_AUTOMAKE
|
XC_AUTOMAKE
|
||||||
AC_MSG_CHECKING([curl version])
|
AC_MSG_CHECKING([curl version])
|
||||||
AC_MSG_RESULT($CURLVERSION)
|
AC_MSG_RESULT($CURLVERSION)
|
||||||
|
@ -153,6 +154,7 @@ dnl initialize all the info variables
|
||||||
curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )"
|
curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )"
|
||||||
curl_ssh_msg="no (--with-libssh2)"
|
curl_ssh_msg="no (--with-libssh2)"
|
||||||
curl_zlib_msg="no (--with-zlib)"
|
curl_zlib_msg="no (--with-zlib)"
|
||||||
|
curl_brotli_msg="no (--with-brotli)"
|
||||||
curl_gss_msg="no (--with-gssapi)"
|
curl_gss_msg="no (--with-gssapi)"
|
||||||
curl_tls_srp_msg="no (--enable-tls-srp)"
|
curl_tls_srp_msg="no (--enable-tls-srp)"
|
||||||
curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
|
curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
|
||||||
|
@ -170,7 +172,7 @@ curl_verbose_msg="enabled (--disable-verbose)"
|
||||||
curl_mtlnk_msg="no (--with-libmetalink)"
|
curl_mtlnk_msg="no (--with-libmetalink)"
|
||||||
curl_psl_msg="no (--with-libpsl)"
|
curl_psl_msg="no (--with-libpsl)"
|
||||||
|
|
||||||
init_ssl_msg=${curl_ssl_msg}
|
ssl_backends=
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Save some initial values the user might have provided
|
dnl Save some initial values the user might have provided
|
||||||
|
@ -188,9 +190,6 @@ AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
|
||||||
|
|
||||||
dnl Checks for programs.
|
dnl Checks for programs.
|
||||||
|
|
||||||
dnl Our curl_off_t internal and external configure settings
|
|
||||||
CURL_CONFIGURE_CURL_OFF_T
|
|
||||||
|
|
||||||
dnl This defines _ALL_SOURCE for AIX
|
dnl This defines _ALL_SOURCE for AIX
|
||||||
CURL_CHECK_AIX_ALL_SOURCE
|
CURL_CHECK_AIX_ALL_SOURCE
|
||||||
|
|
||||||
|
@ -359,6 +358,7 @@ esac
|
||||||
CURL_CHECK_WIN32_LARGEFILE
|
CURL_CHECK_WIN32_LARGEFILE
|
||||||
|
|
||||||
CURL_MAC_CFLAGS
|
CURL_MAC_CFLAGS
|
||||||
|
CURL_SUPPORTS_BUILTIN_AVAILABLE
|
||||||
|
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
dnl switch off particular protocols
|
dnl switch off particular protocols
|
||||||
|
@ -371,6 +371,7 @@ AC_HELP_STRING([--disable-http],[Disable HTTP support]),
|
||||||
no)
|
no)
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
|
AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
|
||||||
|
disable_http="yes"
|
||||||
AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
|
AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
|
||||||
AC_SUBST(CURL_DISABLE_HTTP, [1])
|
AC_SUBST(CURL_DISABLE_HTTP, [1])
|
||||||
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
|
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
|
||||||
|
@ -981,6 +982,94 @@ dnl set variable for use in automakefile(s)
|
||||||
AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
|
AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
|
||||||
AC_SUBST(ZLIB_LIBS)
|
AC_SUBST(ZLIB_LIBS)
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Check for the presence of BROTLI decoder libraries and headers
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
dnl Brotli project home page: https://github.com/google/brotli
|
||||||
|
|
||||||
|
dnl Default to compiler & linker defaults for BROTLI files & libraries.
|
||||||
|
OPT_BROTLI=off
|
||||||
|
AC_ARG_WITH(brotli,dnl
|
||||||
|
AC_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
|
||||||
|
AC_HELP_STRING([--without-brotli], [disable BROTLI]),
|
||||||
|
OPT_BROTLI=$withval)
|
||||||
|
|
||||||
|
if test X"$OPT_BROTLI" != Xno; then
|
||||||
|
dnl backup the pre-brotli variables
|
||||||
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
|
CLEANCPPFLAGS="$CPPFLAGS"
|
||||||
|
CLEANLIBS="$LIBS"
|
||||||
|
|
||||||
|
case "$OPT_BROTLI" in
|
||||||
|
yes)
|
||||||
|
dnl --with-brotli (without path) used
|
||||||
|
CURL_CHECK_PKGCONFIG(libbrotlidec)
|
||||||
|
|
||||||
|
if test "$PKGCONFIG" != "no" ; then
|
||||||
|
LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec`
|
||||||
|
LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec`
|
||||||
|
CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec`
|
||||||
|
version=`$PKGCONFIG --modversion libbrotlidec`
|
||||||
|
DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/-L//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
off)
|
||||||
|
dnl no --with-brotli option given, just check default places
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl use the given --with-brotli spot
|
||||||
|
PREFIX_BROTLI=$OPT_BROTLI
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dnl if given with a prefix, we set -L and -I based on that
|
||||||
|
if test -n "$PREFIX_BROTLI"; then
|
||||||
|
LIB_BROTLI="-lbrotlidec"
|
||||||
|
LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff
|
||||||
|
CPP_BROTLI=-I${PREFIX_BROTLI}/include
|
||||||
|
DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff
|
||||||
|
fi
|
||||||
|
|
||||||
|
LDFLAGS="$LDFLAGS $LD_BROTLI"
|
||||||
|
CPPFLAGS="$CPPFLAGS $CPP_BROTLI"
|
||||||
|
LIBS="$LIB_BROTLI $LIBS"
|
||||||
|
|
||||||
|
AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(brotli/decode.h,
|
||||||
|
curl_brotli_msg="enabled (libbrotlidec)"
|
||||||
|
HAVE_BROTLI=1
|
||||||
|
AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use])
|
||||||
|
AC_SUBST(HAVE_BROTLI, [1])
|
||||||
|
)
|
||||||
|
|
||||||
|
if test X"$OPT_BROTLI" != Xoff &&
|
||||||
|
test "$HAVE_BROTLI" != "1"; then
|
||||||
|
AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$HAVE_BROTLI" = "1"; then
|
||||||
|
if test -n "$DIR_BROTLI"; then
|
||||||
|
dnl when the brotli shared libs were found in a path that the run-time
|
||||||
|
dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
|
||||||
|
dnl to prevent further configure tests to fail due to this
|
||||||
|
|
||||||
|
if test "x$cross_compiling" != "xyes"; then
|
||||||
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_BROTLI"
|
||||||
|
export LD_LIBRARY_PATH
|
||||||
|
AC_MSG_NOTICE([Added $DIR_BROTLI to LD_LIBRARY_PATH])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl no brotli, revert back to clean variables
|
||||||
|
LDFLAGS=$CLEANLDFLAGS
|
||||||
|
CPPFLAGS=$CLEANCPPFLAGS
|
||||||
|
LIBS=$CLEANLIBS
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl Check for LDAP
|
dnl Check for LDAP
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
@ -1123,6 +1212,9 @@ if test "$ipv6" = yes; then
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#else
|
#else
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
#if defined (__TANDEM)
|
||||||
|
# include <netinet/in6.h>
|
||||||
|
#endif
|
||||||
#endif] ,
|
#endif] ,
|
||||||
struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
|
struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
|
||||||
if test "$have_sin6_scope_id" = yes; then
|
if test "$have_sin6_scope_id" = yes; then
|
||||||
|
@ -1340,6 +1432,41 @@ else
|
||||||
CPPFLAGS="$save_CPPFLAGS"
|
CPPFLAGS="$save_CPPFLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
build_libstubgss=no
|
||||||
|
if test x"$want_gss" = "xyes"; then
|
||||||
|
build_libstubgss=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(BUILD_STUB_GSS, test "x$build_libstubgss" = "xyes")
|
||||||
|
|
||||||
|
dnl -------------------------------------------------------------
|
||||||
|
dnl parse --with-default-ssl-backend so it can be validated below
|
||||||
|
dnl -------------------------------------------------------------
|
||||||
|
|
||||||
|
DEFAULT_SSL_BACKEND=no
|
||||||
|
VALID_DEFAULT_SSL_BACKEND=
|
||||||
|
AC_ARG_WITH(default-ssl-backend,
|
||||||
|
AC_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend])
|
||||||
|
AC_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]),
|
||||||
|
[DEFAULT_SSL_BACKEND=$withval])
|
||||||
|
case "$DEFAULT_SSL_BACKEND" in
|
||||||
|
no)
|
||||||
|
dnl --without-default-ssl-backend option used
|
||||||
|
;;
|
||||||
|
default|yes)
|
||||||
|
dnl --with-default-ssl-backend option used without name
|
||||||
|
AC_MSG_ERROR([The name of the default SSL backend is required.])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl --with-default-ssl-backend option used with name
|
||||||
|
AC_SUBST(DEFAULT_SSL_BACKEND)
|
||||||
|
dnl needs to be validated below
|
||||||
|
VALID_DEFAULT_SSL_BACKEND=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl check winssl option before other SSL libraries
|
dnl check winssl option before other SSL libraries
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
|
@ -1351,13 +1478,15 @@ AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
|
||||||
OPT_WINSSL=$withval)
|
OPT_WINSSL=$withval)
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
|
AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_WINSSL" != xno; then
|
||||||
|
ssl_msg=
|
||||||
if test "x$OPT_WINSSL" != "xno" &&
|
if test "x$OPT_WINSSL" != "xno" &&
|
||||||
test "x$curl_cv_native_windows" = "xyes"; then
|
test "x$curl_cv_native_windows" = "xyes"; then
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
|
AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
|
||||||
AC_SUBST(USE_SCHANNEL, [1])
|
AC_SUBST(USE_SCHANNEL, [1])
|
||||||
curl_ssl_msg="enabled (Windows-native)"
|
ssl_msg="Windows-native"
|
||||||
|
test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
WINSSL_ENABLED=1
|
WINSSL_ENABLED=1
|
||||||
# --with-winssl implies --enable-sspi
|
# --with-winssl implies --enable-sspi
|
||||||
AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
|
AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
|
||||||
|
@ -1367,6 +1496,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
@ -1378,18 +1508,20 @@ AC_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]),
|
||||||
OPT_DARWINSSL=$withval)
|
OPT_DARWINSSL=$withval)
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to enable Apple OS native SSL/TLS])
|
AC_MSG_CHECKING([whether to enable Apple OS native SSL/TLS])
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_DARWINSSL" != xno; then
|
||||||
if test "x$OPT_DARWINSSL" != "xno" &&
|
if test "x$OPT_DARWINSSL" != "xno" &&
|
||||||
test -d "/System/Library/Frameworks/Security.framework"; then
|
test -d "/System/Library/Frameworks/Security.framework"; then
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
AC_DEFINE(USE_DARWINSSL, 1, [to enable Apple OS native SSL/TLS support])
|
AC_DEFINE(USE_DARWINSSL, 1, [to enable Apple OS native SSL/TLS support])
|
||||||
AC_SUBST(USE_DARWINSSL, [1])
|
AC_SUBST(USE_DARWINSSL, [1])
|
||||||
curl_ssl_msg="enabled (Apple OS-native)"
|
ssl_msg="Apple OS-native"
|
||||||
|
test darwinssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
DARWINSSL_ENABLED=1
|
DARWINSSL_ENABLED=1
|
||||||
LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
|
LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
@ -1407,7 +1539,10 @@ AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the
|
||||||
AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
|
AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
|
||||||
OPT_SSL=$withval)
|
OPT_SSL=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
if test -z "$ssl_backends" -o "x$OPT_SSL" != xno &&
|
||||||
|
test X"$OPT_SSL" != Xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
dnl backup the pre-ssl variables
|
dnl backup the pre-ssl variables
|
||||||
CLEANLDFLAGS="$LDFLAGS"
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
CLEANCPPFLAGS="$CPPFLAGS"
|
CLEANCPPFLAGS="$CPPFLAGS"
|
||||||
|
@ -1521,7 +1656,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
|
|
||||||
dnl still no, but what about with -ldl?
|
dnl still no, but what about with -ldl?
|
||||||
AC_MSG_CHECKING([OpenSSL linking with -ldl])
|
AC_MSG_CHECKING([OpenSSL linking with -ldl])
|
||||||
LIBS="-ldl $LIBS"
|
LIBS="$LIBS -ldl"
|
||||||
AC_TRY_LINK(
|
AC_TRY_LINK(
|
||||||
[
|
[
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
|
@ -1538,7 +1673,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
dnl ok, so what about bouth -ldl and -lpthread?
|
dnl ok, so what about bouth -ldl and -lpthread?
|
||||||
|
|
||||||
AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
|
AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
|
||||||
LIBS="-lpthread $LIBS"
|
LIBS="$LIBS -lpthread"
|
||||||
AC_TRY_LINK(
|
AC_TRY_LINK(
|
||||||
[
|
[
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
|
@ -1588,7 +1723,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
dnl Have the libraries--check for OpenSSL headers
|
dnl Have the libraries--check for OpenSSL headers
|
||||||
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
||||||
openssl/pem.h openssl/ssl.h openssl/err.h,
|
openssl/pem.h openssl/ssl.h openssl/err.h,
|
||||||
curl_ssl_msg="enabled (OpenSSL)"
|
ssl_msg="OpenSSL"
|
||||||
|
test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
OPENSSL_ENABLED=1
|
OPENSSL_ENABLED=1
|
||||||
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
|
AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
|
||||||
|
|
||||||
|
@ -1602,16 +1738,13 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
test $ac_cv_header_crypto_h = yes &&
|
test $ac_cv_header_crypto_h = yes &&
|
||||||
test $ac_cv_header_ssl_h = yes; then
|
test $ac_cv_header_ssl_h = yes; then
|
||||||
dnl three matches
|
dnl three matches
|
||||||
curl_ssl_msg="enabled (OpenSSL)"
|
ssl_msg="OpenSSL"
|
||||||
OPENSSL_ENABLED=1
|
OPENSSL_ENABLED=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test X"$OPENSSL_ENABLED" = X"1"; then
|
if test X"$OPENSSL_ENABLED" != X"1"; then
|
||||||
dnl is there a pkcs12.h header present?
|
|
||||||
AC_CHECK_HEADERS(openssl/pkcs12.h)
|
|
||||||
else
|
|
||||||
LIBS="$CLEANLIBS"
|
LIBS="$CLEANLIBS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1653,7 +1786,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1,
|
AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1,
|
||||||
[Define to 1 if using BoringSSL.])
|
[Define to 1 if using BoringSSL.])
|
||||||
curl_ssl_msg="enabled (BoringSSL)"
|
ssl_msg="BoringSSL"
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
])
|
])
|
||||||
|
@ -1669,7 +1802,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1,
|
AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1,
|
||||||
[Define to 1 if using libressl.])
|
[Define to 1 if using libressl.])
|
||||||
curl_ssl_msg="enabled (libressl)"
|
ssl_msg="libressl"
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
])
|
])
|
||||||
|
@ -1689,6 +1822,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
|
||||||
CURL_CHECK_OPENSSL_API
|
CURL_CHECK_OPENSSL_API
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
@ -1750,7 +1884,8 @@ AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to th
|
||||||
AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
|
AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
|
||||||
OPT_GNUTLS=$withval)
|
OPT_GNUTLS=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_GNUTLS" != xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
if test X"$OPT_GNUTLS" != Xno; then
|
if test X"$OPT_GNUTLS" != Xno; then
|
||||||
|
|
||||||
|
@ -1824,7 +1959,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_GNUTLS, [1])
|
AC_SUBST(USE_GNUTLS, [1])
|
||||||
GNUTLS_ENABLED=1
|
GNUTLS_ENABLED=1
|
||||||
USE_GNUTLS="yes"
|
USE_GNUTLS="yes"
|
||||||
curl_ssl_msg="enabled (GnuTLS)"
|
ssl_msg="GnuTLS"
|
||||||
|
test gnutls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
LIBS="$CLEANLIBS"
|
LIBS="$CLEANLIBS"
|
||||||
|
@ -1852,6 +1988,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
|
|
||||||
fi dnl GNUTLS not disabled
|
fi dnl GNUTLS not disabled
|
||||||
|
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ---
|
dnl ---
|
||||||
|
@ -1909,7 +2046,8 @@ AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points t
|
||||||
AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
|
AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
|
||||||
OPT_POLARSSL=$withval)
|
OPT_POLARSSL=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_POLARSSL" != xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
if test X"$OPT_POLARSSL" != Xno; then
|
if test X"$OPT_POLARSSL" != Xno; then
|
||||||
|
|
||||||
|
@ -1927,7 +2065,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_POLARSSL, [1])
|
AC_SUBST(USE_POLARSSL, [1])
|
||||||
POLARSSL_ENABLED=1
|
POLARSSL_ENABLED=1
|
||||||
USE_POLARSSL="yes"
|
USE_POLARSSL="yes"
|
||||||
curl_ssl_msg="enabled (PolarSSL)"
|
ssl_msg="PolarSSL"
|
||||||
|
test polarssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1953,7 +2092,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_POLARSSL, [1])
|
AC_SUBST(USE_POLARSSL, [1])
|
||||||
POLARSSL_ENABLED=1
|
POLARSSL_ENABLED=1
|
||||||
USE_POLARSSL="yes"
|
USE_POLARSSL="yes"
|
||||||
curl_ssl_msg="enabled (PolarSSL)"
|
ssl_msg="PolarSSL"
|
||||||
|
test polarssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
CPPFLAGS=$_cppflags
|
CPPFLAGS=$_cppflags
|
||||||
|
@ -1981,6 +2121,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
|
|
||||||
fi dnl PolarSSL not disabled
|
fi dnl PolarSSL not disabled
|
||||||
|
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ----------------------------------------------------
|
dnl ----------------------------------------------------
|
||||||
|
@ -1996,7 +2137,8 @@ AC_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to
|
||||||
AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]),
|
AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]),
|
||||||
OPT_MBEDTLS=$withval)
|
OPT_MBEDTLS=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_MBEDTLS" != xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
if test X"$OPT_MBEDTLS" != Xno; then
|
if test X"$OPT_MBEDTLS" != Xno; then
|
||||||
|
|
||||||
|
@ -2014,7 +2156,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_MBEDTLS, [1])
|
AC_SUBST(USE_MBEDTLS, [1])
|
||||||
MBEDTLS_ENABLED=1
|
MBEDTLS_ENABLED=1
|
||||||
USE_MBEDTLS="yes"
|
USE_MBEDTLS="yes"
|
||||||
curl_ssl_msg="enabled (mbedTLS)"
|
ssl_msg="mbedTLS"
|
||||||
|
test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
], [], -lmbedx509 -lmbedcrypto)
|
], [], -lmbedx509 -lmbedcrypto)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2040,7 +2183,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_MBEDTLS, [1])
|
AC_SUBST(USE_MBEDTLS, [1])
|
||||||
MBEDTLS_ENABLED=1
|
MBEDTLS_ENABLED=1
|
||||||
USE_MBEDTLS="yes"
|
USE_MBEDTLS="yes"
|
||||||
curl_ssl_msg="enabled (mbedTLS)"
|
ssl_msg="mbedTLS"
|
||||||
|
test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
CPPFLAGS=$_cppflags
|
CPPFLAGS=$_cppflags
|
||||||
|
@ -2068,6 +2212,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
|
|
||||||
fi dnl mbedTLS not disabled
|
fi dnl mbedTLS not disabled
|
||||||
|
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ----------------------------------------------------
|
dnl ----------------------------------------------------
|
||||||
|
@ -2084,7 +2229,8 @@ AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to th
|
||||||
AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
|
AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
|
||||||
OPT_CYASSL=$withval)
|
OPT_CYASSL=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_CYASSL" != xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
if test X"$OPT_CYASSL" != Xno; then
|
if test X"$OPT_CYASSL" != Xno; then
|
||||||
|
|
||||||
|
@ -2106,7 +2252,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_CYASSL, [1])
|
AC_SUBST(USE_CYASSL, [1])
|
||||||
CYASSL_ENABLED=1
|
CYASSL_ENABLED=1
|
||||||
USE_CYASSL="yes"
|
USE_CYASSL="yes"
|
||||||
curl_ssl_msg="enabled (CyaSSL)"
|
ssl_msg="CyaSSL"
|
||||||
|
test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2132,7 +2279,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_CYASSL, [1])
|
AC_SUBST(USE_CYASSL, [1])
|
||||||
CYASSL_ENABLED=1
|
CYASSL_ENABLED=1
|
||||||
USE_CYASSL="yes"
|
USE_CYASSL="yes"
|
||||||
curl_ssl_msg="enabled (CyaSSL)"
|
ssl_msg="CyaSSL"
|
||||||
|
test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
CPPFLAGS=$_cppflags
|
CPPFLAGS=$_cppflags
|
||||||
|
@ -2177,7 +2325,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_CYASSL, [1])
|
AC_SUBST(USE_CYASSL, [1])
|
||||||
CYASSL_ENABLED=1
|
CYASSL_ENABLED=1
|
||||||
USE_CYASSL="yes"
|
USE_CYASSL="yes"
|
||||||
curl_ssl_msg="enabled (WolfSSL)"
|
ssl_msg="WolfSSL"
|
||||||
|
test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
|
@ -2231,6 +2380,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
|
|
||||||
fi dnl CyaSSL not disabled
|
fi dnl CyaSSL not disabled
|
||||||
|
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ----------------------------------------------------
|
dnl ----------------------------------------------------
|
||||||
|
@ -2245,7 +2395,8 @@ AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the inst
|
||||||
AC_HELP_STRING([--without-nss], [disable NSS detection]),
|
AC_HELP_STRING([--without-nss], [disable NSS detection]),
|
||||||
OPT_NSS=$withval)
|
OPT_NSS=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_NSS" != xno; then
|
||||||
|
ssl_msg=
|
||||||
|
|
||||||
if test X"$OPT_NSS" != Xno; then
|
if test X"$OPT_NSS" != Xno; then
|
||||||
|
|
||||||
|
@ -2320,7 +2471,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_NSS, [1])
|
AC_SUBST(USE_NSS, [1])
|
||||||
USE_NSS="yes"
|
USE_NSS="yes"
|
||||||
NSS_ENABLED=1
|
NSS_ENABLED=1
|
||||||
curl_ssl_msg="enabled (NSS)"
|
ssl_msg="NSS"
|
||||||
|
test nss != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
LDFLAGS="$CLEANLDFLAGS"
|
LDFLAGS="$CLEANLDFLAGS"
|
||||||
|
@ -2349,7 +2501,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
|
|
||||||
fi dnl NSS not disabled
|
fi dnl NSS not disabled
|
||||||
|
|
||||||
fi dnl curl_ssl_msg = init_ssl_msg
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
|
fi
|
||||||
|
|
||||||
OPT_AXTLS=off
|
OPT_AXTLS=off
|
||||||
|
|
||||||
|
@ -2358,7 +2511,8 @@ AC_HELP_STRING([--with-axtls=PATH],[Where to look for axTLS, PATH points to the
|
||||||
AC_HELP_STRING([--without-axtls], [disable axTLS]),
|
AC_HELP_STRING([--without-axtls], [disable axTLS]),
|
||||||
OPT_AXTLS=$withval)
|
OPT_AXTLS=$withval)
|
||||||
|
|
||||||
if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
if test -z "$ssl_backends" -o "x$OPT_AXTLS" != xno; then
|
||||||
|
ssl_msg=
|
||||||
if test X"$OPT_AXTLS" != Xno; then
|
if test X"$OPT_AXTLS" != Xno; then
|
||||||
dnl backup the pre-axtls variables
|
dnl backup the pre-axtls variables
|
||||||
CLEANLDFLAGS="$LDFLAGS"
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
|
@ -2392,7 +2546,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
AC_SUBST(USE_AXTLS, [1])
|
AC_SUBST(USE_AXTLS, [1])
|
||||||
AXTLS_ENABLED=1
|
AXTLS_ENABLED=1
|
||||||
USE_AXTLS="yes"
|
USE_AXTLS="yes"
|
||||||
curl_ssl_msg="enabled (axTLS)"
|
ssl_msg="axTLS"
|
||||||
|
test axtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
|
||||||
|
|
||||||
if test "x$cross_compiling" != "xyes"; then
|
if test "x$cross_compiling" != "xyes"; then
|
||||||
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
|
||||||
|
@ -2405,15 +2560,46 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
|
||||||
LIBS="$CLEANLIBS"
|
LIBS="$CLEANLIBS"
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
|
case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" in
|
||||||
|
x)
|
||||||
AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
|
AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
|
||||||
AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
|
AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
|
||||||
else
|
;;
|
||||||
# SSL is enabled, genericly
|
x1)
|
||||||
|
# one SSL backend is enabled
|
||||||
AC_SUBST(SSL_ENABLED)
|
AC_SUBST(SSL_ENABLED)
|
||||||
SSL_ENABLED="1"
|
SSL_ENABLED="1"
|
||||||
|
AC_MSG_NOTICE([built with one SSL backend])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# more than one SSL backend is enabled
|
||||||
|
AC_SUBST(SSL_ENABLED)
|
||||||
|
SSL_ENABLED="1"
|
||||||
|
AC_SUBST(CURL_WITH_MULTI_SSL)
|
||||||
|
CURL_WITH_MULTI_SSL="1"
|
||||||
|
AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends])
|
||||||
|
AC_MSG_NOTICE([built with multiple SSL backends])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$ssl_backends"; then
|
||||||
|
curl_ssl_msg="enabled ($ssl_backends)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test no = "$VALID_DEFAULT_SSL_BACKEND"
|
||||||
|
then
|
||||||
|
if test -n "$SSL_ENABLED"
|
||||||
|
then
|
||||||
|
AC_MSG_ERROR([Default SSL backend $DEFAULT_SSL_BACKEND not enabled!])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Default SSL backend requires SSL!])
|
||||||
|
fi
|
||||||
|
elif test yes = "$VALID_DEFAULT_SSL_BACKEND"
|
||||||
|
then
|
||||||
|
AC_DEFINE_UNQUOTED([CURL_DEFAULT_SSL_BACKEND], ["$DEFAULT_SSL_BACKEND"], [Default SSL backend])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
@ -2539,8 +2725,15 @@ dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
|
||||||
OPT_LIBSSH2=off
|
OPT_LIBSSH2=off
|
||||||
AC_ARG_WITH(libssh2,dnl
|
AC_ARG_WITH(libssh2,dnl
|
||||||
AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
|
AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
|
||||||
AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
|
AC_HELP_STRING([--with-libssh2], [enable LIBSSH2]),
|
||||||
OPT_LIBSSH2=$withval)
|
OPT_LIBSSH2=$withval, OPT_LIBSSH2=no)
|
||||||
|
|
||||||
|
|
||||||
|
OPT_LIBSSH=off
|
||||||
|
AC_ARG_WITH(libssh,dnl
|
||||||
|
AC_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the LIBSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
|
||||||
|
AC_HELP_STRING([--with-libssh], [enable LIBSSH]),
|
||||||
|
OPT_LIBSSH=$withval, OPT_LIBSSH=no)
|
||||||
|
|
||||||
if test X"$OPT_LIBSSH2" != Xno; then
|
if test X"$OPT_LIBSSH2" != Xno; then
|
||||||
dnl backup the pre-libssh2 variables
|
dnl backup the pre-libssh2 variables
|
||||||
|
@ -2615,6 +2808,79 @@ if test X"$OPT_LIBSSH2" != Xno; then
|
||||||
CPPFLAGS=$CLEANCPPFLAGS
|
CPPFLAGS=$CLEANCPPFLAGS
|
||||||
LIBS=$CLEANLIBS
|
LIBS=$CLEANLIBS
|
||||||
fi
|
fi
|
||||||
|
elif test X"$OPT_LIBSSH" != Xno; then
|
||||||
|
dnl backup the pre-libssh variables
|
||||||
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
|
CLEANCPPFLAGS="$CPPFLAGS"
|
||||||
|
CLEANLIBS="$LIBS"
|
||||||
|
|
||||||
|
case "$OPT_LIBSSH" in
|
||||||
|
yes)
|
||||||
|
dnl --with-libssh (without path) used
|
||||||
|
CURL_CHECK_PKGCONFIG(libssh)
|
||||||
|
|
||||||
|
if test "$PKGCONFIG" != "no" ; then
|
||||||
|
LIB_SSH=`$PKGCONFIG --libs-only-l libssh`
|
||||||
|
LD_SSH=`$PKGCONFIG --libs-only-L libssh`
|
||||||
|
CPP_SSH=`$PKGCONFIG --cflags-only-I libssh`
|
||||||
|
version=`$PKGCONFIG --modversion libssh`
|
||||||
|
DIR_SSH=`echo $LD_SSH | $SED -e 's/-L//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
off)
|
||||||
|
dnl no --with-libssh option given, just check default places
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl use the given --with-libssh spot
|
||||||
|
PREFIX_SSH=$OPT_LIBSSH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dnl if given with a prefix, we set -L and -I based on that
|
||||||
|
if test -n "$PREFIX_SSH"; then
|
||||||
|
LIB_SSH="-lssh"
|
||||||
|
LD_SSH=-L${PREFIX_SSH}/lib$libsuff
|
||||||
|
CPP_SSH=-I${PREFIX_SSH}/include
|
||||||
|
DIR_SSH=${PREFIX_SSH}/lib$libsuff
|
||||||
|
fi
|
||||||
|
|
||||||
|
LDFLAGS="$LDFLAGS $LD_SSH"
|
||||||
|
CPPFLAGS="$CPPFLAGS $CPP_SSH"
|
||||||
|
LIBS="$LIB_SSH $LIBS"
|
||||||
|
|
||||||
|
AC_CHECK_LIB(ssh, ssh_new)
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(libssh/libssh.h,
|
||||||
|
curl_ssh_msg="enabled (libSSH)"
|
||||||
|
LIBSSH_ENABLED=1
|
||||||
|
AC_DEFINE(USE_LIBSSH, 1, [if libSSH is in use])
|
||||||
|
AC_SUBST(USE_LIBSSH, [1])
|
||||||
|
)
|
||||||
|
|
||||||
|
if test X"$OPT_LIBSSH" != Xoff &&
|
||||||
|
test "$LIBSSH_ENABLED" != "1"; then
|
||||||
|
AC_MSG_ERROR([libSSH libs and/or directories were not found where specified!])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$LIBSSH_ENABLED" = "1"; then
|
||||||
|
if test -n "$DIR_SSH"; then
|
||||||
|
dnl when the libssh shared libs were found in a path that the run-time
|
||||||
|
dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
|
||||||
|
dnl to prevent further configure tests to fail due to this
|
||||||
|
|
||||||
|
if test "x$cross_compiling" != "xyes"; then
|
||||||
|
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH"
|
||||||
|
export LD_LIBRARY_PATH
|
||||||
|
AC_MSG_NOTICE([Added $DIR_SSH to LD_LIBRARY_PATH])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl no libssh, revert back to clean variables
|
||||||
|
LDFLAGS=$CLEANLDFLAGS
|
||||||
|
CPPFLAGS=$CLEANCPPFLAGS
|
||||||
|
LIBS=$CLEANLIBS
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
@ -2714,7 +2980,9 @@ AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shar
|
||||||
AC_MSG_WARN([You need an ld version supporting the --version-script option])
|
AC_MSG_WARN([You need an ld version supporting the --version-script option])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
if test "x$OPENSSL_ENABLED" = "x1"; then
|
if test "x$CURL_WITH_MULTI_SSL" = "x1"; then
|
||||||
|
versioned_symbols_flavour="MULTISSL_"
|
||||||
|
elif test "x$OPENSSL_ENABLED" = "x1"; then
|
||||||
versioned_symbols_flavour="OPENSSL_"
|
versioned_symbols_flavour="OPENSSL_"
|
||||||
elif test "x$GNUTLS_ENABLED" = "x1"; then
|
elif test "x$GNUTLS_ENABLED" = "x1"; then
|
||||||
versioned_symbols_flavour="GNUTLS_"
|
versioned_symbols_flavour="GNUTLS_"
|
||||||
|
@ -2786,6 +3054,7 @@ if test "$want_winidn" = "yes"; then
|
||||||
clean_LDFLAGS="$LDFLAGS"
|
clean_LDFLAGS="$LDFLAGS"
|
||||||
clean_LIBS="$LIBS"
|
clean_LIBS="$LIBS"
|
||||||
WINIDN_LIBS="-lnormaliz"
|
WINIDN_LIBS="-lnormaliz"
|
||||||
|
WINIDN_CPPFLAGS="-DWINVER=0x0600"
|
||||||
#
|
#
|
||||||
if test "$want_winidn_path" != "default"; then
|
if test "$want_winidn_path" != "default"; then
|
||||||
dnl path has been specified
|
dnl path has been specified
|
||||||
|
@ -2801,7 +3070,11 @@ if test "$want_winidn" = "yes"; then
|
||||||
#
|
#
|
||||||
AC_MSG_CHECKING([if IdnToUnicode can be linked])
|
AC_MSG_CHECKING([if IdnToUnicode can be linked])
|
||||||
AC_LINK_IFELSE([
|
AC_LINK_IFELSE([
|
||||||
AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
|
AC_LANG_PROGRAM([[
|
||||||
|
#include <windows.h>
|
||||||
|
]],[[
|
||||||
|
IdnToUnicode(0, NULL, 0, NULL, 0);
|
||||||
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
tst_links_winidn="yes"
|
tst_links_winidn="yes"
|
||||||
|
@ -2958,6 +3231,12 @@ dnl Check for nghttp2
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
|
||||||
OPT_H2="yes"
|
OPT_H2="yes"
|
||||||
|
|
||||||
|
if test "x$disable_http" = "xyes"; then
|
||||||
|
# without HTTP, nghttp2 is no use
|
||||||
|
OPT_H2="no"
|
||||||
|
fi
|
||||||
|
|
||||||
AC_ARG_WITH(nghttp2,
|
AC_ARG_WITH(nghttp2,
|
||||||
AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
|
AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
|
||||||
AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
|
AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
|
||||||
|
@ -3080,11 +3359,12 @@ AC_CHECK_HEADERS(
|
||||||
assert.h \
|
assert.h \
|
||||||
unistd.h \
|
unistd.h \
|
||||||
stdlib.h \
|
stdlib.h \
|
||||||
limits.h \
|
|
||||||
arpa/inet.h \
|
arpa/inet.h \
|
||||||
net/if.h \
|
net/if.h \
|
||||||
netinet/in.h \
|
netinet/in.h \
|
||||||
|
netinet/in6.h \
|
||||||
sys/un.h \
|
sys/un.h \
|
||||||
|
linux/tcp.h \
|
||||||
netinet/tcp.h \
|
netinet/tcp.h \
|
||||||
netdb.h \
|
netdb.h \
|
||||||
sys/sockio.h \
|
sys/sockio.h \
|
||||||
|
@ -3133,6 +3413,9 @@ dnl default includes
|
||||||
#ifdef HAVE_NETINET_IN_H
|
#ifdef HAVE_NETINET_IN_H
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_NETINET_IN6_H
|
||||||
|
#include <netinet/in6.h>
|
||||||
|
#endif
|
||||||
#ifdef HAVE_SYS_UN_H
|
#ifdef HAVE_SYS_UN_H
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -3151,18 +3434,15 @@ AC_CHECK_SIZEOF(size_t)
|
||||||
AC_CHECK_SIZEOF(long)
|
AC_CHECK_SIZEOF(long)
|
||||||
AC_CHECK_SIZEOF(int)
|
AC_CHECK_SIZEOF(int)
|
||||||
AC_CHECK_SIZEOF(short)
|
AC_CHECK_SIZEOF(short)
|
||||||
CURL_CONFIGURE_LONG
|
|
||||||
AC_CHECK_SIZEOF(time_t)
|
AC_CHECK_SIZEOF(time_t)
|
||||||
AC_CHECK_SIZEOF(off_t)
|
AC_CHECK_SIZEOF(off_t)
|
||||||
|
|
||||||
soname_bump=no
|
o=$CPPFLAGS
|
||||||
if test x"$curl_cv_native_windows" != "xyes" &&
|
CPPFLAGS="-I$srcdir/include $CPPFLAGS"
|
||||||
test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
|
AC_CHECK_SIZEOF(curl_off_t, unused , [
|
||||||
AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
|
#include <curl/system.h>
|
||||||
AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
|
])
|
||||||
soname_bump=yes
|
CPPFLAGS=$o
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_TYPE(long long,
|
AC_CHECK_TYPE(long long,
|
||||||
[AC_DEFINE(HAVE_LONGLONG, 1,
|
[AC_DEFINE(HAVE_LONGLONG, 1,
|
||||||
|
@ -3279,23 +3559,19 @@ case $host in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
AC_CHECK_FUNCS([fork \
|
AC_CHECK_FUNCS([geteuid \
|
||||||
geteuid \
|
|
||||||
getpass_r \
|
getpass_r \
|
||||||
getppid \
|
getppid \
|
||||||
getprotobyname \
|
|
||||||
getpwuid \
|
getpwuid \
|
||||||
getpwuid_r \
|
getpwuid_r \
|
||||||
getrlimit \
|
getrlimit \
|
||||||
gettimeofday \
|
gettimeofday \
|
||||||
if_nametoindex \
|
if_nametoindex \
|
||||||
inet_addr \
|
mach_absolute_time \
|
||||||
perror \
|
|
||||||
pipe \
|
pipe \
|
||||||
setlocale \
|
setlocale \
|
||||||
setmode \
|
setmode \
|
||||||
setrlimit \
|
setrlimit \
|
||||||
uname \
|
|
||||||
utime \
|
utime \
|
||||||
utimes
|
utimes
|
||||||
],[
|
],[
|
||||||
|
@ -3400,11 +3676,8 @@ else
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
|
AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
|
||||||
|
|
||||||
CURL_CHECK_OPTION_THREADED_RESOLVER
|
if test "x$want_ares" != xyes; then
|
||||||
|
CURL_CHECK_OPTION_THREADED_RESOLVER
|
||||||
if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
|
|
||||||
AC_MSG_ERROR(
|
|
||||||
[Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
|
@ -3649,26 +3922,6 @@ dnl hiding of library internal symbols
|
||||||
dnl
|
dnl
|
||||||
CURL_CONFIGURE_SYMBOL_HIDING
|
CURL_CONFIGURE_SYMBOL_HIDING
|
||||||
|
|
||||||
dnl ************************************************************
|
|
||||||
dnl enforce SONAME bump
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to enforce SONAME bump])
|
|
||||||
AC_ARG_ENABLE(soname-bump,
|
|
||||||
AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
|
|
||||||
AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
|
|
||||||
[ case "$enableval" in
|
|
||||||
yes) AC_MSG_RESULT(yes)
|
|
||||||
soname_bump=yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
esac ],
|
|
||||||
AC_MSG_RESULT($soname_bump)
|
|
||||||
)
|
|
||||||
AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl All the library dependencies put into $LIB apply to libcurl only.
|
dnl All the library dependencies put into $LIB apply to libcurl only.
|
||||||
dnl
|
dnl
|
||||||
|
@ -3715,6 +3968,9 @@ fi
|
||||||
if test "x$HAVE_LIBZ" = "x1"; then
|
if test "x$HAVE_LIBZ" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
|
||||||
fi
|
fi
|
||||||
|
if test "x$HAVE_BROTLI" = "x1"; then
|
||||||
|
SUPPORT_FEATURES="$SUPPORT_FEATURES brotli"
|
||||||
|
fi
|
||||||
if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
||||||
-o "x$USE_THREADS_WIN32" = "x1"; then
|
-o "x$USE_THREADS_WIN32" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
||||||
|
@ -3765,6 +4021,10 @@ if test "x$USE_NGHTTP2" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$CURL_WITH_MULTI_SSL" = "x1"; then
|
||||||
|
SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
|
||||||
|
fi
|
||||||
|
|
||||||
if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
|
if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
|
||||||
-o "x$NSS_ENABLED" = "x1"; then
|
-o "x$NSS_ENABLED" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
|
||||||
|
@ -3841,6 +4101,10 @@ if test "x$USE_LIBSSH2" = "x1"; then
|
||||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
|
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
|
||||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
|
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
|
||||||
fi
|
fi
|
||||||
|
if test "x$USE_LIBSSH" = "x1"; then
|
||||||
|
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
|
||||||
|
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
|
||||||
|
fi
|
||||||
if test "x$CURL_DISABLE_RTSP" != "x1"; then
|
if test "x$CURL_DISABLE_RTSP" != "x1"; then
|
||||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
|
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
|
||||||
fi
|
fi
|
||||||
|
@ -3872,6 +4136,9 @@ squeeze SUPPORT_PROTOCOLS
|
||||||
|
|
||||||
XC_CHECK_BUILD_FLAGS
|
XC_CHECK_BUILD_FLAGS
|
||||||
|
|
||||||
|
SSL_BACKENDS=${ssl_backends}
|
||||||
|
AC_SUBST(SSL_BACKENDS)
|
||||||
|
|
||||||
if test "x$want_curldebug_assumed" = "xyes" &&
|
if test "x$want_curldebug_assumed" = "xyes" &&
|
||||||
test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
|
test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
|
||||||
ac_configure_args="$ac_configure_args --enable-curldebug"
|
ac_configure_args="$ac_configure_args --enable-curldebug"
|
||||||
|
@ -3928,6 +4195,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
|
||||||
SSL support: ${curl_ssl_msg}
|
SSL support: ${curl_ssl_msg}
|
||||||
SSH support: ${curl_ssh_msg}
|
SSH support: ${curl_ssh_msg}
|
||||||
zlib support: ${curl_zlib_msg}
|
zlib support: ${curl_zlib_msg}
|
||||||
|
brotli support: ${curl_brotli_msg}
|
||||||
GSS-API support: ${curl_gss_msg}
|
GSS-API support: ${curl_gss_msg}
|
||||||
TLS-SRP support: ${curl_tls_srp_msg}
|
TLS-SRP support: ${curl_tls_srp_msg}
|
||||||
resolver: ${curl_res_msg}
|
resolver: ${curl_res_msg}
|
||||||
|
@ -3951,14 +4219,3 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
|
||||||
HTTP2 support: ${curl_h2_msg}
|
HTTP2 support: ${curl_h2_msg}
|
||||||
Protocols: ${SUPPORT_PROTOCOLS}
|
Protocols: ${SUPPORT_PROTOCOLS}
|
||||||
])
|
])
|
||||||
|
|
||||||
if test "x$soname_bump" = "xyes"; then
|
|
||||||
|
|
||||||
cat <<EOM
|
|
||||||
SONAME bump: yes - WARNING: this library will be built with the SONAME
|
|
||||||
number bumped due to (a detected) ABI breakage.
|
|
||||||
See lib/README.curl_off_t for details on this.
|
|
||||||
EOM
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 2001 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -44,6 +44,7 @@ Available values for OPTION include:
|
||||||
--libs library linking information
|
--libs library linking information
|
||||||
--prefix curl install prefix
|
--prefix curl install prefix
|
||||||
--protocols newline separated list of enabled protocols
|
--protocols newline separated list of enabled protocols
|
||||||
|
--ssl-backends output the SSL backends libcurl was built to support
|
||||||
--static-libs static libcurl library linking information
|
--static-libs static libcurl library linking information
|
||||||
--version output version information
|
--version output version information
|
||||||
--vernum output the version information as a number (hexadecimal)
|
--vernum output the version information as a number (hexadecimal)
|
||||||
|
@ -153,6 +154,9 @@ while test $# -gt 0; do
|
||||||
echo ${CURLLIBDIR}-lcurl
|
echo ${CURLLIBDIR}-lcurl
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
--ssl-backends)
|
||||||
|
echo "@SSL_BACKENDS@"
|
||||||
|
;;
|
||||||
|
|
||||||
--static-libs)
|
--static-libs)
|
||||||
if test "X@ENABLE_STATIC@" != "Xno" ; then
|
if test "X@ENABLE_STATIC@" != "Xno" ; then
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
scriptversion=2013-05-30.07; # UTC
|
scriptversion=2016-01-11.22; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -786,6 +786,6 @@ exit 0
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-time-zone: "UTC"
|
# time-stamp-time-zone: "UTC0"
|
||||||
# time-stamp-end: "; # UTC"
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
|
|
@ -65,7 +65,7 @@ Lua: [luacurl](http://luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](ht
|
||||||
|
|
||||||
[Object-Pascal](http://www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
[Object-Pascal](http://www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
||||||
|
|
||||||
[OCaml](http://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek
|
[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek
|
||||||
|
|
||||||
[Pascal](http://houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
[Pascal](http://houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ Bailiff and Bálint Szilakszi,
|
||||||
|
|
||||||
[PHP](https://php.net/curl) Originally written by Sterling Hughes
|
[PHP](https://php.net/curl) Originally written by Sterling Hughes
|
||||||
|
|
||||||
[PostgreSQL](http://gborg.postgresql.org/project/pgcurl/projdisplay.php) Written by Gian Paolo Ciceri
|
[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL
|
||||||
|
|
||||||
[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
|
[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Bailiff and Bálint Szilakszi,
|
||||||
|
|
||||||
[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling
|
[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling
|
||||||
|
|
||||||
[Ring](http://ring-lang.sourceforge.net/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
|
[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
|
||||||
|
|
||||||
RPG, support for ILE/RPG on OS/400 is included in source distribution
|
RPG, support for ILE/RPG on OS/400 is included in source distribution
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ Ruby: [curb](http://curb.rubyforge.org/) written by Ross Bamford, [ruby-curl-mul
|
||||||
|
|
||||||
[Smalltalk](http://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk
|
[Smalltalk](http://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk
|
||||||
|
|
||||||
[SP-Forth](http://spf.cvs.sourceforge.net/viewvc/spf/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
|
[SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
|
||||||
|
|
||||||
[SPL](http://www.clifford.at/spl/) Written by Clifford Wolf
|
[SPL](http://www.clifford.at/spl/) Written by Clifford Wolf
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,13 @@ BUGS
|
||||||
1. Bugs
|
1. Bugs
|
||||||
1.1 There are still bugs
|
1.1 There are still bugs
|
||||||
1.2 Where to report
|
1.2 Where to report
|
||||||
1.3 What to report
|
1.3 Security bugs
|
||||||
1.4 libcurl problems
|
1.4 What to report
|
||||||
1.5 Who will fix the problems
|
1.5 libcurl problems
|
||||||
1.6 How to get a stack trace
|
1.6 Who will fix the problems
|
||||||
1.7 Bugs in libcurl bindings
|
1.7 How to get a stack trace
|
||||||
1.8 Bugs in old versions
|
1.8 Bugs in libcurl bindings
|
||||||
|
1.9 Bugs in old versions
|
||||||
|
|
||||||
2. Bug fixing procedure
|
2. Bug fixing procedure
|
||||||
2.1 What happens on first filing
|
2.1 What happens on first filing
|
||||||
|
@ -30,9 +31,8 @@ BUGS
|
||||||
|
|
||||||
1.1 There are still bugs
|
1.1 There are still bugs
|
||||||
|
|
||||||
Curl and libcurl have grown substantially since the beginning. At the time
|
Curl and libcurl keep being developed. Adding features and changing code
|
||||||
of writing (January 2013), there are about 83,000 lines of source code, and
|
means that bugs will sneak in, no matter how hard we try not to.
|
||||||
by the time you read this it has probably grown even more.
|
|
||||||
|
|
||||||
Of course there are lots of bugs left. And lots of misfeatures.
|
Of course there are lots of bugs left. And lots of misfeatures.
|
||||||
|
|
||||||
|
@ -53,7 +53,24 @@ BUGS
|
||||||
If you feel you need to ask around first, find a suitable mailing list and
|
If you feel you need to ask around first, find a suitable mailing list and
|
||||||
post there. The lists are available on https://curl.haxx.se/mail/
|
post there. The lists are available on https://curl.haxx.se/mail/
|
||||||
|
|
||||||
1.3 What to report
|
1.3 Security bugs
|
||||||
|
|
||||||
|
If you find a bug or problem in curl or libcurl that you think has a
|
||||||
|
security impact, for example a bug that can put users in danger or make them
|
||||||
|
vulnerable if the bug becomes public knowledge, then please report that bug
|
||||||
|
using our security development process.
|
||||||
|
|
||||||
|
Security related bugs or bugs that are suspected to have a security impact,
|
||||||
|
should be reported by email to curl-security@haxx.se so that they first can
|
||||||
|
be dealt with away from the public to minimize the harm and impact it will
|
||||||
|
have on existing users out there who might be using the vulnerable versions.
|
||||||
|
|
||||||
|
The curl project's process for handling security related issues is
|
||||||
|
documented here:
|
||||||
|
|
||||||
|
https://curl.haxx.se/dev/security.html
|
||||||
|
|
||||||
|
1.4 What to report
|
||||||
|
|
||||||
When reporting a bug, you should include all information that will help us
|
When reporting a bug, you should include all information that will help us
|
||||||
understand what's wrong, what you expected to happen and how to repeat the
|
understand what's wrong, what you expected to happen and how to repeat the
|
||||||
|
@ -85,7 +102,7 @@ BUGS
|
||||||
The address and how to subscribe to the mailing lists are detailed in the
|
The address and how to subscribe to the mailing lists are detailed in the
|
||||||
MANUAL file.
|
MANUAL file.
|
||||||
|
|
||||||
1.4 libcurl problems
|
1.5 libcurl problems
|
||||||
|
|
||||||
When you've written your own application with libcurl to perform transfers,
|
When you've written your own application with libcurl to perform transfers,
|
||||||
it is even more important to be specific and detailed when reporting bugs.
|
it is even more important to be specific and detailed when reporting bugs.
|
||||||
|
@ -105,7 +122,7 @@ BUGS
|
||||||
valgrind or similar before you post memory-related or "crashing" problems to
|
valgrind or similar before you post memory-related or "crashing" problems to
|
||||||
us.
|
us.
|
||||||
|
|
||||||
1.5 Who will fix the problems
|
1.6 Who will fix the problems
|
||||||
|
|
||||||
If the problems or bugs you describe are considered to be bugs, we want to
|
If the problems or bugs you describe are considered to be bugs, we want to
|
||||||
have the problems fixed.
|
have the problems fixed.
|
||||||
|
@ -124,7 +141,7 @@ BUGS
|
||||||
We get reports from many people every month and each report can take a
|
We get reports from many people every month and each report can take a
|
||||||
considerable amount of time to really go to the bottom with.
|
considerable amount of time to really go to the bottom with.
|
||||||
|
|
||||||
1.6 How to get a stack trace
|
1.7 How to get a stack trace
|
||||||
|
|
||||||
First, you must make sure that you compile all sources with -g and that you
|
First, you must make sure that you compile all sources with -g and that you
|
||||||
don't 'strip' the final executable. Try to avoid optimizing the code as
|
don't 'strip' the final executable. Try to avoid optimizing the code as
|
||||||
|
@ -144,7 +161,7 @@ BUGS
|
||||||
crashed. Include the stack trace with your detailed bug report. It'll help a
|
crashed. Include the stack trace with your detailed bug report. It'll help a
|
||||||
lot.
|
lot.
|
||||||
|
|
||||||
1.7 Bugs in libcurl bindings
|
1.8 Bugs in libcurl bindings
|
||||||
|
|
||||||
There will of course pop up bugs in libcurl bindings. You should then
|
There will of course pop up bugs in libcurl bindings. You should then
|
||||||
primarily approach the team that works on that particular binding and see
|
primarily approach the team that works on that particular binding and see
|
||||||
|
@ -154,7 +171,7 @@ BUGS
|
||||||
please convert your program over to plain C and follow the steps outlined
|
please convert your program over to plain C and follow the steps outlined
|
||||||
above.
|
above.
|
||||||
|
|
||||||
1.8 Bugs in old versions
|
1.9 Bugs in old versions
|
||||||
|
|
||||||
The curl project typically releases new versions every other month, and we
|
The curl project typically releases new versions every other month, and we
|
||||||
fix several hundred bugs per year. For a huge table of releases, number of
|
fix several hundred bugs per year. For a huge table of releases, number of
|
||||||
|
@ -169,7 +186,7 @@ BUGS
|
||||||
include the version number of the curl you're using when you experience the
|
include the version number of the curl you're using when you experience the
|
||||||
issue. If that version number shows us that you're using an out-of-date
|
issue. If that version number shows us that you're using an out-of-date
|
||||||
curl, you should also try out a modern curl version to see if the problem
|
curl, you should also try out a modern curl version to see if the problem
|
||||||
persists or how/if it has changed in apperance.
|
persists or how/if it has changed in appearance.
|
||||||
|
|
||||||
Even if you cannot immediately upgrade your application/system to run the
|
Even if you cannot immediately upgrade your application/system to run the
|
||||||
latest curl version, you can most often at least run a test version or
|
latest curl version, you can most often at least run a test version or
|
||||||
|
@ -273,8 +290,8 @@ BUGS
|
||||||
The issue and pull request trackers on https://github.com/curl/curl will
|
The issue and pull request trackers on https://github.com/curl/curl will
|
||||||
only hold "active" entries (using a non-precise definition of what active
|
only hold "active" entries (using a non-precise definition of what active
|
||||||
actually is, but they're at least not completely dead). Those that are
|
actually is, but they're at least not completely dead). Those that are
|
||||||
abandonded or in other ways dormant will be closed and sometimes added to
|
abandoned or in other ways dormant will be closed and sometimes added to
|
||||||
TODO and KNOWN_BUGS instead.
|
TODO and KNOWN_BUGS instead.
|
||||||
|
|
||||||
This way, we only have "active" issues open on github. Irrelevant issues and
|
This way, we only have "active" issues open on github. Irrelevant issues and
|
||||||
pull requests will not distract developes or casual visitors.
|
pull requests will not distract developers or casual visitors.
|
||||||
|
|
|
@ -250,7 +250,7 @@ libcurl was built to use. This is an attempt to list known cipher names.
|
||||||
|
|
||||||
## GSKit
|
## GSKit
|
||||||
|
|
||||||
Ciphers are internally defined as numeric codes (http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm),
|
Ciphers are internally defined as numeric codes (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm),
|
||||||
but libcurl maps them to the following case-insensitive names.
|
but libcurl maps them to the following case-insensitive names.
|
||||||
|
|
||||||
### SSL2 cipher suites (insecure: disabled by default)
|
### SSL2 cipher suites (insecure: disabled by default)
|
||||||
|
|
|
@ -28,5 +28,5 @@ reported by opening an issue or contacting one or more of the project
|
||||||
maintainers.
|
maintainers.
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor
|
This Code of Conduct is adapted from the [Contributor
|
||||||
Covenant](http://contributor-covenant.org), version 1.1.0, available at
|
Covenant](https://contributor-covenant.org/), version 1.1.0, available at
|
||||||
[http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
|
[https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/)
|
||||||
|
|
|
@ -157,14 +157,15 @@ lists.
|
||||||
Every pull request submitted will automatically be tested in several different
|
Every pull request submitted will automatically be tested in several different
|
||||||
ways. Every pull request is verfied that:
|
ways. Every pull request is verfied that:
|
||||||
|
|
||||||
- ... the code still builds, warning-free, on Linux and macOS, with both
|
- ... it still builds, warning-free, on Linux and macOS, with both
|
||||||
clang and gcc
|
clang and gcc
|
||||||
- ... the code still builds fine on Windows with several MSVC versions
|
- ... it still builds fine on Windows with several MSVC versions
|
||||||
- ... the code still builds with cmake on Linux, with gcc and clang
|
- ... it still builds with cmake on Linux, with gcc and clang
|
||||||
- ... the code follows rudimentary code style rules
|
- ... it follows rudimentary code style rules
|
||||||
- ... the test suite still runs 100% fine
|
- ... the test suite still runs 100% fine
|
||||||
- ... the release tarball (the "dist") still works
|
- ... the release tarball (the "dist") still works
|
||||||
- ... the code coverage doesn't shrink drastically
|
- ... it builds fine in-tree as well as out-of-tree
|
||||||
|
- ... code coverage doesn't shrink drastically
|
||||||
|
|
||||||
If the pull-request fails one of these tests, it will show up as a red X and
|
If the pull-request fails one of these tests, it will show up as a red X and
|
||||||
you are expected to fix the problem. If you don't understand whan the issue is
|
you are expected to fix the problem. If you don't understand whan the issue is
|
||||||
|
|
|
@ -30,7 +30,6 @@ FAQ
|
||||||
2.2 Does curl work/build with other SSL libraries?
|
2.2 Does curl work/build with other SSL libraries?
|
||||||
2.3 Where can I find a copy of LIBEAY32.DLL?
|
2.3 Where can I find a copy of LIBEAY32.DLL?
|
||||||
2.4 Does curl support SOCKS (RFC 1928) ?
|
2.4 Does curl support SOCKS (RFC 1928) ?
|
||||||
2.5 Install libcurl for both 32bit and 64bit?
|
|
||||||
|
|
||||||
3. Usage Problems
|
3. Usage Problems
|
||||||
3.1 curl: (1) SSL is disabled, https: not supported
|
3.1 curl: (1) SSL is disabled, https: not supported
|
||||||
|
@ -163,7 +162,7 @@ FAQ
|
||||||
We pronounce curl with an initial k sound. It rhymes with words like girl
|
We pronounce curl with an initial k sound. It rhymes with words like girl
|
||||||
and earl. This is a short WAV file to help you:
|
and earl. This is a short WAV file to help you:
|
||||||
|
|
||||||
http://media.merriam-webster.com/soundc11/c/curl0001.wav
|
https://media.merriam-webster.com/soundc11/c/curl0001.wav
|
||||||
|
|
||||||
There are numerous sub-projects and related projects that also use the word
|
There are numerous sub-projects and related projects that also use the word
|
||||||
curl in the project names in various combinations, but you should take
|
curl in the project names in various combinations, but you should take
|
||||||
|
@ -367,8 +366,8 @@ FAQ
|
||||||
Comprehensible explanations of the meaning of such numbers and how to obtain
|
Comprehensible explanations of the meaning of such numbers and how to obtain
|
||||||
them (resp.) are here
|
them (resp.) are here
|
||||||
|
|
||||||
http://www.bis.doc.gov/licensing/exportingbasics.htm
|
https://www.bis.doc.gov/licensing/exportingbasics.htm
|
||||||
http://www.bis.doc.gov/licensing/do_i_needaneccn.html
|
https://www.bis.doc.gov/licensing/do_i_needaneccn.html
|
||||||
|
|
||||||
An incomprehensible description of the two numbers above is here
|
An incomprehensible description of the two numbers above is here
|
||||||
http://www.access.gpo.gov/bis/ear/pdf/ccl5-pt2.pdf
|
http://www.access.gpo.gov/bis/ear/pdf/ccl5-pt2.pdf
|
||||||
|
@ -466,32 +465,6 @@ FAQ
|
||||||
|
|
||||||
Yes, SOCKS 4 and 5 are supported.
|
Yes, SOCKS 4 and 5 are supported.
|
||||||
|
|
||||||
2.5 Install libcurl for both 32bit and 64bit?
|
|
||||||
|
|
||||||
In curl's configure procedure one of the regular include files gets created
|
|
||||||
with platform specific information. The file 'curl/curlbuild.h' in the
|
|
||||||
installed libcurl file tree is therefore somewhat tied to that particular
|
|
||||||
platform.
|
|
||||||
|
|
||||||
To allow applications to get built for either 32bit or 64bit you need to
|
|
||||||
install libcurl headers for both setups and unfortunately curl doesn't do
|
|
||||||
this automatically.
|
|
||||||
|
|
||||||
A commonly used procedure is this:
|
|
||||||
|
|
||||||
$ ./configure [32bit platform]
|
|
||||||
$ mv curl/curlbuild.h curl/curlbuild-32bit.h
|
|
||||||
$ ./configure [64bit platform]
|
|
||||||
$ mv curl/curlbuild.h curl/curlbuild-64bit.h
|
|
||||||
|
|
||||||
Then you make a toplevel curl/curlbuild.h replacement that only does this:
|
|
||||||
|
|
||||||
#ifdef IS_32BIT
|
|
||||||
#include "curlbuild-32bit.h"
|
|
||||||
else
|
|
||||||
#include "curlbuild-64bit.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
3. Usage problems
|
3. Usage problems
|
||||||
|
|
||||||
|
@ -1445,7 +1418,7 @@ FAQ
|
||||||
timed out.
|
timed out.
|
||||||
|
|
||||||
The most flexible way is by writing your own time-out logic and using
|
The most flexible way is by writing your own time-out logic and using
|
||||||
CURLOPT_PROGRESSFUNCTION (perhaps in combination with other callbacks) and
|
CURLOPT_XFERINFOFUNCTION (perhaps in combination with other callbacks) and
|
||||||
use that to figure out exactly when the right condition is met when the
|
use that to figure out exactly when the right condition is met when the
|
||||||
transfer should get stopped.
|
transfer should get stopped.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
# How to get started helping out in the curl project
|
||||||
|
|
||||||
|
We are always in need of more help. If you are new to the project and are
|
||||||
|
looking for ways to contribute and help out, this document aims to give a few
|
||||||
|
good starting points.
|
||||||
|
|
||||||
|
A good idea is to start by subscribing to the [curl-library mailing
|
||||||
|
list](https://cool.haxx.se/mailman/listinfo/curl-library) to keep track of the
|
||||||
|
current discussion topics.
|
||||||
|
|
||||||
|
## Scratch your own itch
|
||||||
|
|
||||||
|
One of the best ways is to start working on any problems or issues you have
|
||||||
|
found yourself or perhaps got annoyed at in the past. It can be a spelling
|
||||||
|
error in an error text or a weirdly phrased section in a man page. Hunt it
|
||||||
|
down and report the bug. Or make your first pull request with a fix for that.
|
||||||
|
|
||||||
|
## Help wanted
|
||||||
|
|
||||||
|
In the issue tracker we occasionally mark bugs with [help
|
||||||
|
wanted](https://github.com/curl/curl/labels/help%20wanted), as a sign that the
|
||||||
|
bug is acknowledged to exist and that there's nobody known to work on this
|
||||||
|
issue for the moment. Those are bugs that are fine to "grab" and provide a
|
||||||
|
pull request for. The complexity level of these will of course vary, so pick
|
||||||
|
one that piques your interest.
|
||||||
|
|
||||||
|
## Work on known bugs
|
||||||
|
|
||||||
|
Some bugs are known and haven't yet received attention and work enough to get
|
||||||
|
fixed. We collect such known existing flaws in the
|
||||||
|
[KNOWN_BUGS](https://curl.haxx.se/docs/knownbugs.html) page. Many of them link
|
||||||
|
to the original bug report with some additional details, but some may also
|
||||||
|
have aged a bit and may require some verification that the bug still exists in
|
||||||
|
the same way and that what was said about it in the past is still valid.
|
||||||
|
|
||||||
|
## Fix autobuild problems
|
||||||
|
|
||||||
|
On the [autobuilds page](https://curl.haxx.se/dev/builds.html) we show a
|
||||||
|
collection of test results from the automatic curl build and tests that are
|
||||||
|
performed by volunteers. Fixing compiler warnings and errors shown there is
|
||||||
|
something we value greatly. Also, if you own or run systems or architectures
|
||||||
|
that aren't already tested in the autobuilds, we also appreciate more
|
||||||
|
volunteers running builds automatically to help us keep curl portable.
|
||||||
|
|
||||||
|
## TODO items
|
||||||
|
|
||||||
|
Ideas for features and functions that we have considered worthwhile to
|
||||||
|
implement and provide are kept in the
|
||||||
|
[TODO](https://curl.haxx.se/docs/todo.html) file. Some of the ideas are
|
||||||
|
rough. Some are well thought out. Some probably aren't really suitable
|
||||||
|
anymore.
|
||||||
|
|
||||||
|
Before you invest a lot of time on a TODO item, do bring it up for discussion
|
||||||
|
on the mailing list. For discussion on applicability but also for ideas and
|
||||||
|
brainstorming on specific ways to do the implementation etc.
|
||||||
|
|
||||||
|
## You decide
|
||||||
|
|
||||||
|
You can also come up with a completely new thing you think we should do. Or
|
||||||
|
not do. Or fix. Or add to the project. You then either bring it to the mailing
|
||||||
|
list first to see if people will shoot down the idea at once, or you bring a
|
||||||
|
first draft of the idea as a pull request and take the discussion there around
|
||||||
|
the specific implementation. Either way is fine.
|
||||||
|
|
||||||
|
## CONTRIBUTE
|
||||||
|
|
||||||
|
We offer [guidelines](https://curl.haxx.se/dev/contribute.html) that are
|
||||||
|
suitable to be familiar with before you decide to contribute to curl. If
|
||||||
|
you're used to open source development, you'll probably not find many
|
||||||
|
surprises in there.
|
|
@ -275,3 +275,21 @@ August:
|
||||||
March: first real release supporting HTTP/2
|
March: first real release supporting HTTP/2
|
||||||
|
|
||||||
September: Web site had 245,000 unique visitors and served 236GB data
|
September: Web site had 245,000 unique visitors and served 236GB data
|
||||||
|
|
||||||
|
2016
|
||||||
|
----
|
||||||
|
|
||||||
|
December: curl 7.52.0 introduced support for HTTPS-proxy!
|
||||||
|
|
||||||
|
2017
|
||||||
|
----
|
||||||
|
|
||||||
|
September: Added Multi-SSL support
|
||||||
|
|
||||||
|
The web site serves 3100 GB/month
|
||||||
|
|
||||||
|
Public curl releases: 169
|
||||||
|
Command line options: 211
|
||||||
|
curl_easy_setopt() options: 249
|
||||||
|
Public functions in libcurl: 74
|
||||||
|
Contributors: 1609
|
||||||
|
|
|
@ -37,17 +37,6 @@ Current flaws in the curl CMake build
|
||||||
- Does't detect the correct strerror_r flavor when cross-compiling (issue #1123)
|
- Does't detect the correct strerror_r flavor when cross-compiling (issue #1123)
|
||||||
|
|
||||||
|
|
||||||
Important notice
|
|
||||||
==================
|
|
||||||
If you got your curl sources from a distribution tarball, make sure to
|
|
||||||
delete the generic 'include/curl/curlbuild.h' file that comes with it:
|
|
||||||
rm -f curl/include/curl/curlbuild.h
|
|
||||||
|
|
||||||
The purpose of this file is to provide reasonable definitions for systems
|
|
||||||
where autoconfiguration is not available. CMake will create its own
|
|
||||||
version of this file in its build directory. If the "generic" version
|
|
||||||
is not deleted, weird build errors may occur on some systems.
|
|
||||||
|
|
||||||
Command Line CMake
|
Command Line CMake
|
||||||
==================
|
==================
|
||||||
A CMake build of curl is similar to the autotools build of curl. It
|
A CMake build of curl is similar to the autotools build of curl. It
|
||||||
|
|
|
@ -222,6 +222,9 @@ subdirectory run following command from mentioned subdirectory:
|
||||||
In order to build sample program simplessl.c an SSL enabled libcurl is
|
In order to build sample program simplessl.c an SSL enabled libcurl is
|
||||||
required, as well as the OpenSSL libeay32.lib and ssleay32.lib libraries.
|
required, as well as the OpenSSL libeay32.lib and ssleay32.lib libraries.
|
||||||
|
|
||||||
|
In order to build sample program `sslbackend.c`, an SSL enabled libcurl
|
||||||
|
is required.
|
||||||
|
|
||||||
## Disabling Specific Protocols in Windows builds
|
## Disabling Specific Protocols in Windows builds
|
||||||
|
|
||||||
The configure utility, unfortunately, is not available for the Windows
|
The configure utility, unfortunately, is not available for the Windows
|
||||||
|
@ -278,8 +281,8 @@ before including any libcurl header. Your program does not need the
|
||||||
`USE_LWIPSOCK` preprocessor definition which is for libcurl internals only.
|
`USE_LWIPSOCK` preprocessor definition which is for libcurl internals only.
|
||||||
|
|
||||||
Compilation has been verified with [lwIP
|
Compilation has been verified with [lwIP
|
||||||
1.4.0](http://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip) and
|
1.4.0](https://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip) and
|
||||||
[contrib-1.4.0](http://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip).
|
[contrib-1.4.0](https://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip).
|
||||||
|
|
||||||
This BSD-style lwIP TCP/IP stack support must be considered experimental given
|
This BSD-style lwIP TCP/IP stack support must be considered experimental given
|
||||||
that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl
|
that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl
|
||||||
|
|
|
@ -82,7 +82,7 @@ Dependencies
|
||||||
- zlib 1.1.4
|
- zlib 1.1.4
|
||||||
- libssh2 0.16
|
- libssh2 0.16
|
||||||
- c-ares 1.6.0
|
- c-ares 1.6.0
|
||||||
- libidn 0.4.1
|
- libidn2 2.0.0
|
||||||
- cyassl 2.0.0
|
- cyassl 2.0.0
|
||||||
- openldap 2.0
|
- openldap 2.0
|
||||||
- MIT Kerberos 1.2.4
|
- MIT Kerberos 1.2.4
|
||||||
|
@ -612,20 +612,6 @@ curlx
|
||||||
strtoll() (or equivalent) function exist on your platform. If `curl_off_t`
|
strtoll() (or equivalent) function exist on your platform. If `curl_off_t`
|
||||||
is only a 32 bit number on your platform, this macro uses strtol().
|
is only a 32 bit number on your platform, this macro uses strtol().
|
||||||
|
|
||||||
`curlx_tvnow()`
|
|
||||||
---------------
|
|
||||||
returns a struct timeval for the current time.
|
|
||||||
|
|
||||||
`curlx_tvdiff()`
|
|
||||||
--------------
|
|
||||||
returns the difference between two timeval structs, in number of
|
|
||||||
milliseconds.
|
|
||||||
|
|
||||||
`curlx_tvdiff_secs()`
|
|
||||||
---------------------
|
|
||||||
returns the same as `curlx_tvdiff` but with full usec resolution (as a
|
|
||||||
double)
|
|
||||||
|
|
||||||
Future
|
Future
|
||||||
------
|
------
|
||||||
|
|
||||||
|
@ -656,29 +642,29 @@ Content Encoding
|
||||||
## About content encodings
|
## About content encodings
|
||||||
|
|
||||||
[HTTP/1.1][4] specifies that a client may request that a server encode its
|
[HTTP/1.1][4] specifies that a client may request that a server encode its
|
||||||
response. This is usually used to compress a response using one of a set of
|
response. This is usually used to compress a response using one (or more)
|
||||||
commonly available compression techniques. These schemes are 'deflate' (the
|
encodings from a set of commonly available compression techniques. These
|
||||||
zlib algorithm), 'gzip' and 'compress'. A client requests that the server
|
schemes include 'deflate' (the zlib algorithm), 'gzip' 'br' (brotli) and
|
||||||
perform an encoding by including an Accept-Encoding header in the request
|
'compress'. A client requests that the server perform an encoding by including
|
||||||
document. The value of the header should be one of the recognized tokens
|
an Accept-Encoding header in the request document. The value of the header
|
||||||
'deflate', ... (there's a way to register new schemes/tokens, see sec 3.5 of
|
should be one of the recognized tokens 'deflate', ... (there's a way to
|
||||||
the spec). A server MAY honor the client's encoding request. When a response
|
register new schemes/tokens, see sec 3.5 of the spec). A server MAY honor
|
||||||
is encoded, the server includes a Content-Encoding header in the
|
the client's encoding request. When a response is encoded, the server
|
||||||
response. The value of the Content-Encoding header indicates which scheme was
|
includes a Content-Encoding header in the response. The value of the
|
||||||
used to encode the data.
|
Content-Encoding header indicates which encodings were used to encode the
|
||||||
|
data, in the order in which they were applied.
|
||||||
|
|
||||||
A client may tell a server that it can understand several different encoding
|
|
||||||
schemes. In this case the server may choose any one of those and use it to
|
|
||||||
encode the response (indicating which one using the Content-Encoding header).
|
|
||||||
It's also possible for a client to attach priorities to different schemes so
|
It's also possible for a client to attach priorities to different schemes so
|
||||||
that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
|
that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
|
||||||
information on the Accept-Encoding header.
|
information on the Accept-Encoding header. See sec [3.1.2.2 of RFC 7231][15]
|
||||||
|
for more information on the Content-Encoding header.
|
||||||
|
|
||||||
## Supported content encodings
|
## Supported content encodings
|
||||||
|
|
||||||
The 'deflate' and 'gzip' content encoding are supported by libcurl. Both
|
The 'deflate', 'gzip' and 'br' content encodings are supported by libcurl.
|
||||||
regular and chunked transfers work fine. The zlib library is required for
|
Both regular and chunked transfers work fine. The zlib library is required
|
||||||
this feature.
|
for the 'deflate' and 'gzip' encodings, while the brotli decoding library is
|
||||||
|
for the 'br' encoding.
|
||||||
|
|
||||||
## The libcurl interface
|
## The libcurl interface
|
||||||
|
|
||||||
|
@ -688,14 +674,15 @@ Content Encoding
|
||||||
|
|
||||||
where string is the intended value of the Accept-Encoding header.
|
where string is the intended value of the Accept-Encoding header.
|
||||||
|
|
||||||
Currently, libcurl only understands how to process responses that use the
|
Currently, libcurl does support multiple encodings but only
|
||||||
"deflate" or "gzip" Content-Encoding, so the only values for
|
understands how to process responses that use the "deflate", "gzip" and/or
|
||||||
[`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides "identity," which does
|
"br" content encodings, so the only values for [`CURLOPT_ACCEPT_ENCODING`][5]
|
||||||
nothing) are "deflate" and "gzip" If a response is encoded using the
|
that will work (besides "identity," which does nothing) are "deflate",
|
||||||
"compress" or methods, libcurl will return an error indicating that the
|
"gzip" and "br". If a response is encoded using the "compress" or methods,
|
||||||
response could not be decoded. If <string> is NULL no Accept-Encoding header
|
libcurl will return an error indicating that the response could
|
||||||
is generated. If <string> is a zero-length string, then an Accept-Encoding
|
not be decoded. If <string> is NULL no Accept-Encoding header is generated.
|
||||||
header containing all supported encodings will be generated.
|
If <string> is a zero-length string, then an Accept-Encoding header
|
||||||
|
containing all supported encodings will be generated.
|
||||||
|
|
||||||
The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
|
The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
|
||||||
content to be automatically decoded. If it is not set and the server still
|
content to be automatically decoded. If it is not set and the server still
|
||||||
|
@ -1079,7 +1066,7 @@ for older and later versions as things don't change drastically that often.
|
||||||
|
|
||||||
[1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
[1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
||||||
[2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html
|
[2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html
|
||||||
[3]: http://c-ares.haxx.se/
|
[3]: https://c-ares.haxx.se/
|
||||||
[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
|
[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
|
||||||
[5]: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
|
[5]: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
|
||||||
[6]: https://curl.haxx.se/docs/manpage.html#--compressed
|
[6]: https://curl.haxx.se/docs/manpage.html#--compressed
|
||||||
|
@ -1091,3 +1078,4 @@ for older and later versions as things don't change drastically that often.
|
||||||
[12]: https://curl.haxx.se/libcurl/c/curl_multi_fdset.html
|
[12]: https://curl.haxx.se/libcurl/c/curl_multi_fdset.html
|
||||||
[13]: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
|
[13]: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
|
||||||
[14]: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html
|
[14]: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html
|
||||||
|
[15]: https://tools.ietf.org/html/rfc7231#section-3.1.2.2
|
||||||
|
|
|
@ -18,7 +18,6 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
1.4 multipart formposts file name encoding
|
1.4 multipart formposts file name encoding
|
||||||
1.5 Expect-100 meets 417
|
1.5 Expect-100 meets 417
|
||||||
1.6 Unnecessary close when 401 received waiting for 100
|
1.6 Unnecessary close when 401 received waiting for 100
|
||||||
1.8 DNS timing is wrong for HTTP redirects
|
|
||||||
1.9 HTTP/2 frames while in the connection pool kill reuse
|
1.9 HTTP/2 frames while in the connection pool kill reuse
|
||||||
1.10 Strips trailing dot from host name
|
1.10 Strips trailing dot from host name
|
||||||
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
|
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
|
||||||
|
@ -83,6 +82,7 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
11.1 Curl leaks .onion hostnames in DNS
|
11.1 Curl leaks .onion hostnames in DNS
|
||||||
11.2 error buffer not set if connection to multiple addresses fails
|
11.2 error buffer not set if connection to multiple addresses fails
|
||||||
11.3 c-ares deviates from stock resolver on http://1346569778
|
11.3 c-ares deviates from stock resolver on http://1346569778
|
||||||
|
11.4 HTTP test server 'connection-monitor' problems
|
||||||
|
|
||||||
12. LDAP and OpenLDAP
|
12. LDAP and OpenLDAP
|
||||||
12.1 OpenLDAP hangs after returning results
|
12.1 OpenLDAP hangs after returning results
|
||||||
|
@ -140,12 +140,6 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
waiting for the the 100-continue response.
|
waiting for the the 100-continue response.
|
||||||
https://curl.haxx.se/mail/lib-2008-08/0462.html
|
https://curl.haxx.se/mail/lib-2008-08/0462.html
|
||||||
|
|
||||||
1.8 DNS timing is wrong for HTTP redirects
|
|
||||||
|
|
||||||
When extracting timing information after HTTP redirects, only the last
|
|
||||||
transfer's results are returned and not the totals:
|
|
||||||
https://github.com/curl/curl/issues/522
|
|
||||||
|
|
||||||
1.9 HTTP/2 frames while in the connection pool kill reuse
|
1.9 HTTP/2 frames while in the connection pool kill reuse
|
||||||
|
|
||||||
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
|
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
|
||||||
|
@ -322,7 +316,6 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
The cmake build setup lacks several features that the autoconf build
|
The cmake build setup lacks several features that the autoconf build
|
||||||
offers. This includes:
|
offers. This includes:
|
||||||
|
|
||||||
- symbol hiding when the shared library is built
|
|
||||||
- use of correct soname for the shared library build
|
- use of correct soname for the shared library build
|
||||||
- support for several TLS backends are missing
|
- support for several TLS backends are missing
|
||||||
- the unit tests cause link failures in regular non-static builds
|
- the unit tests cause link failures in regular non-static builds
|
||||||
|
@ -380,7 +373,7 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
|
|
||||||
libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
||||||
library header files exporting symbols/macros that should be kept private to
|
library header files exporting symbols/macros that should be kept private to
|
||||||
the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
|
the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/
|
||||||
|
|
||||||
6.3 NTLM in system context uses wrong name
|
6.3 NTLM in system context uses wrong name
|
||||||
|
|
||||||
|
@ -559,6 +552,13 @@ problems may have been fixed or changed somewhat since this was written!
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/893
|
See https://github.com/curl/curl/issues/893
|
||||||
|
|
||||||
|
11.4 HTTP test server 'connection-monitor' problems
|
||||||
|
|
||||||
|
The 'connection-monitor' feature of the sws HTTP test server doesn't work
|
||||||
|
properly if some tests are run in unexpected order. Like 1509 and then 1525.
|
||||||
|
|
||||||
|
See https://github.com/curl/curl/issues/868
|
||||||
|
|
||||||
|
|
||||||
12. LDAP and OpenLDAP
|
12. LDAP and OpenLDAP
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ MAIL ETIQUETTE
|
||||||
1.6 Handling trolls and spam
|
1.6 Handling trolls and spam
|
||||||
1.7 How to unsubscribe
|
1.7 How to unsubscribe
|
||||||
1.8 I posted, now what?
|
1.8 I posted, now what?
|
||||||
|
1.9 Your emails are public
|
||||||
|
|
||||||
2. Sending mail
|
2. Sending mail
|
||||||
2.1 Reply or New Mail
|
2.1 Reply or New Mail
|
||||||
|
@ -162,6 +163,27 @@ MAIL ETIQUETTE
|
||||||
chances are that people will ignore you at will and your chances to get
|
chances are that people will ignore you at will and your chances to get
|
||||||
responses in the future will greatly diminish.
|
responses in the future will greatly diminish.
|
||||||
|
|
||||||
|
1.9 Your emails are public
|
||||||
|
|
||||||
|
Your email, its contents and all its headers and the details in those
|
||||||
|
headers will be received by every subscriber of the mailing list that you
|
||||||
|
send your email to.
|
||||||
|
|
||||||
|
Your email as sent to a curl mailing list will end up in mail archives, on
|
||||||
|
the curl web site and elsewhere, for others to see and read. Today and in
|
||||||
|
the future. In addition to the archives, the mail is sent out to thousands
|
||||||
|
of individuals. There is no way to undo a sent email.
|
||||||
|
|
||||||
|
When sending emails to a curl mailing list, do not include sensitive
|
||||||
|
information such as user names and passwords; use fake ones, temporary ones
|
||||||
|
or just remove them completely from the mail. Note that this includes base64
|
||||||
|
encoded HTTP Basic auth headers.
|
||||||
|
|
||||||
|
This public nature of the curl mailing lists makes automaticly inserted mail
|
||||||
|
footers about mails being "private" or "only meant for the receipient" or
|
||||||
|
similar even more silly than usual. Because they are absolutely not private
|
||||||
|
when sent to a public mailing list.
|
||||||
|
|
||||||
|
|
||||||
2. Sending mail
|
2. Sending mail
|
||||||
|
|
||||||
|
@ -261,4 +283,3 @@ MAIL ETIQUETTE
|
||||||
Getting the solution posted also helps other users that experience the same
|
Getting the solution posted also helps other users that experience the same
|
||||||
problem(s). They get to see (possibly in the web archives) that the
|
problem(s). They get to see (possibly in the web archives) that the
|
||||||
suggested fixes actually has helped at least one person.
|
suggested fixes actually has helped at least one person.
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,8 @@ HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||||
|
|
||||||
# Build targets in this file (.) before cmdline-opts to ensure that
|
# Build targets in this file (.) before cmdline-opts to ensure that
|
||||||
# the curl.1 rule below runs first
|
# the curl.1 rule below runs first
|
||||||
SUBDIRS = libcurl . cmdline-opts
|
SUBDIRS = . cmdline-opts
|
||||||
DIST_SUBDIRS = $(SUBDIRS) examples
|
DIST_SUBDIRS = $(SUBDIRS) examples libcurl
|
||||||
|
|
||||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE.md FAQ FEATURES INTERNALS.md SSLCERTS.md
|
||||||
README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY.md RELEASE-PROCEDURE \
|
README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY.md RELEASE-PROCEDURE \
|
||||||
SSL-PROBLEMS.md HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md \
|
SSL-PROBLEMS.md HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md \
|
||||||
CHECKSRC.md CMakeLists.txt README.md CIPHERS.md INSTALL.cmake README.cmake \
|
CHECKSRC.md CMakeLists.txt README.md CIPHERS.md INSTALL.cmake README.cmake \
|
||||||
$(noinst_man_MANS)
|
$(noinst_man_MANS) HELP-US.md
|
||||||
|
|
||||||
MAN2HTML= roffit $< >$@
|
MAN2HTML= roffit $< >$@
|
||||||
|
|
||||||
|
@ -81,3 +81,6 @@ pdf: $(PDFPAGES)
|
||||||
rm $$foo.ps; \
|
rm $$foo.ps; \
|
||||||
echo "converted $< to $@")
|
echo "converted $< to $@")
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -133,8 +133,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||||
$(top_builddir)/include/curl/curlbuild.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
AM_V_P = $(am__v_P_@AM_V@)
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
@ -266,8 +265,11 @@ CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||||
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
||||||
|
CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
|
||||||
|
CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
|
||||||
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
||||||
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
||||||
|
CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
|
||||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
@ -293,7 +295,9 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||||
|
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
DEPDIR = @DEPDIR@
|
DEPDIR = @DEPDIR@
|
||||||
DLLTOOL = @DLLTOOL@
|
DLLTOOL = @DLLTOOL@
|
||||||
|
@ -310,6 +314,7 @@ FGREP = @FGREP@
|
||||||
GCOV = @GCOV@
|
GCOV = @GCOV@
|
||||||
GENHTML = @GENHTML@
|
GENHTML = @GENHTML@
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
|
HAVE_BROTLI = @HAVE_BROTLI@
|
||||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||||
HAVE_LIBZ = @HAVE_LIBZ@
|
HAVE_LIBZ = @HAVE_LIBZ@
|
||||||
|
@ -367,6 +372,7 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||||
SED = @SED@
|
SED = @SED@
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
|
SSL_BACKENDS = @SSL_BACKENDS@
|
||||||
SSL_ENABLED = @SSL_ENABLED@
|
SSL_ENABLED = @SSL_ENABLED@
|
||||||
SSL_LIBS = @SSL_LIBS@
|
SSL_LIBS = @SSL_LIBS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
|
@ -379,6 +385,7 @@ USE_DARWINSSL = @USE_DARWINSSL@
|
||||||
USE_GNUTLS = @USE_GNUTLS@
|
USE_GNUTLS = @USE_GNUTLS@
|
||||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||||
USE_LIBRTMP = @USE_LIBRTMP@
|
USE_LIBRTMP = @USE_LIBRTMP@
|
||||||
|
USE_LIBSSH = @USE_LIBSSH@
|
||||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||||
USE_MBEDTLS = @USE_MBEDTLS@
|
USE_MBEDTLS = @USE_MBEDTLS@
|
||||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||||
|
@ -461,8 +468,8 @@ HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||||
|
|
||||||
# Build targets in this file (.) before cmdline-opts to ensure that
|
# Build targets in this file (.) before cmdline-opts to ensure that
|
||||||
# the curl.1 rule below runs first
|
# the curl.1 rule below runs first
|
||||||
SUBDIRS = libcurl . cmdline-opts
|
SUBDIRS = . cmdline-opts
|
||||||
DIST_SUBDIRS = $(SUBDIRS) examples
|
DIST_SUBDIRS = $(SUBDIRS) examples libcurl
|
||||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
||||||
EXTRA_DIST = MANUAL BUGS CONTRIBUTE.md FAQ FEATURES INTERNALS.md SSLCERTS.md \
|
EXTRA_DIST = MANUAL BUGS CONTRIBUTE.md FAQ FEATURES INTERNALS.md SSLCERTS.md \
|
||||||
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS KNOWN_BUGS \
|
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS KNOWN_BUGS \
|
||||||
|
@ -470,7 +477,7 @@ EXTRA_DIST = MANUAL BUGS CONTRIBUTE.md FAQ FEATURES INTERNALS.md SSLCERTS.md
|
||||||
README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY.md RELEASE-PROCEDURE \
|
README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY.md RELEASE-PROCEDURE \
|
||||||
SSL-PROBLEMS.md HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md \
|
SSL-PROBLEMS.md HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md \
|
||||||
CHECKSRC.md CMakeLists.txt README.md CIPHERS.md INSTALL.cmake README.cmake \
|
CHECKSRC.md CMakeLists.txt README.md CIPHERS.md INSTALL.cmake README.cmake \
|
||||||
$(noinst_man_MANS)
|
$(noinst_man_MANS) HELP-US.md
|
||||||
|
|
||||||
MAN2HTML = roffit $< >$@
|
MAN2HTML = roffit $< >$@
|
||||||
SUFFIXES = .1 .html .pdf
|
SUFFIXES = .1 .html .pdf
|
||||||
|
@ -754,8 +761,6 @@ clean: clean-recursive
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-recursive
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-generic distclean-tags
|
distclean-am: clean-am distclean-generic distclean-tags
|
||||||
|
|
||||||
dvi: dvi-recursive
|
dvi: dvi-recursive
|
||||||
|
@ -862,6 +867,9 @@ pdf: $(PDFPAGES)
|
||||||
rm $$foo.ps; \
|
rm $$foo.ps; \
|
||||||
echo "converted $< to $@")
|
echo "converted $< to $@")
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
rm -f $(CLEANFILES)
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|
|
@ -83,10 +83,13 @@ Coming dates
|
||||||
Based on the description above, here are some planned release dates (at the
|
Based on the description above, here are some planned release dates (at the
|
||||||
time of this writing):
|
time of this writing):
|
||||||
|
|
||||||
- June 14, 2017 (version 7.54.1)
|
|
||||||
- August 9, 2017
|
|
||||||
- October 4, 2017
|
|
||||||
- November 29, 2017
|
- November 29, 2017
|
||||||
- January 24, 2018
|
- January 24, 2018
|
||||||
- March 21, 2018
|
- March 21, 2018
|
||||||
- May 16, 2018
|
- May 16, 2018
|
||||||
|
- July 11, 2018
|
||||||
|
- September 5, 2018
|
||||||
|
- October 31, 2018
|
||||||
|
- December 26, 2018
|
||||||
|
- February 20, 2019
|
||||||
|
- April 17, 2019
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
This document lists documents and standards used by curl.
|
This document lists documents and standards used by curl.
|
||||||
|
|
||||||
RFC 959 - The FTP protocol
|
RFC 959 - FTP Protocol
|
||||||
|
|
||||||
RFC 1635 - How to Use Anonymous FTP
|
RFC 1635 - How to Use Anonymous FTP
|
||||||
|
|
||||||
RFC 1738 - Uniform Resource Locators
|
RFC 1738 - Uniform Resource Locators
|
||||||
|
|
||||||
RFC 1777 - defines the LDAP protocol
|
RFC 1777 - Lightweight Directory Access Protocol (LDAP)
|
||||||
|
|
||||||
RFC 1808 - Relative Uniform Resource Locators
|
RFC 1808 - Relative Uniform Resource Locators
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ This document lists documents and standards used by curl.
|
||||||
|
|
||||||
RFC 1951 - DEFLATE Compressed Data Format Specification
|
RFC 1951 - DEFLATE Compressed Data Format Specification
|
||||||
|
|
||||||
RFC 1952 - gzip compression format
|
RFC 1952 - GZIP File Format Specification
|
||||||
|
|
||||||
RFC 1959 - LDAP URL syntax
|
RFC 1959 - LDAP URL Syntax
|
||||||
|
|
||||||
RFC 2045-2049 - Everything you need to know about MIME! (needed for form
|
RFC 2045-2049 - Everything you need to know about MIME! (needed for form
|
||||||
based upload)
|
based upload)
|
||||||
|
@ -40,11 +40,11 @@ This document lists documents and standards used by curl.
|
||||||
|
|
||||||
RFC 2183 - The Content-Disposition Header Field
|
RFC 2183 - The Content-Disposition Header Field
|
||||||
|
|
||||||
RFC 2195 - CRAM-MD5 authentication
|
RFC 2195 - CRAM-MD5 Authentication
|
||||||
|
|
||||||
RFC 2229 - A Dictionary Server Protocol
|
RFC 2229 - A Dictionary Server Protocol
|
||||||
|
|
||||||
RFC 2255 - Newer LDAP URL syntax document.
|
RFC 2255 - Newer LDAP URL Format
|
||||||
|
|
||||||
RFC 2231 - MIME Parameter Value and Encoded Word Extensions:
|
RFC 2231 - MIME Parameter Value and Encoded Word Extensions:
|
||||||
Character Sets, Languages, and Continuations
|
Character Sets, Languages, and Continuations
|
||||||
|
@ -70,14 +70,16 @@ This document lists documents and standards used by curl.
|
||||||
|
|
||||||
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
|
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
|
||||||
|
|
||||||
RFC 2821 - SMTP protocol
|
RFC 2821 - Simple Mail Transfer Protocol (SMTP)
|
||||||
|
|
||||||
RFC 2964 - Use of HTTP State Management
|
RFC 2964 - Use of HTTP State Management
|
||||||
|
|
||||||
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
|
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
|
||||||
|
|
||||||
RFC 3207 - SMTP over TLS
|
RFC 3207 - SMTP Over TLS
|
||||||
|
|
||||||
RFC 4616 - PLAIN authentication
|
RFC 4616 - PLAIN Authentication
|
||||||
|
|
||||||
RFC 4954 - SMTP Authentication
|
RFC 4954 - SMTP Authentication
|
||||||
|
|
||||||
|
RFC 7932 - Brotli Compressed Data Format
|
||||||
|
|
|
@ -1,20 +1,14 @@
|
||||||
curl the next few years - perhaps
|
curl the next few years - perhaps
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
|
Roadmap of things Daniel Stenberg wants to work on next. It is intended to
|
||||||
intended to serve as a guideline for others for information, feedback and
|
serve as a guideline for others for information, feedback and possible
|
||||||
possible participation.
|
participation.
|
||||||
|
|
||||||
QUIC
|
QUIC
|
||||||
----
|
----
|
||||||
|
|
||||||
The standardization process of QUIC has been taken to the IETF and can be
|
See the [QUIC wiki page](https://github.com/curl/curl/wiki/QUIC).
|
||||||
followed on the [IETF QUIC Mailing
|
|
||||||
list](https://www.ietf.org/mailman/listinfo/quic). I'd like us to get on the
|
|
||||||
bandwagon. Ideally, this would be done with a separate library/project to
|
|
||||||
handle the binary/framing layer in a similar fashion to how HTTP/2 is
|
|
||||||
implemented. This, to allow other projects to benefit from the work and to
|
|
||||||
thus broaden the interest and chance of others to participate.
|
|
||||||
|
|
||||||
HTTP cookies
|
HTTP cookies
|
||||||
------------
|
------------
|
||||||
|
@ -34,85 +28,15 @@ SRV records
|
||||||
|
|
||||||
How to find services for specific domains/hosts.
|
How to find services for specific domains/hosts.
|
||||||
|
|
||||||
curl_formadd()
|
|
||||||
--------------
|
|
||||||
|
|
||||||
make sure there's an easy handle passed in to `curl_formadd()`,
|
|
||||||
`curl_formget()` and `curl_formfree()` by adding replacement functions and
|
|
||||||
deprecating the old ones to allow custom mallocs and more.
|
|
||||||
|
|
||||||
Or perhaps even better: revamp the formpost API completely while we're at it
|
|
||||||
and making something that is easier to use and understand:
|
|
||||||
|
|
||||||
https://github.com/curl/curl/wiki/formpost-API-redesigned
|
|
||||||
|
|
||||||
Third-party SASL
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Add support for third-party SASL libraries such as Cyrus SASL.
|
|
||||||
|
|
||||||
SASL authentication in LDAP
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
Simplify the SMTP email
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
Simplify the SMTP email interface so that programmers don't have to
|
|
||||||
construct the body of an email that contains all the headers, alternative
|
|
||||||
content, images and attachments - maintain raw interface so that
|
|
||||||
programmers that want to do this can
|
|
||||||
|
|
||||||
email capabilities
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Allow the email protocols to return the capabilities before
|
|
||||||
authenticating. This will allow an application to decide on the best
|
|
||||||
authentication mechanism
|
|
||||||
|
|
||||||
Win32 pthreads
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Allow Windows threading model to be replaced by Win32 pthreads port
|
|
||||||
|
|
||||||
dynamic buffer size
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
Implement a dynamic buffer size to allow SFTP to use much larger buffers and
|
|
||||||
possibly allow the size to be customizable by applications. Use less memory
|
|
||||||
when handles are not in use?
|
|
||||||
|
|
||||||
New stuff - curl
|
|
||||||
----------------
|
|
||||||
|
|
||||||
1. Embed a language interpreter (lua?). For that middle ground where curl
|
|
||||||
isn’t enough and a libcurl binding feels “too much”. Build-time conditional
|
|
||||||
of course.
|
|
||||||
|
|
||||||
2. Simplify the SMTP command line so that the headers and multi-part content
|
|
||||||
don't have to be constructed before calling curl
|
|
||||||
|
|
||||||
Improve
|
Improve
|
||||||
-------
|
-------
|
||||||
|
|
||||||
1. build for windows (considered hard by many users)
|
1. curl -h output (considered overwhelming to users).
|
||||||
|
|
||||||
2. curl -h output (considered overwhelming to users)
|
2. We have > 200 command line options, is there a way to redo things to
|
||||||
|
|
||||||
3. we have > 200 command line options, is there a way to redo things to
|
|
||||||
simplify or improve the situation as we are likely to keep adding
|
simplify or improve the situation as we are likely to keep adding
|
||||||
features/options in the future too
|
features/options in the future too.
|
||||||
|
|
||||||
4. authentication framework (consider merging HTTP and SASL authentication to
|
3. Perform some of the clean up from the TODO document, removing old
|
||||||
give one API for protocols to call)
|
|
||||||
|
|
||||||
5. Perform some of the clean up from the TODO document, removing old
|
|
||||||
definitions and such like that are currently earmarked to be removed years
|
definitions and such like that are currently earmarked to be removed years
|
||||||
ago
|
ago.
|
||||||
|
|
||||||
Remove
|
|
||||||
------
|
|
||||||
|
|
||||||
1. makefile.vc files as there is no point in maintaining two sets of Windows
|
|
||||||
makefiles. Note: These are currently being used by the Windows autobuilds
|
|
||||||
|
|
121
curl/docs/THANKS
121
curl/docs/THANKS
|
@ -40,8 +40,11 @@ Alex Bligh
|
||||||
Alex Chan
|
Alex Chan
|
||||||
Alex Fishman
|
Alex Fishman
|
||||||
Alex Gruz
|
Alex Gruz
|
||||||
|
Alex Malinovich
|
||||||
Alex McLellan
|
Alex McLellan
|
||||||
Alex Neblett
|
Alex Neblett
|
||||||
|
Alex Nichols
|
||||||
|
Alex Potapenko
|
||||||
Alex Rousskov
|
Alex Rousskov
|
||||||
Alex Suykov
|
Alex Suykov
|
||||||
Alex Vinnik
|
Alex Vinnik
|
||||||
|
@ -59,11 +62,13 @@ Alexander Sinditskiy
|
||||||
Alexander Traud
|
Alexander Traud
|
||||||
Alexander Zhuravlev
|
Alexander Zhuravlev
|
||||||
Alexey Borzov
|
Alexey Borzov
|
||||||
|
Alexey Melnichuk
|
||||||
Alexey Pesternikov
|
Alexey Pesternikov
|
||||||
Alexey Simak
|
Alexey Simak
|
||||||
Alexey Zakhlestin
|
Alexey Zakhlestin
|
||||||
Alexis Carvalho
|
Alexis Carvalho
|
||||||
Alexis La Goutte
|
Alexis La Goutte
|
||||||
|
Alfonso Martone
|
||||||
Alfred Gebert
|
Alfred Gebert
|
||||||
Allen Pulsifer
|
Allen Pulsifer
|
||||||
Alona Rossen
|
Alona Rossen
|
||||||
|
@ -86,11 +91,13 @@ Andreas Ntaflos
|
||||||
Andreas Olsson
|
Andreas Olsson
|
||||||
Andreas Rieke
|
Andreas Rieke
|
||||||
Andreas Roth
|
Andreas Roth
|
||||||
|
Andreas Schneider
|
||||||
Andreas Schuldei
|
Andreas Schuldei
|
||||||
Andreas Streichardt
|
Andreas Streichardt
|
||||||
Andreas Wurf
|
Andreas Wurf
|
||||||
Andrei Benea
|
Andrei Benea
|
||||||
Andrei Cipu
|
Andrei Cipu
|
||||||
|
Andrei Karas
|
||||||
Andrei Kurushin
|
Andrei Kurushin
|
||||||
Andrei Sedoi
|
Andrei Sedoi
|
||||||
Andrej E Baranov
|
Andrej E Baranov
|
||||||
|
@ -101,6 +108,7 @@ Andrew Francis
|
||||||
Andrew Fuller
|
Andrew Fuller
|
||||||
Andrew Krieger
|
Andrew Krieger
|
||||||
Andrew Kurushin
|
Andrew Kurushin
|
||||||
|
Andrew Lambert
|
||||||
Andrew Moise
|
Andrew Moise
|
||||||
Andrew Robbins
|
Andrew Robbins
|
||||||
Andrew Wansink
|
Andrew Wansink
|
||||||
|
@ -129,6 +137,7 @@ Arkadiusz Miskiewicz
|
||||||
Armel Asselin
|
Armel Asselin
|
||||||
Arnaud Compan
|
Arnaud Compan
|
||||||
Arnaud Ebalard
|
Arnaud Ebalard
|
||||||
|
Artak Galoyan
|
||||||
Arthur Murray
|
Arthur Murray
|
||||||
Arve Knudsen
|
Arve Knudsen
|
||||||
Arvid Norberg
|
Arvid Norberg
|
||||||
|
@ -145,6 +154,7 @@ Balint Szilakszi
|
||||||
Barry Abrahamson
|
Barry Abrahamson
|
||||||
Bart Whiteley
|
Bart Whiteley
|
||||||
Bas Mevissen
|
Bas Mevissen
|
||||||
|
Basuke Suzuki
|
||||||
Ben Boeckel
|
Ben Boeckel
|
||||||
Ben Darnell
|
Ben Darnell
|
||||||
Ben Greear
|
Ben Greear
|
||||||
|
@ -157,6 +167,7 @@ Benjamin Gerard
|
||||||
Benjamin Gilbert
|
Benjamin Gilbert
|
||||||
Benjamin Johnson
|
Benjamin Johnson
|
||||||
Benjamin Kircher
|
Benjamin Kircher
|
||||||
|
Benjamin Sergeant
|
||||||
Benoit Neil
|
Benoit Neil
|
||||||
Benoit Sigoure
|
Benoit Sigoure
|
||||||
Bernard Leak
|
Bernard Leak
|
||||||
|
@ -171,6 +182,7 @@ Bill Egert
|
||||||
Bill Hoffman
|
Bill Hoffman
|
||||||
Bill Middlecamp
|
Bill Middlecamp
|
||||||
Bill Nagel
|
Bill Nagel
|
||||||
|
Bill Pyne
|
||||||
Bjoern Sikora
|
Bjoern Sikora
|
||||||
Bjorn Augustsson
|
Bjorn Augustsson
|
||||||
Bjorn Reese
|
Bjorn Reese
|
||||||
|
@ -224,6 +236,7 @@ Chandrakant Bagul
|
||||||
Charles Kerr
|
Charles Kerr
|
||||||
Charles Romestant
|
Charles Romestant
|
||||||
Chen Prog
|
Chen Prog
|
||||||
|
Chester Liu
|
||||||
Chih-Chung Chang
|
Chih-Chung Chang
|
||||||
Chris "Bob Bob"
|
Chris "Bob Bob"
|
||||||
Chris Araman
|
Chris Araman
|
||||||
|
@ -275,6 +288,7 @@ Cory Nelson
|
||||||
Craig A West
|
Craig A West
|
||||||
Craig Davison
|
Craig Davison
|
||||||
Craig Markwardt
|
Craig Markwardt
|
||||||
|
Craig de Stigter
|
||||||
Cris Bailiff
|
Cris Bailiff
|
||||||
Cristian Rodríguez
|
Cristian Rodríguez
|
||||||
Curt Bogmine
|
Curt Bogmine
|
||||||
|
@ -295,12 +309,14 @@ Dan Cristian
|
||||||
Dan Donahue
|
Dan Donahue
|
||||||
Dan Fandrich
|
Dan Fandrich
|
||||||
Dan Jacobson
|
Dan Jacobson
|
||||||
|
Dan Johnson
|
||||||
Dan Locks
|
Dan Locks
|
||||||
Dan McNulty
|
Dan McNulty
|
||||||
Dan Nelson
|
Dan Nelson
|
||||||
Dan Petitt
|
Dan Petitt
|
||||||
Dan Torop
|
Dan Torop
|
||||||
Dan Zitter
|
Dan Zitter
|
||||||
|
Daniel Bankhead
|
||||||
Daniel Black
|
Daniel Black
|
||||||
Daniel Cater
|
Daniel Cater
|
||||||
Daniel Egger
|
Daniel Egger
|
||||||
|
@ -308,6 +324,7 @@ Daniel Gustafsson
|
||||||
Daniel Hwang
|
Daniel Hwang
|
||||||
Daniel Johnson
|
Daniel Johnson
|
||||||
Daniel Kahn Gillmor
|
Daniel Kahn Gillmor
|
||||||
|
Daniel Krügler
|
||||||
Daniel Lee Hwang
|
Daniel Lee Hwang
|
||||||
Daniel Melani
|
Daniel Melani
|
||||||
Daniel Mentz
|
Daniel Mentz
|
||||||
|
@ -337,6 +354,7 @@ David Binderman
|
||||||
David Blaikie
|
David Blaikie
|
||||||
David Byron
|
David Byron
|
||||||
David Cohen
|
David Cohen
|
||||||
|
David E. Narváez
|
||||||
David Eriksson
|
David Eriksson
|
||||||
David Houlder
|
David Houlder
|
||||||
David Hull
|
David Hull
|
||||||
|
@ -347,6 +365,7 @@ David Kierznowski
|
||||||
David Kimdon
|
David Kimdon
|
||||||
David Lang
|
David Lang
|
||||||
David LeBlanc
|
David LeBlanc
|
||||||
|
David Lord
|
||||||
David McCreedy
|
David McCreedy
|
||||||
David Meyer
|
David Meyer
|
||||||
David Odin
|
David Odin
|
||||||
|
@ -376,16 +395,20 @@ Dima Barsky
|
||||||
Dima Tisnek
|
Dima Tisnek
|
||||||
Dimitar Boevski
|
Dimitar Boevski
|
||||||
Dimitre Dimitrov
|
Dimitre Dimitrov
|
||||||
|
Dimitrios Apostolou
|
||||||
Dimitrios Siganos
|
Dimitrios Siganos
|
||||||
Dimitris Sarris
|
Dimitris Sarris
|
||||||
Dinar
|
Dinar
|
||||||
Dirk Eddelbuettel
|
Dirk Eddelbuettel
|
||||||
|
Dirk Feytons
|
||||||
Dirk Manske
|
Dirk Manske
|
||||||
Dmitri Shubin
|
Dmitri Shubin
|
||||||
|
Dmitri Tikhonov
|
||||||
Dmitriy Sergeyev
|
Dmitriy Sergeyev
|
||||||
Dmitry Bartsevich
|
Dmitry Bartsevich
|
||||||
Dmitry Eremin-Solenikov
|
Dmitry Eremin-Solenikov
|
||||||
Dmitry Falko
|
Dmitry Falko
|
||||||
|
Dmitry Kostjuchenko
|
||||||
Dmitry Kurochkin
|
Dmitry Kurochkin
|
||||||
Dmitry Popov
|
Dmitry Popov
|
||||||
Dmitry Rechkin
|
Dmitry Rechkin
|
||||||
|
@ -408,6 +431,7 @@ Duane Cathey
|
||||||
Duncan Mac-Vicar Prett
|
Duncan Mac-Vicar Prett
|
||||||
Dustin Boswell
|
Dustin Boswell
|
||||||
Dusty Mabe
|
Dusty Mabe
|
||||||
|
Dwarakanath Yadavalli
|
||||||
Dylan Ellicott
|
Dylan Ellicott
|
||||||
Dylan Salisbury
|
Dylan Salisbury
|
||||||
Dániel Bakai
|
Dániel Bakai
|
||||||
|
@ -424,6 +448,7 @@ Eelco Dolstra
|
||||||
Eetu Ojanen
|
Eetu Ojanen
|
||||||
Egon Eckert
|
Egon Eckert
|
||||||
Eldar Zaitov
|
Eldar Zaitov
|
||||||
|
Elliot Saba
|
||||||
Ellis Pritchard
|
Ellis Pritchard
|
||||||
Elmira A Semenova
|
Elmira A Semenova
|
||||||
Emanuele Bovisio
|
Emanuele Bovisio
|
||||||
|
@ -458,6 +483,8 @@ Erwin Authried
|
||||||
Ethan Glasser Camp
|
Ethan Glasser Camp
|
||||||
Eugene Kotlyarov
|
Eugene Kotlyarov
|
||||||
Evan Jordan
|
Evan Jordan
|
||||||
|
Even Rouault
|
||||||
|
Evert Pot
|
||||||
Evgeny Grin
|
Evgeny Grin
|
||||||
Evgeny Turnaev
|
Evgeny Turnaev
|
||||||
Eygene Ryabinkin
|
Eygene Ryabinkin
|
||||||
|
@ -469,6 +496,7 @@ Fabrizio Ammollo
|
||||||
Fahim Chandurwala
|
Fahim Chandurwala
|
||||||
Fedor Karpelevitch
|
Fedor Karpelevitch
|
||||||
Feist Josselin
|
Feist Josselin
|
||||||
|
Felix Kaiser
|
||||||
Felix Yan
|
Felix Yan
|
||||||
Felix von Leitner
|
Felix von Leitner
|
||||||
Feng Tu
|
Feng Tu
|
||||||
|
@ -476,9 +504,11 @@ Fernando Muñoz
|
||||||
Flavio Medeiros
|
Flavio Medeiros
|
||||||
Florian Schoppmann
|
Florian Schoppmann
|
||||||
Florian Weimer
|
Florian Weimer
|
||||||
|
Florin Petriuc
|
||||||
Forrest Cahoon
|
Forrest Cahoon
|
||||||
Francisco Moraes
|
Francisco Moraes
|
||||||
Francois Petitjean
|
Francois Petitjean
|
||||||
|
Frank Denis
|
||||||
Frank Gevaerts
|
Frank Gevaerts
|
||||||
Frank Hempel
|
Frank Hempel
|
||||||
Frank Keeney
|
Frank Keeney
|
||||||
|
@ -493,6 +523,7 @@ Fred New
|
||||||
Fred Noz
|
Fred Noz
|
||||||
Fred Stluka
|
Fred Stluka
|
||||||
Frederic Lepied
|
Frederic Lepied
|
||||||
|
Frederik B
|
||||||
Fredrik Thulin
|
Fredrik Thulin
|
||||||
Gabriel Kuri
|
Gabriel Kuri
|
||||||
Gabriel Sjoberg
|
Gabriel Sjoberg
|
||||||
|
@ -554,8 +585,10 @@ Gwenole Beauchesne
|
||||||
Gökhan Şengün
|
Gökhan Şengün
|
||||||
Götz Babin-Ebell
|
Götz Babin-Ebell
|
||||||
Hamish Mackenzie
|
Hamish Mackenzie
|
||||||
|
Han Qiao
|
||||||
Hang Kin Lau
|
Hang Kin Lau
|
||||||
Hang Su
|
Hang Su
|
||||||
|
Hannes Magnusson
|
||||||
Hanno Böck
|
Hanno Böck
|
||||||
Hanno Kranzhoff
|
Hanno Kranzhoff
|
||||||
Hans Steegers
|
Hans Steegers
|
||||||
|
@ -584,6 +617,7 @@ Howard Chu
|
||||||
Hubert Kario
|
Hubert Kario
|
||||||
Hzhijun
|
Hzhijun
|
||||||
Ian D Allen
|
Ian D Allen
|
||||||
|
Ian Fette
|
||||||
Ian Ford
|
Ian Ford
|
||||||
Ian Gulliver
|
Ian Gulliver
|
||||||
Ian Lynagh
|
Ian Lynagh
|
||||||
|
@ -607,12 +641,14 @@ Ishan SinghLevett
|
||||||
Ivan Avdeev
|
Ivan Avdeev
|
||||||
Ivo Bellin Salarin
|
Ivo Bellin Salarin
|
||||||
Jack Zhang
|
Jack Zhang
|
||||||
|
Jackarain on github
|
||||||
Jacky Lam
|
Jacky Lam
|
||||||
Jacob Meuser
|
Jacob Meuser
|
||||||
Jacob Moshenko
|
Jacob Moshenko
|
||||||
Jactry Zeng
|
Jactry Zeng
|
||||||
Jad Chamcham
|
Jad Chamcham
|
||||||
Jaime Fullaondo
|
Jaime Fullaondo
|
||||||
|
Jakub Wilk
|
||||||
Jakub Zakrzewski
|
Jakub Zakrzewski
|
||||||
James Atwill
|
James Atwill
|
||||||
James Bursa
|
James Bursa
|
||||||
|
@ -624,9 +660,11 @@ James Gallagher
|
||||||
James Griffiths
|
James Griffiths
|
||||||
James Housley
|
James Housley
|
||||||
James MacMillan
|
James MacMillan
|
||||||
|
James Slaughter
|
||||||
Jamie Lokier
|
Jamie Lokier
|
||||||
Jamie Newton
|
Jamie Newton
|
||||||
Jamie Wilkinson
|
Jamie Wilkinson
|
||||||
|
Jan Alexander Steffens
|
||||||
Jan Ehrhardt
|
Jan Ehrhardt
|
||||||
Jan Koen Annot
|
Jan Koen Annot
|
||||||
Jan Kunder
|
Jan Kunder
|
||||||
|
@ -638,11 +676,13 @@ Jared Lundell
|
||||||
Jari Aalto
|
Jari Aalto
|
||||||
Jari Sundell
|
Jari Sundell
|
||||||
Jason Glasgow
|
Jason Glasgow
|
||||||
|
Jason Juang
|
||||||
Jason Liu
|
Jason Liu
|
||||||
Jason McDonald
|
Jason McDonald
|
||||||
Jason S. Priebe
|
Jason S. Priebe
|
||||||
Javier Barroso
|
Javier Barroso
|
||||||
Javier G. Sogo
|
Javier G. Sogo
|
||||||
|
Javier Sixto
|
||||||
Jay Austin
|
Jay Austin
|
||||||
Jayesh A Shah
|
Jayesh A Shah
|
||||||
Jaz Fresh
|
Jaz Fresh
|
||||||
|
@ -669,6 +709,7 @@ Jeremy Friesner
|
||||||
Jeremy Huddleston
|
Jeremy Huddleston
|
||||||
Jeremy Lin
|
Jeremy Lin
|
||||||
Jeremy Pearson
|
Jeremy Pearson
|
||||||
|
Jeremy Tan
|
||||||
Jeroen Koekkoek
|
Jeroen Koekkoek
|
||||||
Jeroen Ooms
|
Jeroen Ooms
|
||||||
Jerome Muffat-Meridol
|
Jerome Muffat-Meridol
|
||||||
|
@ -678,6 +719,7 @@ Jerry Krinock
|
||||||
Jerry Wu
|
Jerry Wu
|
||||||
Jes Badwal
|
Jes Badwal
|
||||||
Jesper Jensen
|
Jesper Jensen
|
||||||
|
Jesse Chisholm
|
||||||
Jesse Noller
|
Jesse Noller
|
||||||
Jesse Tan
|
Jesse Tan
|
||||||
Jie He
|
Jie He
|
||||||
|
@ -706,10 +748,13 @@ Johannes Schindelin
|
||||||
John Bradshaw
|
John Bradshaw
|
||||||
John Coffey
|
John Coffey
|
||||||
John Crow
|
John Crow
|
||||||
|
John David Anglin
|
||||||
|
John DeHelian
|
||||||
John Dennis
|
John Dennis
|
||||||
John Dunn
|
John Dunn
|
||||||
John E. Malmberg
|
John E. Malmberg
|
||||||
John Gardiner Myers
|
John Gardiner Myers
|
||||||
|
John Hascall
|
||||||
John Janssen
|
John Janssen
|
||||||
John Joseph Bachir
|
John Joseph Bachir
|
||||||
John Kelly
|
John Kelly
|
||||||
|
@ -721,11 +766,13 @@ John Marino
|
||||||
John Marshall
|
John Marshall
|
||||||
John McGowan
|
John McGowan
|
||||||
John P. McCaskey
|
John P. McCaskey
|
||||||
|
John Starks
|
||||||
John Suprock
|
John Suprock
|
||||||
John Wanghui
|
John Wanghui
|
||||||
John Wilkinson
|
John Wilkinson
|
||||||
John-Mark Bell
|
John-Mark Bell
|
||||||
Johnny Luong
|
Johnny Luong
|
||||||
|
Jon DeVree
|
||||||
Jon Grubbs
|
Jon Grubbs
|
||||||
Jon Nelson
|
Jon Nelson
|
||||||
Jon Sargeant
|
Jon Sargeant
|
||||||
|
@ -767,6 +814,7 @@ Julien Nabet
|
||||||
Julien Royer
|
Julien Royer
|
||||||
Jun-ichiro itojun Hagino
|
Jun-ichiro itojun Hagino
|
||||||
Jurij Smakov
|
Jurij Smakov
|
||||||
|
Juro Bystricky
|
||||||
Justin Clift
|
Justin Clift
|
||||||
Justin Ehlert
|
Justin Ehlert
|
||||||
Justin Fletcher
|
Justin Fletcher
|
||||||
|
@ -786,6 +834,7 @@ Kang Lin
|
||||||
Kang-Jin Lee
|
Kang-Jin Lee
|
||||||
Karl Moerder
|
Karl Moerder
|
||||||
Karol Pietrzak
|
Karol Pietrzak
|
||||||
|
Kartik Mahajan
|
||||||
Kaspar Brand
|
Kaspar Brand
|
||||||
Katie Wang
|
Katie Wang
|
||||||
Kazuho Oku
|
Kazuho Oku
|
||||||
|
@ -804,6 +853,7 @@ Kevin Ji
|
||||||
Kevin Lussier
|
Kevin Lussier
|
||||||
Kevin Reed
|
Kevin Reed
|
||||||
Kevin Roth
|
Kevin Roth
|
||||||
|
Kevin Smith
|
||||||
Kim Minjoong
|
Kim Minjoong
|
||||||
Kim Rinnewitz
|
Kim Rinnewitz
|
||||||
Kim Vandry
|
Kim Vandry
|
||||||
|
@ -817,6 +867,7 @@ Krishnendu Majumdar
|
||||||
Krister Johansen
|
Krister Johansen
|
||||||
Kristian Gunstone
|
Kristian Gunstone
|
||||||
Kristian Köhntopp
|
Kristian Köhntopp
|
||||||
|
Kristiyan Tsaklev
|
||||||
Kurt Fankhauser
|
Kurt Fankhauser
|
||||||
Kyle J. McKay
|
Kyle J. McKay
|
||||||
Kyle L. Huff
|
Kyle L. Huff
|
||||||
|
@ -837,6 +888,7 @@ Lars Torben Wilson
|
||||||
Lau Hang Kin
|
Lau Hang Kin
|
||||||
Laurent Rabret
|
Laurent Rabret
|
||||||
Lauri Kasanen
|
Lauri Kasanen
|
||||||
|
Lawrence Wagerfield
|
||||||
Legoff Vincent
|
Legoff Vincent
|
||||||
Lehel Bernadt
|
Lehel Bernadt
|
||||||
Leif W
|
Leif W
|
||||||
|
@ -863,6 +915,7 @@ Loic Dachary
|
||||||
Loren Kirkby
|
Loren Kirkby
|
||||||
Luan Cestari
|
Luan Cestari
|
||||||
Luca Altea
|
Luca Altea
|
||||||
|
Luca Boccassi
|
||||||
Lucas Adamski
|
Lucas Adamski
|
||||||
Lucas Pardue
|
Lucas Pardue
|
||||||
Ludek Finstrle
|
Ludek Finstrle
|
||||||
|
@ -888,6 +941,7 @@ Mamoru Tasaka
|
||||||
Mandy Wu
|
Mandy Wu
|
||||||
Manfred Schwarb
|
Manfred Schwarb
|
||||||
Manuel Massing
|
Manuel Massing
|
||||||
|
Marc Aldorasi
|
||||||
Marc Boucher
|
Marc Boucher
|
||||||
Marc Deslauriers
|
Marc Deslauriers
|
||||||
Marc Doughty
|
Marc Doughty
|
||||||
|
@ -933,6 +987,7 @@ Martijn Koster
|
||||||
Martin C. Martin
|
Martin C. Martin
|
||||||
Martin Drasar
|
Martin Drasar
|
||||||
Martin Frodl
|
Martin Frodl
|
||||||
|
Martin Galvan
|
||||||
Martin Hager
|
Martin Hager
|
||||||
Martin Hedenfalk
|
Martin Hedenfalk
|
||||||
Martin Jansen
|
Martin Jansen
|
||||||
|
@ -954,11 +1009,14 @@ Matt Kraai
|
||||||
Matt Veenstra
|
Matt Veenstra
|
||||||
Matt Witherspoon
|
Matt Witherspoon
|
||||||
Matt Wixson
|
Matt Wixson
|
||||||
|
Matteo B.
|
||||||
Matteo Rocco
|
Matteo Rocco
|
||||||
Matthew Blain
|
Matthew Blain
|
||||||
Matthew Clarke
|
Matthew Clarke
|
||||||
Matthew Hall
|
Matthew Hall
|
||||||
|
Matthew Kerwin
|
||||||
Matthias Bolte
|
Matthias Bolte
|
||||||
|
Mattias Fornander
|
||||||
Maurice Barnum
|
Maurice Barnum
|
||||||
Mauro Iorio
|
Mauro Iorio
|
||||||
Mauro Rappa
|
Mauro Rappa
|
||||||
|
@ -978,6 +1036,8 @@ Michael Calmer
|
||||||
Michael Cronenworth
|
Michael Cronenworth
|
||||||
Michael Curtis
|
Michael Curtis
|
||||||
Michael Day
|
Michael Day
|
||||||
|
Michael Felt
|
||||||
|
Michael Gmelin
|
||||||
Michael Goffioul
|
Michael Goffioul
|
||||||
Michael Jahn
|
Michael Jahn
|
||||||
Michael Jerris
|
Michael Jerris
|
||||||
|
@ -1005,6 +1065,7 @@ Miguel Diaz
|
||||||
Mihai Ionescu
|
Mihai Ionescu
|
||||||
Mikael Johansson
|
Mikael Johansson
|
||||||
Mikael Sennerholm
|
Mikael Sennerholm
|
||||||
|
Mikalai Ananenka
|
||||||
Mike Bytnar
|
Mike Bytnar
|
||||||
Mike Crowe
|
Mike Crowe
|
||||||
Mike Dobbs
|
Mike Dobbs
|
||||||
|
@ -1040,17 +1101,20 @@ Neal Poole
|
||||||
Nehal J Wani
|
Nehal J Wani
|
||||||
Neil Bowers
|
Neil Bowers
|
||||||
Neil Dunbar
|
Neil Dunbar
|
||||||
|
Neil Kolban
|
||||||
Neil Spring
|
Neil Spring
|
||||||
Nic Roets
|
Nic Roets
|
||||||
Nicholas Maniscalco
|
Nicholas Maniscalco
|
||||||
Nick Draffen
|
Nick Draffen
|
||||||
Nick Gimbrone
|
Nick Gimbrone
|
||||||
Nick Humfrey
|
Nick Humfrey
|
||||||
|
Nick Miyake
|
||||||
Nick Zitzmann
|
Nick Zitzmann
|
||||||
Nico Baggus
|
Nico Baggus
|
||||||
Nicolas Berloquin
|
Nicolas Berloquin
|
||||||
Nicolas Croiset
|
Nicolas Croiset
|
||||||
Nicolas François
|
Nicolas François
|
||||||
|
Nicolas Morey-Chaisemartin
|
||||||
Niels van Tongeren
|
Niels van Tongeren
|
||||||
Nikita Schmidt
|
Nikita Schmidt
|
||||||
Nikitinskit Dmitriy
|
Nikitinskit Dmitriy
|
||||||
|
@ -1072,6 +1136,7 @@ Ola Mork
|
||||||
Olaf Flebbe
|
Olaf Flebbe
|
||||||
Olaf Stüben
|
Olaf Stüben
|
||||||
Oleg Pudeyev
|
Oleg Pudeyev
|
||||||
|
Oli Kingshott
|
||||||
Oliver Gondža
|
Oliver Gondža
|
||||||
Oliver Graute
|
Oliver Graute
|
||||||
Oliver Kuckertz
|
Oliver Kuckertz
|
||||||
|
@ -1097,6 +1162,7 @@ Pat Ray
|
||||||
Patrice Guerin
|
Patrice Guerin
|
||||||
Patricia Muscalu
|
Patricia Muscalu
|
||||||
Patrick Bihan-Faou
|
Patrick Bihan-Faou
|
||||||
|
Patrick Dawson
|
||||||
Patrick McManus
|
Patrick McManus
|
||||||
Patrick Monnerat
|
Patrick Monnerat
|
||||||
Patrick Rapin
|
Patrick Rapin
|
||||||
|
@ -1118,13 +1184,19 @@ Paul Oliver
|
||||||
Paul Querna
|
Paul Querna
|
||||||
Paul Saab
|
Paul Saab
|
||||||
Pavel Cenek
|
Pavel Cenek
|
||||||
|
Pavel Gushchin
|
||||||
Pavel Orehov
|
Pavel Orehov
|
||||||
|
Pavel Pavlov
|
||||||
Pavel Raiskup
|
Pavel Raiskup
|
||||||
|
Pavel Rochnyak
|
||||||
|
Pavol Markovic
|
||||||
Pawel A. Gajda
|
Pawel A. Gajda
|
||||||
Pawel Kierski
|
Pawel Kierski
|
||||||
Pedro Larroy
|
Pedro Larroy
|
||||||
Pedro Neves
|
Pedro Neves
|
||||||
|
Per Lundberg
|
||||||
Per Malmberg
|
Per Malmberg
|
||||||
|
Pete Lomax
|
||||||
Peter Bray
|
Peter Bray
|
||||||
Peter Forret
|
Peter Forret
|
||||||
Peter Frühberger
|
Peter Frühberger
|
||||||
|
@ -1132,10 +1204,12 @@ Peter Gal
|
||||||
Peter Heuchert
|
Peter Heuchert
|
||||||
Peter Hjalmarsson
|
Peter Hjalmarsson
|
||||||
Peter Korsgaard
|
Peter Korsgaard
|
||||||
|
Peter Lamare
|
||||||
Peter Lamberg
|
Peter Lamberg
|
||||||
Peter Laser
|
Peter Laser
|
||||||
Peter O'Gorman
|
Peter O'Gorman
|
||||||
Peter Pentchev
|
Peter Pentchev
|
||||||
|
Peter Piekarski
|
||||||
Peter Silva
|
Peter Silva
|
||||||
Peter Su
|
Peter Su
|
||||||
Peter Sylvester
|
Peter Sylvester
|
||||||
|
@ -1148,6 +1222,7 @@ Peteris Krumins
|
||||||
Petr Bahula
|
Petr Bahula
|
||||||
Petr Novak
|
Petr Novak
|
||||||
Petr Pisar
|
Petr Pisar
|
||||||
|
Petr Voytsik
|
||||||
Phil Blundell
|
Phil Blundell
|
||||||
Phil Crump
|
Phil Crump
|
||||||
Phil Karn
|
Phil Karn
|
||||||
|
@ -1191,6 +1266,7 @@ Ralf S. Engelschall
|
||||||
Ralph Beckmann
|
Ralph Beckmann
|
||||||
Ralph Mitchell
|
Ralph Mitchell
|
||||||
Ramana Mokkapati
|
Ramana Mokkapati
|
||||||
|
Randall S. Becker
|
||||||
Randy Armstrong
|
Randy Armstrong
|
||||||
Randy McMurchy
|
Randy McMurchy
|
||||||
Ravi Pratap
|
Ravi Pratap
|
||||||
|
@ -1215,6 +1291,7 @@ Ricardo Cadime
|
||||||
Rich Burridge
|
Rich Burridge
|
||||||
Rich Gray
|
Rich Gray
|
||||||
Rich Rauenzahn
|
Rich Rauenzahn
|
||||||
|
Richard Alcock
|
||||||
Richard Archer
|
Richard Archer
|
||||||
Richard Atterer
|
Richard Atterer
|
||||||
Richard Bramante
|
Richard Bramante
|
||||||
|
@ -1234,9 +1311,11 @@ Rick Jones
|
||||||
Rick Richardson
|
Rick Richardson
|
||||||
Ricki Hirner
|
Ricki Hirner
|
||||||
Rider Linden
|
Rider Linden
|
||||||
|
Rob Cotrone
|
||||||
Rob Crittenden
|
Rob Crittenden
|
||||||
Rob Davies
|
Rob Davies
|
||||||
Rob Jones
|
Rob Jones
|
||||||
|
Rob Sanders
|
||||||
Rob Stanzel
|
Rob Stanzel
|
||||||
Rob Ward
|
Rob Ward
|
||||||
Robert A. Monat
|
Robert A. Monat
|
||||||
|
@ -1244,6 +1323,7 @@ Robert B. Harris
|
||||||
Robert D. Young
|
Robert D. Young
|
||||||
Robert Foreman
|
Robert Foreman
|
||||||
Robert Iakobashvili
|
Robert Iakobashvili
|
||||||
|
Robert Kolcun
|
||||||
Robert Olson
|
Robert Olson
|
||||||
Robert Schumann
|
Robert Schumann
|
||||||
Robert Weaver
|
Robert Weaver
|
||||||
|
@ -1279,9 +1359,12 @@ Ryan Chan
|
||||||
Ryan Nelson
|
Ryan Nelson
|
||||||
Ryan Schmidt
|
Ryan Schmidt
|
||||||
Ryan Scott
|
Ryan Scott
|
||||||
|
Ryan Winograd
|
||||||
Ryuichi KAWAMATA
|
Ryuichi KAWAMATA
|
||||||
Rémy Léone
|
Rémy Léone
|
||||||
S. Moonesamy
|
S. Moonesamy
|
||||||
|
SBKarr on github
|
||||||
|
Salah-Eddin Shaban
|
||||||
Salvador Dávila
|
Salvador Dávila
|
||||||
Salvatore Sorrentino
|
Salvatore Sorrentino
|
||||||
Sam Deane
|
Sam Deane
|
||||||
|
@ -1308,6 +1391,7 @@ Scott Davis
|
||||||
Scott McCreary
|
Scott McCreary
|
||||||
Sean Boudreau
|
Sean Boudreau
|
||||||
Sean Burford
|
Sean Burford
|
||||||
|
Sean MacLennan
|
||||||
Sebastian Mundry
|
Sebastian Mundry
|
||||||
Sebastian Pohlschmidt
|
Sebastian Pohlschmidt
|
||||||
Sebastian Rasmussen
|
Sebastian Rasmussen
|
||||||
|
@ -1345,6 +1429,7 @@ Spork Schivago
|
||||||
Stadler Stephan
|
Stadler Stephan
|
||||||
Stan van de Burgt
|
Stan van de Burgt
|
||||||
Stanislav Ivochkin
|
Stanislav Ivochkin
|
||||||
|
Stanislav Zidek
|
||||||
Stefan Bühler
|
Stefan Bühler
|
||||||
Stefan Eissing
|
Stefan Eissing
|
||||||
Stefan Esser
|
Stefan Esser
|
||||||
|
@ -1355,6 +1440,7 @@ Stefan Teleman
|
||||||
Stefan Tomanek
|
Stefan Tomanek
|
||||||
Stefan Ulrich
|
Stefan Ulrich
|
||||||
Steinar H. Gunderson
|
Steinar H. Gunderson
|
||||||
|
Stepan Broz
|
||||||
Stephan Bergmann
|
Stephan Bergmann
|
||||||
Stephen Brokenshire
|
Stephen Brokenshire
|
||||||
Stephen Collyer
|
Stephen Collyer
|
||||||
|
@ -1404,9 +1490,11 @@ Thomas J. Moore
|
||||||
Thomas Klausner
|
Thomas Klausner
|
||||||
Thomas L. Shinnick
|
Thomas L. Shinnick
|
||||||
Thomas Lopatic
|
Thomas Lopatic
|
||||||
|
Thomas Petazzoni
|
||||||
Thomas Ruecker
|
Thomas Ruecker
|
||||||
Thomas Schwinge
|
Thomas Schwinge
|
||||||
Thomas Tonino
|
Thomas Tonino
|
||||||
|
Thomas van Hesteren
|
||||||
Thorsten Schöning
|
Thorsten Schöning
|
||||||
Tiit Pikma
|
Tiit Pikma
|
||||||
Till Maas
|
Till Maas
|
||||||
|
@ -1424,6 +1512,7 @@ Tim Stack
|
||||||
Tim Starling
|
Tim Starling
|
||||||
Timo Sirainen
|
Timo Sirainen
|
||||||
Timotej Lazar
|
Timotej Lazar
|
||||||
|
Timothe Litt
|
||||||
Timothy Polich
|
Timothy Polich
|
||||||
Tinus van den Berg
|
Tinus van den Berg
|
||||||
Tobias Markus
|
Tobias Markus
|
||||||
|
@ -1442,12 +1531,14 @@ Tom Mattison
|
||||||
Tom Moers
|
Tom Moers
|
||||||
Tom Mueller
|
Tom Mueller
|
||||||
Tom Regner
|
Tom Regner
|
||||||
|
Tom Seddon
|
||||||
Tom Sparrow
|
Tom Sparrow
|
||||||
Tom Wright
|
Tom Wright
|
||||||
Tom Zerucha
|
Tom Zerucha
|
||||||
Tomas Hoger
|
Tomas Hoger
|
||||||
Tomas Jakobsson
|
Tomas Jakobsson
|
||||||
Tomas Mlcoch
|
Tomas Mlcoch
|
||||||
|
Tomas Mraz
|
||||||
Tomas Pospisek
|
Tomas Pospisek
|
||||||
Tomas Szepe
|
Tomas Szepe
|
||||||
Tomas Tomecek
|
Tomas Tomecek
|
||||||
|
@ -1520,7 +1611,9 @@ William Ahern
|
||||||
Wojciech Zwiefka
|
Wojciech Zwiefka
|
||||||
Wouter Van Rooy
|
Wouter Van Rooy
|
||||||
Wu Yongzheng
|
Wu Yongzheng
|
||||||
|
Wyatt O'Day
|
||||||
Xavier Bouchoux
|
Xavier Bouchoux
|
||||||
|
XhstormR on github
|
||||||
Xiangbin Li
|
Xiangbin Li
|
||||||
Yaakov Selkowitz
|
Yaakov Selkowitz
|
||||||
Yamada Yasuharu
|
Yamada Yasuharu
|
||||||
|
@ -1538,19 +1631,33 @@ Yun SangHo
|
||||||
Yuriy Sosov
|
Yuriy Sosov
|
||||||
Yves Arrouye
|
Yves Arrouye
|
||||||
Yves Lejeune
|
Yves Lejeune
|
||||||
|
Zachary Seguin
|
||||||
Zdenek Pavlas
|
Zdenek Pavlas
|
||||||
Zekun Ni
|
Zekun Ni
|
||||||
|
Zenju on github
|
||||||
|
Zhouyihai Ding
|
||||||
Zmey Petroff
|
Zmey Petroff
|
||||||
Zvi Har'El
|
Zvi Har'El
|
||||||
afrind on github
|
afrind on github
|
||||||
|
ahodesuka on github
|
||||||
|
arainchik on github
|
||||||
asavah on github
|
asavah on github
|
||||||
baumanj on github
|
baumanj on github
|
||||||
bsammon on github
|
bsammon on github
|
||||||
canavan at github
|
canavan on github
|
||||||
|
cbartl on github
|
||||||
|
cmfrolick on github
|
||||||
|
destman on github
|
||||||
dkjjr89 on github
|
dkjjr89 on github
|
||||||
|
dpull on github
|
||||||
eXeC64 on github
|
eXeC64 on github
|
||||||
jonrumsey at github
|
elelel on github
|
||||||
|
guitared on github
|
||||||
|
hsiao yi
|
||||||
|
imilli on github
|
||||||
jonrumsey on github
|
jonrumsey on github
|
||||||
|
joshhe on github
|
||||||
|
jungle-boogie on github
|
||||||
jveazey on github
|
jveazey on github
|
||||||
ka7 on github
|
ka7 on github
|
||||||
kreshano on github
|
kreshano on github
|
||||||
|
@ -1560,18 +1667,24 @@ madblobfish on github
|
||||||
marc-groundctl on github
|
marc-groundctl on github
|
||||||
mccormickt12 on github
|
mccormickt12 on github
|
||||||
mkzero on github
|
mkzero on github
|
||||||
|
moohoorama on github
|
||||||
neex on github
|
neex on github
|
||||||
neheb on github
|
neheb on github
|
||||||
nk
|
nk
|
||||||
nopjmp on github
|
nopjmp on github
|
||||||
|
olesteban on github
|
||||||
|
omau on github
|
||||||
|
ovidiu-benea on github
|
||||||
|
paulharris on github
|
||||||
silveja1 on github
|
silveja1 on github
|
||||||
stootill at github
|
stootill on github
|
||||||
swalkaus at yahoo.com
|
swalkaus at yahoo.com
|
||||||
tarek112 on github
|
tarek112 on github
|
||||||
tommink[at]post.pl
|
tommink[at]post.pl
|
||||||
vanillajonathan on github
|
vanillajonathan on github
|
||||||
wmsch on github
|
wmsch on github
|
||||||
wyattoday at github
|
wyattoday on github
|
||||||
|
youngchopin on github
|
||||||
zelinchen on github
|
zelinchen on github
|
||||||
İsmail Dönmez
|
İsmail Dönmez
|
||||||
Štefan Kremeň
|
Štefan Kremeň
|
||||||
|
|
172
curl/docs/TODO
172
curl/docs/TODO
|
@ -25,8 +25,10 @@
|
||||||
1.7 Detect when called from within callbacks
|
1.7 Detect when called from within callbacks
|
||||||
1.8 CURLOPT_RESOLVE for any port number
|
1.8 CURLOPT_RESOLVE for any port number
|
||||||
1.9 Cache negative name resolves
|
1.9 Cache negative name resolves
|
||||||
|
1.10 auto-detect proxy
|
||||||
1.11 minimize dependencies with dynamically loaded modules
|
1.11 minimize dependencies with dynamically loaded modules
|
||||||
1.12 have form functions use CURL handle argument
|
1.12 updated DNS server while running
|
||||||
|
1.13 DNS-over-HTTPS
|
||||||
1.14 Typesafe curl_easy_setopt()
|
1.14 Typesafe curl_easy_setopt()
|
||||||
1.15 Monitor connections in the connection pool
|
1.15 Monitor connections in the connection pool
|
||||||
1.16 Try to URL encode given URL
|
1.16 Try to URL encode given URL
|
||||||
|
@ -37,7 +39,7 @@
|
||||||
1.21 API for URL parsing/splitting
|
1.21 API for URL parsing/splitting
|
||||||
1.23 Offer API to flush the connection pool
|
1.23 Offer API to flush the connection pool
|
||||||
1.24 TCP Fast Open for windows
|
1.24 TCP Fast Open for windows
|
||||||
1.25 Remove the generated include file
|
1.25 Expose tried IP addresses that failed
|
||||||
|
|
||||||
2. libcurl - multi interface
|
2. libcurl - multi interface
|
||||||
2.1 More non-blocking
|
2.1 More non-blocking
|
||||||
|
@ -57,6 +59,7 @@
|
||||||
4.5 ASCII support
|
4.5 ASCII support
|
||||||
4.6 GSSAPI via Windows SSPI
|
4.6 GSSAPI via Windows SSPI
|
||||||
4.7 STAT for LIST without data connection
|
4.7 STAT for LIST without data connection
|
||||||
|
4.8 Option to ignore private IP addresses in PASV response
|
||||||
|
|
||||||
5. HTTP
|
5. HTTP
|
||||||
5.1 Better persistency for HTTP 1.0
|
5.1 Better persistency for HTTP 1.0
|
||||||
|
@ -65,12 +68,8 @@
|
||||||
5.4 HTTP Digest using SHA-256
|
5.4 HTTP Digest using SHA-256
|
||||||
5.5 auth= in URLs
|
5.5 auth= in URLs
|
||||||
5.6 Refuse "downgrade" redirects
|
5.6 Refuse "downgrade" redirects
|
||||||
5.7 Brotli compression
|
5.7 QUIC
|
||||||
5.8 QUIC
|
5.8 Leave secure cookies alone
|
||||||
5.9 Improve formpost API
|
|
||||||
5.10 Leave secure cookies alone
|
|
||||||
5.11 Chunked transfer multipart formpost
|
|
||||||
5.12 OPTIONS *
|
|
||||||
|
|
||||||
6. TELNET
|
6. TELNET
|
||||||
6.1 ditch stdin
|
6.1 ditch stdin
|
||||||
|
@ -133,15 +132,14 @@
|
||||||
17.1 Multiplexing
|
17.1 Multiplexing
|
||||||
17.2 SFTP performance
|
17.2 SFTP performance
|
||||||
17.3 Support better than MD5 hostkey hash
|
17.3 Support better than MD5 hostkey hash
|
||||||
|
17.4 Support CURLOPT_PREQUOTE
|
||||||
|
|
||||||
18. Command line tool
|
18. Command line tool
|
||||||
18.1 sync
|
18.1 sync
|
||||||
18.2 glob posts
|
18.2 glob posts
|
||||||
18.3 prevent file overwriting
|
18.3 prevent file overwriting
|
||||||
18.4 simultaneous parallel transfers
|
18.4 simultaneous parallel transfers
|
||||||
18.5 provide formpost headers
|
|
||||||
18.6 warning when setting an option
|
18.6 warning when setting an option
|
||||||
18.7 warning when sending binary output to terminal
|
|
||||||
18.8 offer color-coded HTTP header output
|
18.8 offer color-coded HTTP header output
|
||||||
18.9 Choose the name of file in braces for complex URLs
|
18.9 Choose the name of file in braces for complex URLs
|
||||||
18.10 improve how curl works in a windows console window
|
18.10 improve how curl works in a windows console window
|
||||||
|
@ -211,7 +209,7 @@
|
||||||
1.5 get rid of PATH_MAX
|
1.5 get rid of PATH_MAX
|
||||||
|
|
||||||
Having code use and rely on PATH_MAX is not nice:
|
Having code use and rely on PATH_MAX is not nice:
|
||||||
http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
|
https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
|
||||||
|
|
||||||
Currently the SSH based code uses it a bit, but to remove PATH_MAX from there
|
Currently the SSH based code uses it a bit, but to remove PATH_MAX from there
|
||||||
we need libssh2 to properly tell us when we pass in a too small buffer and
|
we need libssh2 to properly tell us when we pass in a too small buffer and
|
||||||
|
@ -257,6 +255,18 @@
|
||||||
A name resolve that has failed is likely to fail when made again within a
|
A name resolve that has failed is likely to fail when made again within a
|
||||||
short period of time. Currently we only cache positive responses.
|
short period of time. Currently we only cache positive responses.
|
||||||
|
|
||||||
|
1.10 auto-detect proxy
|
||||||
|
|
||||||
|
libcurl could be made to detect the system proxy setup automatically and use
|
||||||
|
that. On Windows, macOS and Linux desktops for example.
|
||||||
|
|
||||||
|
The pull-request to use libproxy for this was deferred due to doubts on the
|
||||||
|
reliability of the dependency and how to use it:
|
||||||
|
https://github.com/curl/curl/pull/977
|
||||||
|
|
||||||
|
libdetectproxy is a (C++) library for detecting the proxy on Windows
|
||||||
|
https://github.com/paulharris/libdetectproxy
|
||||||
|
|
||||||
1.11 minimize dependencies with dynamically loaded modules
|
1.11 minimize dependencies with dynamically loaded modules
|
||||||
|
|
||||||
We can create a system with loadable modules/plug-ins, where these modules
|
We can create a system with loadable modules/plug-ins, where these modules
|
||||||
|
@ -265,17 +275,24 @@
|
||||||
app/invoke/used protocols would be necessary to load. See
|
app/invoke/used protocols would be necessary to load. See
|
||||||
https://github.com/curl/curl/issues/349
|
https://github.com/curl/curl/issues/349
|
||||||
|
|
||||||
1.12 have form functions use CURL handle argument
|
1.12 updated DNS server while running
|
||||||
|
|
||||||
curl_formadd() and curl_formget() both currently have no CURL handle
|
If /etc/resolv.conf gets updated while a program using libcurl is running, it
|
||||||
argument, but both can use a callback that is set in the easy handle, and
|
is may cause name resolves to fail unless res_init() is called. We should
|
||||||
thus curl_formget() with callback cannot function without first having
|
consider calling res_init() + retry once unconditionally on all name resolve
|
||||||
curl_easy_perform() (or similar) called - which is hard to grasp and a design
|
failures to mitigate against this. Firefox works like that. Note that Windows
|
||||||
mistake.
|
doesn't have res_init() or an alternative.
|
||||||
|
|
||||||
The curl_formadd() design can probably also be reconsidered to make it easier
|
https://github.com/curl/curl/issues/2251
|
||||||
to use and less error-prone. Probably easiest by splitting it into several
|
|
||||||
function calls.
|
1.13 DNS-over-HTTPS
|
||||||
|
|
||||||
|
By adding support for DNS-over-HTTPS curl could resolve host names using a
|
||||||
|
totally separate name server than the standard system resolver, while at the
|
||||||
|
same time doing so over a communication channel that enhances privacy and
|
||||||
|
security.
|
||||||
|
|
||||||
|
https://github.com/curl/curl/wiki/DNS-over-HTTPS
|
||||||
|
|
||||||
1.14 Typesafe curl_easy_setopt()
|
1.14 Typesafe curl_easy_setopt()
|
||||||
|
|
||||||
|
@ -369,32 +386,12 @@
|
||||||
Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
|
Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
|
||||||
and we should add support for it.
|
and we should add support for it.
|
||||||
|
|
||||||
1.25 Remove the generated include file
|
1.25 Expose tried IP addresses that failed
|
||||||
|
|
||||||
When curl and libcurl are built, one of the public include files are
|
When libcurl fails to connect to a host, it should be able to offer the
|
||||||
generated and is populated with a set of defines that are derevid from sizes
|
application the list of IP addresses that were used in the attempt.
|
||||||
and constants for the particular target architecture that build is made. For
|
|
||||||
platforms that can select between 32 bit and 64 bit at build time, this
|
|
||||||
approach makes the libcurl build only create a set of public headers suitable
|
|
||||||
for one of the architectures and not both. If you build libcurl for such a
|
|
||||||
platform and you want to allow applications to get built using either 32/64
|
|
||||||
version, you must generate the libcurl headers once for each setup and you
|
|
||||||
must then add a replacement curl header that would itself select the correct
|
|
||||||
32 or 64 bit specific header as necessary.
|
|
||||||
|
|
||||||
Your curl/curl.h alternative could then look like (replace with suitable CPP
|
|
||||||
variable to check):
|
|
||||||
|
|
||||||
#ifdef ARCH_32bit
|
|
||||||
#include <curl32/curl.h>
|
|
||||||
#else /* ARCH_64bit */
|
|
||||||
#include <curl64/curl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
A fix would either (A) fix the 32/64 setup automatically or even better (B)
|
|
||||||
work away the architecture specific defines from the headers so that they can
|
|
||||||
be used for all architectures independently of what libcurl was built for.
|
|
||||||
|
|
||||||
|
https://github.com/curl/curl/issues/2126
|
||||||
|
|
||||||
2. libcurl - multi interface
|
2. libcurl - multi interface
|
||||||
|
|
||||||
|
@ -404,7 +401,6 @@
|
||||||
EWOULDBLOCK or similar. Blocking cases include:
|
EWOULDBLOCK or similar. Blocking cases include:
|
||||||
|
|
||||||
- Name resolves on non-windows unless c-ares or the threaded resolver is used
|
- Name resolves on non-windows unless c-ares or the threaded resolver is used
|
||||||
- HTTP proxy CONNECT operations
|
|
||||||
- SOCKS proxy handshakes
|
- SOCKS proxy handshakes
|
||||||
- file:// transfers
|
- file:// transfers
|
||||||
- TELNET transfers
|
- TELNET transfers
|
||||||
|
@ -482,17 +478,23 @@
|
||||||
|
|
||||||
4.6 GSSAPI via Windows SSPI
|
4.6 GSSAPI via Windows SSPI
|
||||||
|
|
||||||
In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5)
|
In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5)
|
||||||
via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add
|
via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add
|
||||||
support for GSSAPI authentication via Windows SSPI.
|
support for GSSAPI authentication via Windows SSPI.
|
||||||
|
|
||||||
4.7 STAT for LIST without data connection
|
4.7 STAT for LIST without data connection
|
||||||
|
|
||||||
Some FTP servers allow STAT for listing directories instead of using LIST, and
|
Some FTP servers allow STAT for listing directories instead of using LIST,
|
||||||
the response is then sent over the control connection instead of as the
|
and the response is then sent over the control connection instead of as the
|
||||||
otherwise usedw data connection: http://www.nsftools.com/tips/RawFTP.htm#STAT
|
otherwise usedw data connection: http://www.nsftools.com/tips/RawFTP.htm#STAT
|
||||||
|
|
||||||
This is not detailed in any FTP specification.
|
This is not detailed in any FTP specification.
|
||||||
|
|
||||||
|
4.8 Option to ignore private IP addresses in PASV response
|
||||||
|
|
||||||
|
Some servers respond with and some other FTP client implementations can
|
||||||
|
ignore private (RFC 1918 style) IP addresses when received in PASV responses.
|
||||||
|
To consider for libcurl as well. See https://github.com/curl/curl/issues/1455
|
||||||
|
|
||||||
5. HTTP
|
5. HTTP
|
||||||
|
|
||||||
|
@ -547,13 +549,7 @@ This is not detailed in any FTP specification.
|
||||||
Consider a way to tell curl to refuse to "downgrade" protocol with a redirect
|
Consider a way to tell curl to refuse to "downgrade" protocol with a redirect
|
||||||
and/or possibly a bit that refuses redirect to change protocol completely.
|
and/or possibly a bit that refuses redirect to change protocol completely.
|
||||||
|
|
||||||
5.7 Brotli compression
|
5.7 QUIC
|
||||||
|
|
||||||
Brotli compression performs better than gzip and is being implemented by
|
|
||||||
browsers and servers widely. The algorithm: https://github.com/google/brotli
|
|
||||||
The Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=366559
|
|
||||||
|
|
||||||
5.8 QUIC
|
|
||||||
|
|
||||||
The standardization process of QUIC has been taken to the IETF and can be
|
The standardization process of QUIC has been taken to the IETF and can be
|
||||||
followed on the [IETF QUIC Mailing
|
followed on the [IETF QUIC Mailing
|
||||||
|
@ -563,46 +559,13 @@ This is not detailed in any FTP specification.
|
||||||
implemented. This, to allow other projects to benefit from the work and to
|
implemented. This, to allow other projects to benefit from the work and to
|
||||||
thus broaden the interest and chance of others to participate.
|
thus broaden the interest and chance of others to participate.
|
||||||
|
|
||||||
5.9 Improve formpost API
|
5.8 Leave secure cookies alone
|
||||||
|
|
||||||
Revamp the formpost API and making something that is easier to use and
|
|
||||||
understand:
|
|
||||||
|
|
||||||
https://github.com/curl/curl/wiki/formpost-API-redesigned
|
|
||||||
|
|
||||||
5.10 Leave secure cookies alone
|
|
||||||
|
|
||||||
Non-secure origins (HTTP sites) should not be allowed to set or modify
|
Non-secure origins (HTTP sites) should not be allowed to set or modify
|
||||||
cookies with the 'secure' property:
|
cookies with the 'secure' property:
|
||||||
|
|
||||||
https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01
|
https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01
|
||||||
|
|
||||||
5.11 Chunked transfer multipart formpost
|
|
||||||
|
|
||||||
For a case where the file is being made during the upload is progressing
|
|
||||||
(like passed on stdin to the curl tool), we cannot know the size before-hand
|
|
||||||
and we rather not read the entire thing into memory before it can start the
|
|
||||||
upload.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/1139
|
|
||||||
|
|
||||||
5.12 OPTIONS *
|
|
||||||
|
|
||||||
HTTP defines an OPTIONS method that can be sent with an asterisk option like
|
|
||||||
"OPTIONS *" to ask about options from the server and not a specific URL
|
|
||||||
resource. https://tools.ietf.org/html/rfc7230#section-5.3.4
|
|
||||||
|
|
||||||
libcurl as it currently works will always sent HTTP methods with a path that
|
|
||||||
starts with a slash so there's no way for an application to send a proper
|
|
||||||
"OPTIONS *" using libcurl. This should be fixed.
|
|
||||||
|
|
||||||
I can't think of any other non-slash paths we should support so it will
|
|
||||||
probably make sense to add a new boolean option for issuign an "OPTIONS *"
|
|
||||||
request. CURLOPT_OPTIONSASTERISK perhaps (and a corresponding command line
|
|
||||||
option)?
|
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/1280
|
|
||||||
|
|
||||||
|
|
||||||
6. TELNET
|
6. TELNET
|
||||||
|
|
||||||
|
@ -906,6 +869,10 @@ that doesn't exist on the server, just like --ftp-create-dirs.
|
||||||
SHA-1 is also being deprecated these days so we should consider workign with
|
SHA-1 is also being deprecated these days so we should consider workign with
|
||||||
libssh2 to instead offer support for SHA-256 or similar.
|
libssh2 to instead offer support for SHA-256 or similar.
|
||||||
|
|
||||||
|
17.4 Support CURLOPT_PREQUOTE
|
||||||
|
|
||||||
|
The two other QUOTE options are supported for SFTP, but this was left out for
|
||||||
|
unknown reasons!
|
||||||
|
|
||||||
18. Command line tool
|
18. Command line tool
|
||||||
|
|
||||||
|
@ -941,31 +908,12 @@ that doesn't exist on the server, just like --ftp-create-dirs.
|
||||||
Using the multi interface would also allow properly using parallel transfers
|
Using the multi interface would also allow properly using parallel transfers
|
||||||
with HTTP/2 and supporting HTTP/2 server push from the command line.
|
with HTTP/2 and supporting HTTP/2 server push from the command line.
|
||||||
|
|
||||||
18.5 provide formpost headers
|
|
||||||
|
|
||||||
Extending the capabilities of the multipart formposting. How about leaving
|
|
||||||
the ';type=foo' syntax as it is and adding an extra tag (headers) which
|
|
||||||
works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where
|
|
||||||
fil1.hdr contains extra headers like
|
|
||||||
|
|
||||||
Content-Type: text/plain; charset=KOI8-R"
|
|
||||||
Content-Transfer-Encoding: base64
|
|
||||||
X-User-Comment: Please don't use browser specific HTML code
|
|
||||||
|
|
||||||
which should overwrite the program reasonable defaults (plain/text,
|
|
||||||
8bit...)
|
|
||||||
|
|
||||||
18.6 warning when setting an option
|
18.6 warning when setting an option
|
||||||
|
|
||||||
Display a warning when libcurl returns an error when setting an option.
|
Display a warning when libcurl returns an error when setting an option.
|
||||||
This can be useful to tell when support for a particular feature hasn't been
|
This can be useful to tell when support for a particular feature hasn't been
|
||||||
compiled into the library.
|
compiled into the library.
|
||||||
|
|
||||||
18.7 warning when sending binary output to terminal
|
|
||||||
|
|
||||||
Provide a way that prompts the user for confirmation before binary data is
|
|
||||||
sent to the terminal, much in the style 'less' does it.
|
|
||||||
|
|
||||||
18.8 offer color-coded HTTP header output
|
18.8 offer color-coded HTTP header output
|
||||||
|
|
||||||
By offering different color output on the header name and the header
|
By offering different color output on the header name and the header
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -135,8 +135,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||||
$(top_builddir)/include/curl/curlbuild.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
AM_V_P = $(am__v_P_@AM_V@)
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
|
@ -178,8 +177,11 @@ CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||||
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
||||||
|
CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
|
||||||
|
CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
|
||||||
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
||||||
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
||||||
|
CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
|
||||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
@ -205,7 +207,9 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||||
|
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
DEPDIR = @DEPDIR@
|
DEPDIR = @DEPDIR@
|
||||||
DLLTOOL = @DLLTOOL@
|
DLLTOOL = @DLLTOOL@
|
||||||
|
@ -222,6 +226,7 @@ FGREP = @FGREP@
|
||||||
GCOV = @GCOV@
|
GCOV = @GCOV@
|
||||||
GENHTML = @GENHTML@
|
GENHTML = @GENHTML@
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
|
HAVE_BROTLI = @HAVE_BROTLI@
|
||||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||||
HAVE_LIBZ = @HAVE_LIBZ@
|
HAVE_LIBZ = @HAVE_LIBZ@
|
||||||
|
@ -279,6 +284,7 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||||
SED = @SED@
|
SED = @SED@
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
|
SSL_BACKENDS = @SSL_BACKENDS@
|
||||||
SSL_ENABLED = @SSL_ENABLED@
|
SSL_ENABLED = @SSL_ENABLED@
|
||||||
SSL_LIBS = @SSL_LIBS@
|
SSL_LIBS = @SSL_LIBS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
|
@ -291,6 +297,7 @@ USE_DARWINSSL = @USE_DARWINSSL@
|
||||||
USE_GNUTLS = @USE_GNUTLS@
|
USE_GNUTLS = @USE_GNUTLS@
|
||||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||||
USE_LIBRTMP = @USE_LIBRTMP@
|
USE_LIBRTMP = @USE_LIBRTMP@
|
||||||
|
USE_LIBSSH = @USE_LIBSSH@
|
||||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||||
USE_MBEDTLS = @USE_MBEDTLS@
|
USE_MBEDTLS = @USE_MBEDTLS@
|
||||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||||
|
@ -362,7 +369,8 @@ top_srcdir = @top_srcdir@
|
||||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||||
MANPAGE = $(top_builddir)/docs/curl.1
|
MANPAGE = $(top_builddir)/docs/curl.1
|
||||||
DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \
|
DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \
|
||||||
cert-status.d cert-type.d ciphers.d compressed.d config.d \
|
cert-status.d cert-type.d ciphers.d compressed.d compressed-ssh.d \
|
||||||
|
config.d \
|
||||||
connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \
|
connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \
|
||||||
create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \
|
create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \
|
||||||
data-raw.d data-urlencode.d delegation.d digest.d disable.d \
|
data-raw.d data-urlencode.d delegation.d digest.d disable.d \
|
||||||
|
@ -394,6 +402,7 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
|
||||||
remote-name-all.d remote-name.d remote-time.d request.d resolve.d \
|
remote-name-all.d remote-name.d remote-time.d request.d resolve.d \
|
||||||
retry-connrefused.d retry.d retry-delay.d retry-max-time.d sasl-ir.d \
|
retry-connrefused.d retry.d retry-delay.d retry-max-time.d sasl-ir.d \
|
||||||
service-name.d show-error.d silent.d socks4a.d socks4.d socks5.d \
|
service-name.d show-error.d silent.d socks4a.d socks4.d socks5.d \
|
||||||
|
socks5-basic.d socks5-gssapi.d \
|
||||||
socks5-gssapi-nec.d socks5-gssapi-service.d socks5-hostname.d \
|
socks5-gssapi-nec.d socks5-gssapi-service.d socks5-hostname.d \
|
||||||
speed-limit.d speed-time.d ssl-allow-beast.d ssl.d ssl-no-revoke.d \
|
speed-limit.d speed-time.d ssl-allow-beast.d ssl.d ssl-no-revoke.d \
|
||||||
ssl-reqd.d sslv2.d sslv3.d stderr.d suppress-connect-headers.d \
|
ssl-reqd.d sslv2.d sslv3.d stderr.d suppress-connect-headers.d \
|
||||||
|
@ -403,7 +412,7 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
|
||||||
tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d \
|
tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d \
|
||||||
tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d \
|
tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d \
|
||||||
unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d \
|
unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d \
|
||||||
verbose.d version.d write-out.d xattr.d
|
verbose.d version.d write-out.d xattr.d request-target.d
|
||||||
|
|
||||||
OTHERPAGES = page-footer page-header
|
OTHERPAGES = page-footer page-header
|
||||||
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
|
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
# Shared between Makefile.am and CMakeLists.txt
|
# Shared between Makefile.am and CMakeLists.txt
|
||||||
|
|
||||||
DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \
|
DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cert.d \
|
||||||
cert-status.d cert-type.d ciphers.d compressed.d config.d \
|
cert-status.d cert-type.d ciphers.d compressed.d compressed-ssh.d \
|
||||||
|
config.d \
|
||||||
connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \
|
connect-timeout.d connect-to.d continue-at.d cookie.d cookie-jar.d \
|
||||||
create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \
|
create-dirs.d crlf.d crlfile.d data-ascii.d data-binary.d data.d \
|
||||||
data-raw.d data-urlencode.d delegation.d digest.d disable.d \
|
data-raw.d data-urlencode.d delegation.d digest.d disable.d \
|
||||||
|
@ -33,6 +34,7 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
|
||||||
remote-name-all.d remote-name.d remote-time.d request.d resolve.d \
|
remote-name-all.d remote-name.d remote-time.d request.d resolve.d \
|
||||||
retry-connrefused.d retry.d retry-delay.d retry-max-time.d sasl-ir.d \
|
retry-connrefused.d retry.d retry-delay.d retry-max-time.d sasl-ir.d \
|
||||||
service-name.d show-error.d silent.d socks4a.d socks4.d socks5.d \
|
service-name.d show-error.d silent.d socks4a.d socks4.d socks5.d \
|
||||||
|
socks5-basic.d socks5-gssapi.d \
|
||||||
socks5-gssapi-nec.d socks5-gssapi-service.d socks5-hostname.d \
|
socks5-gssapi-nec.d socks5-gssapi-service.d socks5-hostname.d \
|
||||||
speed-limit.d speed-time.d ssl-allow-beast.d ssl.d ssl-no-revoke.d \
|
speed-limit.d speed-time.d ssl-allow-beast.d ssl.d ssl-no-revoke.d \
|
||||||
ssl-reqd.d sslv2.d sslv3.d stderr.d suppress-connect-headers.d \
|
ssl-reqd.d sslv2.d sslv3.d stderr.d suppress-connect-headers.d \
|
||||||
|
@ -42,6 +44,6 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
|
||||||
tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d \
|
tlsauthtype.d tlspassword.d tlsuser.d tlsv1.0.d tlsv1.1.d tlsv1.2.d \
|
||||||
tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d \
|
tlsv1.3.d tlsv1.d trace-ascii.d trace.d trace-time.d tr-encoding.d \
|
||||||
unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d \
|
unix-socket.d upload-file.d url.d use-ascii.d user-agent.d user.d \
|
||||||
verbose.d version.d write-out.d xattr.d
|
verbose.d version.d write-out.d xattr.d request-target.d
|
||||||
|
|
||||||
OTHERPAGES = page-footer page-header
|
OTHERPAGES = page-footer page-header
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Long: cacert
|
Long: cacert
|
||||||
Arg: <CA certificate>
|
Arg: <file>
|
||||||
Help: CA certificate to verify peer against
|
Help: CA certificate to verify peer against
|
||||||
Protocols: TLS
|
Protocols: TLS
|
||||||
---
|
---
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
Long: compressed-ssh
|
||||||
|
Help: Enable SSH compression
|
||||||
|
Protocols: SCP SFTP
|
||||||
|
Added: 7.56.0
|
||||||
|
---
|
||||||
|
Enables built-in SSH compression.
|
||||||
|
This is a request, not an order; the server may or may not do it.
|
|
@ -5,14 +5,17 @@ Added: 7.49.0
|
||||||
See-also: resolve header
|
See-also: resolve header
|
||||||
---
|
---
|
||||||
|
|
||||||
For a request to the given HOST:PORT pair, connect to
|
For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
|
||||||
CONNECT-TO-HOST:CONNECT-TO-PORT instead. This option is suitable to direct
|
This option is suitable to direct requests at a specific server, e.g. at a
|
||||||
requests at a specific server, e.g. at a specific cluster node in a cluster of
|
specific cluster node in a cluster of servers. This option is only used to
|
||||||
servers. This option is only used to establish the network connection. It
|
establish the network connection. It does NOT affect the hostname/port that is
|
||||||
does NOT affect the hostname/port that is used for TLS/SSL (e.g. SNI,
|
used for TLS/SSL (e.g. SNI, certificate verification) or for the application
|
||||||
certificate verification) or for the application protocols. "host" and "port"
|
protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
|
||||||
may be the empty string, meaning "any host/port". "connect-to-host" and
|
host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
|
||||||
"connect-to-port" may also be the empty string, meaning "use the request's
|
request's original host/port".
|
||||||
original host/port".
|
|
||||||
|
A "host" specified to this option is compared as a string, so it needs to
|
||||||
|
match the name used in request URL. It can be either numerical such as
|
||||||
|
"127.0.0.1" or the full host name such as "example.org".
|
||||||
|
|
||||||
This option can be used many times to add many connect rules.
|
This option can be used many times to add many connect rules.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Long: form-string
|
Long: form-string
|
||||||
Help: Specify HTTP multipart POST data
|
Help: Specify multipart MIME data
|
||||||
Protocols: HTTP
|
Protocols: HTTP SMTP IMAP
|
||||||
Arg: <name=string>
|
Arg: <name=string>
|
||||||
See-also: form
|
See-also: form
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,28 +1,36 @@
|
||||||
Long: form
|
Long: form
|
||||||
Short: F
|
Short: F
|
||||||
Arg: <name=content>
|
Arg: <name=content>
|
||||||
Help: Specify HTTP multipart POST data
|
Help: Specify multipart MIME data
|
||||||
Protocols: HTTP
|
Protocols: HTTP SMTP IMAP
|
||||||
Mutexed: data head upload
|
Mutexed: data head upload
|
||||||
---
|
---
|
||||||
This lets curl emulate a filled-in form in which a user has pressed the submit
|
For HTTP protocol family, this lets curl emulate a filled-in form in which a
|
||||||
button. This causes curl to POST data using the Content-Type
|
user has pressed the submit button. This causes curl to POST data using the
|
||||||
multipart/form-data according to RFC 2388. This enables uploading of binary
|
Content-Type multipart/form-data according to RFC 2388.
|
||||||
|
|
||||||
|
For SMTP and IMAP protocols, this is the mean to compose a multipart mail
|
||||||
|
message to transmit.
|
||||||
|
|
||||||
|
This enables uploading of binary
|
||||||
files etc. To force the 'content' part to be a file, prefix the file name with
|
files etc. To force the 'content' part to be a file, prefix the file name with
|
||||||
an @ sign. To just get the content part from a file, prefix the file name with
|
an @ sign. To just get the content part from a file, prefix the file name with
|
||||||
the symbol <. The difference between @ and < is then that @ makes a file get
|
the symbol <. The difference between @ and < is then that @ makes a file get
|
||||||
attached in the post as a file upload, while the < makes a text field and just
|
attached in the post as a file upload, while the < makes a text field and just
|
||||||
get the contents for that text field from a file.
|
get the contents for that text field from a file.
|
||||||
|
|
||||||
Example: to send an image to a server, where \&'profile' is the name of the
|
Example: to send an image to an HTTP server, where \&'profile' is the name of
|
||||||
form-field to which portrait.jpg will be the input:
|
the form-field to which portrait.jpg will be the input:
|
||||||
|
|
||||||
curl -F profile=@portrait.jpg https://example.com/upload.cgi
|
curl -F profile=@portrait.jpg https://example.com/upload.cgi
|
||||||
|
|
||||||
To read content from stdin instead of a file, use - as the filename. This goes
|
To read content from stdin instead of a file, use - as the filename. This goes
|
||||||
for both @ and < constructs. Unfortunately it does not support reading the
|
for both @ and < constructs. If stdin is not attached to a regular file, it is
|
||||||
file from a named pipe or similar, as it needs the full size before the
|
buffered first to determine its size and allow a possible resend. Defining a
|
||||||
transfer starts.
|
part's data from a named non-regular file (such as a named pipe or similar) is
|
||||||
|
unfortunately not subject to buffering and will be effectively read at
|
||||||
|
transmission time; since the full size is unknown before the transfer starts,
|
||||||
|
data is sent as chunks by HTTP and rejected by IMAP.
|
||||||
|
|
||||||
You can also tell curl what Content-Type to use by using 'type=', in a manner
|
You can also tell curl what Content-Type to use by using 'type=', in a manner
|
||||||
similar to:
|
similar to:
|
||||||
|
@ -49,6 +57,72 @@ or
|
||||||
Note that if a filename/path is quoted by double-quotes, any double-quote
|
Note that if a filename/path is quoted by double-quotes, any double-quote
|
||||||
or backslash within the filename must be escaped by backslash.
|
or backslash within the filename must be escaped by backslash.
|
||||||
|
|
||||||
|
Quoting must also be applied to non-file data if it contains semicolons,
|
||||||
|
leading/trailing spaces or leading double quotes:
|
||||||
|
|
||||||
|
curl -F 'colors="red; green; blue";type=text/x-myapp' example.com
|
||||||
|
|
||||||
|
You can add custom headers to the field by setting headers=, like
|
||||||
|
|
||||||
|
curl -F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
curl -F "submit=OK;headers=@headerfile" example.com
|
||||||
|
|
||||||
|
The headers= keyword may appear more that once and above notes about quoting
|
||||||
|
apply. When headers are read from a file, Empty lines and lines starting
|
||||||
|
with '#' are comments and ignored; each header can be folded by splitting
|
||||||
|
between two words and starting the continuation line with a space; embedded
|
||||||
|
carriage-returns and trailing spaces are stripped.
|
||||||
|
Here is an example of a header file contents:
|
||||||
|
|
||||||
|
# This file contain two headers.
|
||||||
|
.br
|
||||||
|
X-header-1: this is a header
|
||||||
|
|
||||||
|
# The following header is folded.
|
||||||
|
.br
|
||||||
|
X-header-2: this is
|
||||||
|
.br
|
||||||
|
another header
|
||||||
|
|
||||||
|
|
||||||
|
To support sending multipart mail messages, the syntax is extended as follows:
|
||||||
|
.br
|
||||||
|
- name can be omitted: the equal sign is the first character of the argument,
|
||||||
|
.br
|
||||||
|
- if data starts with '(', this signals to start a new multipart: it can be
|
||||||
|
followed by a content type specification.
|
||||||
|
.br
|
||||||
|
- a multipart can be terminated with a '=)' argument.
|
||||||
|
|
||||||
|
Example: the following command sends an SMTP mime e-mail consisting in an
|
||||||
|
inline part in two alternative formats: plain text and HTML. It attaches a
|
||||||
|
text file:
|
||||||
|
|
||||||
|
curl -F '=(;type=multipart/alternative' \\
|
||||||
|
.br
|
||||||
|
-F '=plain text message' \\
|
||||||
|
.br
|
||||||
|
-F '= <body>HTML message</body>;type=text/html' \\
|
||||||
|
.br
|
||||||
|
-F '=)' -F '=@textfile.txt' ... smtp://example.com
|
||||||
|
|
||||||
|
Data can be encoded for transfer using encoder=. Available encodings are
|
||||||
|
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
|
||||||
|
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
|
||||||
|
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes
|
||||||
|
data according to the corresponding schemes, limiting lines length to
|
||||||
|
76 characters.
|
||||||
|
|
||||||
|
Example: send multipart mail with a quoted-printable text message and a
|
||||||
|
base64 attached file:
|
||||||
|
|
||||||
|
curl -F '=text message;encoder=quoted-printable' \\
|
||||||
|
.br
|
||||||
|
-F '=@localfile;encoder=base64' ... smtp://example.com
|
||||||
|
|
||||||
See further examples and details in the MANUAL.
|
See further examples and details in the MANUAL.
|
||||||
|
|
||||||
This option can be used multiple times.
|
This option can be used multiple times.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
=begin comment
|
=begin comment
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
Long: header
|
Long: header
|
||||||
Short: H
|
Short: H
|
||||||
Arg: <header>
|
Arg: <header/@file>
|
||||||
Help: Pass custom header LINE to server
|
Help: Pass custom header(s) to server
|
||||||
Protocols: HTTP
|
Protocols: HTTP
|
||||||
---
|
---
|
||||||
|
|
||||||
Extra header to include in the request when sending HTTP to a server. You may
|
Extra header to include in the request when sending HTTP to a server. You may
|
||||||
specify any number of extra headers. Note that if you should add a custom
|
specify any number of extra headers. Note that if you should add a custom
|
||||||
header that has the same name as one of the internal ones curl would use, your
|
header that has the same name as one of the internal ones curl would use, your
|
||||||
|
@ -21,6 +20,10 @@ end-of-line marker, you should thus \fBnot\fP add that as a part of the header
|
||||||
content: do not add newlines or carriage returns, they will only mess things up
|
content: do not add newlines or carriage returns, they will only mess things up
|
||||||
for you.
|
for you.
|
||||||
|
|
||||||
|
Starting in 7.55.0, this option can take an argument in @filename style, which
|
||||||
|
then adds a header for each line in the input file. Using @- will make curl
|
||||||
|
read the header file from stdin.
|
||||||
|
|
||||||
See also the --user-agent and --referer options.
|
See also the --user-agent and --referer options.
|
||||||
|
|
||||||
Starting in 7.37.0, you need --proxy-header to send custom headers intended
|
Starting in 7.37.0, you need --proxy-header to send custom headers intended
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
Long: include
|
Long: include
|
||||||
Short: i
|
Short: i
|
||||||
Help: Include protocol headers in the output
|
Help: Include protocol response headers in the output
|
||||||
See-also: verbose
|
See-also: verbose
|
||||||
---
|
---
|
||||||
Include the HTTP-header in the output. The HTTP-header includes things like
|
Include the HTTP response headers in the output. The HTTP response headers can
|
||||||
server-name, date of the document, HTTP-version and more...
|
include things like server name, cookies, date of the document, HTTP version
|
||||||
|
and more...
|
||||||
|
|
||||||
|
To view the request headers, consider the --verbose option.
|
||||||
|
|
|
@ -10,3 +10,7 @@ name, IP address or host name. An example could look like:
|
||||||
curl --interface eth0:1 https://www.example.com/
|
curl --interface eth0:1 https://www.example.com/
|
||||||
|
|
||||||
If this option is used several times, the last one will be used.
|
If this option is used several times, the last one will be used.
|
||||||
|
|
||||||
|
On Linux it can be used to specify a VRF, but the binary needs to either
|
||||||
|
have CAP_NET_RAW or to be ran as root. More information about Linux VRF:
|
||||||
|
https://www.kernel.org/doc/Documentation/networking/vrf.txt
|
||||||
|
|
|
@ -8,7 +8,7 @@ your transfer not to use your entire bandwidth. To make it slower than it
|
||||||
otherwise would be.
|
otherwise would be.
|
||||||
|
|
||||||
The given speed is measured in bytes/second, unless a suffix is appended.
|
The given speed is measured in bytes/second, unless a suffix is appended.
|
||||||
Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it
|
Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
|
||||||
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
|
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
|
||||||
|
|
||||||
If you also use the --speed-limit option, that option will take precedence and
|
If you also use the --speed-limit option, that option will take precedence and
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Long: mail-rcpt
|
Long: mail-rcpt
|
||||||
Arg: <address>
|
Arg: <address>
|
||||||
Help: Mail from this address
|
Help: Mail to this address
|
||||||
Protocols: SMTP
|
Protocols: SMTP
|
||||||
Added: 7.20.0
|
Added: 7.20.0
|
||||||
---
|
---
|
||||||
|
|
|
@ -7,6 +7,10 @@ Specify the maximum size (in bytes) of a file to download. If the file
|
||||||
requested is larger than this value, the transfer will not start and curl will
|
requested is larger than this value, the transfer will not start and curl will
|
||||||
return with exit code 63.
|
return with exit code 63.
|
||||||
|
|
||||||
|
A size modifier may be used. For example, Appending 'k' or 'K' will count the
|
||||||
|
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
|
||||||
|
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)
|
||||||
|
|
||||||
\fBNOTE:\fP The file size is not always known prior to download, and for such
|
\fBNOTE:\fP The file size is not always known prior to download, and for such
|
||||||
files this option has no effect even if the file transfer ends up being larger
|
files this option has no effect even if the file transfer ends up being larger
|
||||||
than this given limit. This concerns both FTP and HTTP transfers.
|
than this given limit. This concerns both FTP and HTTP transfers.
|
||||||
|
|
|
@ -41,6 +41,10 @@ If no protocol is specified in the proxy string or if the string doesn't match
|
||||||
a supported one, the proxy will be treated as an HTTP proxy.
|
a supported one, the proxy will be treated as an HTTP proxy.
|
||||||
|
|
||||||
The supported proxy protocol prefixes are as follows:
|
The supported proxy protocol prefixes are as follows:
|
||||||
|
.IP "http://"
|
||||||
|
Makes it use it as a HTTP proxy. The default if no scheme prefix is used.
|
||||||
|
.IP "https://"
|
||||||
|
Makes it treated as a \fBHTTPS\fP proxy.
|
||||||
.IP "socks4://"
|
.IP "socks4://"
|
||||||
Makes it the equivalent of --socks4
|
Makes it the equivalent of --socks4
|
||||||
.IP "socks4a://"
|
.IP "socks4a://"
|
||||||
|
@ -231,6 +235,10 @@ FTP chunk callback reported error
|
||||||
No connection available, the session will be queued
|
No connection available, the session will be queued
|
||||||
.IP 90
|
.IP 90
|
||||||
SSL public key does not matched pinned public key
|
SSL public key does not matched pinned public key
|
||||||
|
.IP 91
|
||||||
|
Invalid SSL certificate status.
|
||||||
|
.IP 92
|
||||||
|
Stream error in HTTP/2 framing layer.
|
||||||
.IP XX
|
.IP XX
|
||||||
More error codes will appear here in future releases. The existing ones
|
More error codes will appear here in future releases. The existing ones
|
||||||
are meant to never change.
|
are meant to never change.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Long: proxy-header
|
Long: proxy-header
|
||||||
Arg: <header>
|
Arg: <header/@file>
|
||||||
Help: Pass custom header LINE to proxy
|
Help: Pass custom header(s) to proxy
|
||||||
Protocols: HTTP
|
Protocols: HTTP
|
||||||
Added: 7.37.0
|
Added: 7.37.0
|
||||||
---
|
---
|
||||||
|
@ -17,4 +17,8 @@ up for you.
|
||||||
Headers specified with this option will not be included in requests that curl
|
Headers specified with this option will not be included in requests that curl
|
||||||
knows will not be sent to a proxy.
|
knows will not be sent to a proxy.
|
||||||
|
|
||||||
|
Starting in 7.55.0, this option can take an argument in @filename style, which
|
||||||
|
then adds a header for each line in the input file. Using @- will make curl
|
||||||
|
read the header file from stdin.
|
||||||
|
|
||||||
This option can be used multiple times to add/replace/remove multiple headers.
|
This option can be used multiple times to add/replace/remove multiple headers.
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
Long: request-target
|
||||||
|
Help: Specify the target for this request
|
||||||
|
Protocols: HTTP
|
||||||
|
Added: 7.55.0
|
||||||
|
---
|
||||||
|
Tells curl to use an alternative "target" (path) instead of using the path as
|
||||||
|
provided in the URL. Particularly useful when wanting to issue HTTP requests
|
||||||
|
without leading slash or other data that doesn't follow the regular URL
|
||||||
|
pattern, like "OPTIONS *".
|
|
@ -14,4 +14,6 @@ different ports.
|
||||||
The provided address set by this option will be used even if --ipv4 or --ipv6
|
The provided address set by this option will be used even if --ipv4 or --ipv6
|
||||||
is set to make curl use another IP version.
|
is set to make curl use another IP version.
|
||||||
|
|
||||||
|
Support for providing the IP address within [brackets] was added in 7.57.0.
|
||||||
|
|
||||||
This option can be used many times to add many host names to resolve.
|
This option can be used many times to add many host names to resolve.
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
Long: socks5-basic
|
||||||
|
Help: Enable username/password auth for SOCKS5 proxies
|
||||||
|
Added: 7.55.0
|
||||||
|
---
|
||||||
|
Tells curl to use username/password authentication when connecting to a SOCKS5
|
||||||
|
proxy. The username/password authentication is enabled by default. Use
|
||||||
|
--socks5-gssapi to force GSS-API authentication to SOCKS5 proxies.
|
|
@ -0,0 +1,8 @@
|
||||||
|
Long: socks5-gssapi
|
||||||
|
Help: Enable GSS-API auth for SOCKS5 proxies
|
||||||
|
Added: 7.55.0
|
||||||
|
---
|
||||||
|
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
|
||||||
|
The GSS-API authentication is enabled by default (if curl is compiled with
|
||||||
|
GSS-API support). Use --socks5-basic to force username/password authentication
|
||||||
|
to SOCKS5 proxies.
|
|
@ -6,4 +6,5 @@ Added: 7.52.0
|
||||||
Forces curl to use TLS version 1.3 when connecting to a remote TLS server.
|
Forces curl to use TLS version 1.3 when connecting to a remote TLS server.
|
||||||
|
|
||||||
Note that TLS 1.3 is only supported by a subset of TLS backends. At the time
|
Note that TLS 1.3 is only supported by a subset of TLS backends. At the time
|
||||||
of writing this, those are BoringSSL and NSS only.
|
of this writing, they are BoringSSL, NSS, and Secure Transport (on iOS 11 or
|
||||||
|
later, and macOS 10.13 or later).
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.\" * | (__| |_| | _ <| |___
|
.\" * | (__| |_| | _ <| |___
|
||||||
.\" * \___|\___/|_| \_\_____|
|
.\" * \___|\___/|_| \_\_____|
|
||||||
.\" *
|
.\" *
|
||||||
.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
.\" *
|
.\" *
|
||||||
.\" * This software is licensed as described in the file COPYING, which
|
.\" * This software is licensed as described in the file COPYING, which
|
||||||
.\" * you should have received as part of this distribution. The terms
|
.\" * you should have received as part of this distribution. The terms
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
.\" *
|
.\" *
|
||||||
.\" **************************************************************************
|
.\" **************************************************************************
|
||||||
.\"
|
.\"
|
||||||
.TH curl-config 1 "February 03, 2016" "Curl 5.5.5" "curl-config manual"
|
.TH curl-config 1 "November 30, 2017" "Curl 7.58.0" "curl-config manual"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
curl-config \- Get information about a libcurl installation
|
curl-config \- Get information about a libcurl installation
|
||||||
|
@ -64,6 +64,10 @@ the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
|
||||||
TELNET, LDAP, DICT. Do not assume any particular order. The protocols will
|
TELNET, LDAP, DICT. Do not assume any particular order. The protocols will
|
||||||
be listed using uppercase and are separated by newlines. There may be none,
|
be listed using uppercase and are separated by newlines. There may be none,
|
||||||
one, or several protocols in the list. (Added in 7.13.0)
|
one, or several protocols in the list. (Added in 7.13.0)
|
||||||
|
.IP "--ssl-backends"
|
||||||
|
Lists the SSL backends that were enabled when libcurl was built. It might be
|
||||||
|
no, one or several names. If more than one name, they will appear
|
||||||
|
comma-separated. (Added in 7.58.0)
|
||||||
.IP "--static-libs"
|
.IP "--static-libs"
|
||||||
Shows the complete set of libs and other linker options you will need in order
|
Shows the complete set of libs and other linker options you will need in order
|
||||||
to link your application with libcurl statically. (Added in 7.17.1)
|
to link your application with libcurl statically. (Added in 7.17.1)
|
||||||
|
|
187
curl/docs/curl.1
187
curl/docs/curl.1
|
@ -22,7 +22,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
|
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
|
||||||
.\"
|
.\"
|
||||||
.TH curl 1 "November 16, 2016" "Curl 7.54.1" "Curl Manual"
|
.TH curl 1 "November 16, 2016" "Curl 7.58.0" "Curl Manual"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
curl \- transfer a URL
|
curl \- transfer a URL
|
||||||
|
@ -174,7 +174,7 @@ previously set option that sets a different authentication method (such as
|
||||||
Used together with \fI-u, --user\fP.
|
Used together with \fI-u, --user\fP.
|
||||||
|
|
||||||
See also \fI--proxy-basic\fP.
|
See also \fI--proxy-basic\fP.
|
||||||
.IP "--cacert <CA certificate>"
|
.IP "--cacert <file>"
|
||||||
(TLS) Tells curl to use the specified certificate file to verify the peer. The file
|
(TLS) Tells curl to use the specified certificate file to verify the peer. The file
|
||||||
may contain multiple CA certificates. The certificate(s) must be in PEM
|
may contain multiple CA certificates. The certificate(s) must be in PEM
|
||||||
format. Normally curl is built to use a default file for this, so this option
|
format. Normally curl is built to use a default file for this, so this option
|
||||||
|
@ -262,6 +262,11 @@ specify valid ciphers. Read up on SSL cipher list details on this URL:
|
||||||
https://curl.haxx.se/docs/ssl-ciphers.html
|
https://curl.haxx.se/docs/ssl-ciphers.html
|
||||||
|
|
||||||
If this option is used several times, the last one will be used.
|
If this option is used several times, the last one will be used.
|
||||||
|
.IP "--compressed-ssh"
|
||||||
|
(SCP SFTP) Enables built-in SSH compression.
|
||||||
|
This is a request, not an order; the server may or may not do it.
|
||||||
|
|
||||||
|
Added in 7.56.0.
|
||||||
.IP "--compressed"
|
.IP "--compressed"
|
||||||
(HTTP) Request a compressed response using one of the algorithms curl supports, and
|
(HTTP) Request a compressed response using one of the algorithms curl supports, and
|
||||||
save the uncompressed document. If this option is used and the server sends
|
save the uncompressed document. If this option is used and the server sends
|
||||||
|
@ -334,15 +339,18 @@ If this option is used several times, the last one will be used.
|
||||||
See also \fI-m, --max-time\fP.
|
See also \fI-m, --max-time\fP.
|
||||||
.IP "--connect-to <HOST1:PORT1:HOST2:PORT2>"
|
.IP "--connect-to <HOST1:PORT1:HOST2:PORT2>"
|
||||||
|
|
||||||
For a request to the given HOST:PORT pair, connect to
|
For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
|
||||||
CONNECT-TO-HOST:CONNECT-TO-PORT instead. This option is suitable to direct
|
This option is suitable to direct requests at a specific server, e.g. at a
|
||||||
requests at a specific server, e.g. at a specific cluster node in a cluster of
|
specific cluster node in a cluster of servers. This option is only used to
|
||||||
servers. This option is only used to establish the network connection. It
|
establish the network connection. It does NOT affect the hostname/port that is
|
||||||
does NOT affect the hostname/port that is used for TLS/SSL (e.g. SNI,
|
used for TLS/SSL (e.g. SNI, certificate verification) or for the application
|
||||||
certificate verification) or for the application protocols. "host" and "port"
|
protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
|
||||||
may be the empty string, meaning "any host/port". "connect-to-host" and
|
host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
|
||||||
"connect-to-port" may also be the empty string, meaning "use the request's
|
request's original host/port".
|
||||||
original host/port".
|
|
||||||
|
A "host" specified to this option is compared as a string, so it needs to
|
||||||
|
match the name used in request URL. It can be either numerical such as
|
||||||
|
"127.0.0.1" or the full host name such as "example.org".
|
||||||
|
|
||||||
This option can be used many times to add many connect rules.
|
This option can be used many times to add many connect rules.
|
||||||
|
|
||||||
|
@ -646,7 +654,7 @@ or later, or OS X 10.9 or later) backends.
|
||||||
|
|
||||||
Added in 7.42.0.
|
Added in 7.42.0.
|
||||||
.IP "--form-string <name=string>"
|
.IP "--form-string <name=string>"
|
||||||
(HTTP) Similar to \fI-F, --form\fP except that the value string for the named parameter is used
|
(HTTP SMTP IMAP) Similar to \fI-F, --form\fP except that the value string for the named parameter is used
|
||||||
literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
|
literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
|
||||||
the value have no special meaning. Use this in preference to \fI-F, --form\fP if
|
the value have no special meaning. Use this in preference to \fI-F, --form\fP if
|
||||||
there's any possibility that the string value may accidentally trigger the
|
there's any possibility that the string value may accidentally trigger the
|
||||||
|
@ -654,24 +662,32 @@ there's any possibility that the string value may accidentally trigger the
|
||||||
|
|
||||||
See also \fI-F, --form\fP.
|
See also \fI-F, --form\fP.
|
||||||
.IP "-F, --form <name=content>"
|
.IP "-F, --form <name=content>"
|
||||||
(HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit
|
(HTTP SMTP IMAP) For HTTP protocol family, this lets curl emulate a filled-in form in which a
|
||||||
button. This causes curl to POST data using the Content-Type
|
user has pressed the submit button. This causes curl to POST data using the
|
||||||
multipart/form-data according to RFC 2388. This enables uploading of binary
|
Content-Type multipart/form-data according to RFC 2388.
|
||||||
|
|
||||||
|
For SMTP and IMAP protocols, this is the mean to compose a multipart mail
|
||||||
|
message to transmit.
|
||||||
|
|
||||||
|
This enables uploading of binary
|
||||||
files etc. To force the 'content' part to be a file, prefix the file name with
|
files etc. To force the 'content' part to be a file, prefix the file name with
|
||||||
an @ sign. To just get the content part from a file, prefix the file name with
|
an @ sign. To just get the content part from a file, prefix the file name with
|
||||||
the symbol <. The difference between @ and < is then that @ makes a file get
|
the symbol <. The difference between @ and < is then that @ makes a file get
|
||||||
attached in the post as a file upload, while the < makes a text field and just
|
attached in the post as a file upload, while the < makes a text field and just
|
||||||
get the contents for that text field from a file.
|
get the contents for that text field from a file.
|
||||||
|
|
||||||
Example: to send an image to a server, where \&'profile' is the name of the
|
Example: to send an image to an HTTP server, where \&'profile' is the name of
|
||||||
form-field to which portrait.jpg will be the input:
|
the form-field to which portrait.jpg will be the input:
|
||||||
|
|
||||||
curl -F profile=@portrait.jpg https://example.com/upload.cgi
|
curl -F profile=@portrait.jpg https://example.com/upload.cgi
|
||||||
|
|
||||||
To read content from stdin instead of a file, use - as the filename. This goes
|
To read content from stdin instead of a file, use - as the filename. This goes
|
||||||
for both @ and < constructs. Unfortunately it does not support reading the
|
for both @ and < constructs. If stdin is not attached to a regular file, it is
|
||||||
file from a named pipe or similar, as it needs the full size before the
|
buffered first to determine its size and allow a possible resend. Defining a
|
||||||
transfer starts.
|
part's data from a named non-regular file (such as a named pipe or similar) is
|
||||||
|
unfortunately not subject to buffering and will be effectively read at
|
||||||
|
transmission time; since the full size is unknown before the transfer starts,
|
||||||
|
data is sent as chunks by HTTP and rejected by IMAP.
|
||||||
|
|
||||||
You can also tell curl what Content-Type to use by using 'type=', in a manner
|
You can also tell curl what Content-Type to use by using 'type=', in a manner
|
||||||
similar to:
|
similar to:
|
||||||
|
@ -698,6 +714,72 @@ or
|
||||||
Note that if a filename/path is quoted by double-quotes, any double-quote
|
Note that if a filename/path is quoted by double-quotes, any double-quote
|
||||||
or backslash within the filename must be escaped by backslash.
|
or backslash within the filename must be escaped by backslash.
|
||||||
|
|
||||||
|
Quoting must also be applied to non-file data if it contains semicolons,
|
||||||
|
leading/trailing spaces or leading double quotes:
|
||||||
|
|
||||||
|
curl -F 'colors="red; green; blue";type=text/x-myapp' example.com
|
||||||
|
|
||||||
|
You can add custom headers to the field by setting headers=, like
|
||||||
|
|
||||||
|
curl -F "submit=OK;headers=\\"X-submit-type: OK\\"" example.com
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
curl -F "submit=OK;headers=@headerfile" example.com
|
||||||
|
|
||||||
|
The headers= keyword may appear more that once and above notes about quoting
|
||||||
|
apply. When headers are read from a file, Empty lines and lines starting
|
||||||
|
with '#' are comments and ignored; each header can be folded by splitting
|
||||||
|
between two words and starting the continuation line with a space; embedded
|
||||||
|
carriage-returns and trailing spaces are stripped.
|
||||||
|
Here is an example of a header file contents:
|
||||||
|
|
||||||
|
# This file contain two headers.
|
||||||
|
.br
|
||||||
|
X-header-1: this is a header
|
||||||
|
|
||||||
|
# The following header is folded.
|
||||||
|
.br
|
||||||
|
X-header-2: this is
|
||||||
|
.br
|
||||||
|
another header
|
||||||
|
|
||||||
|
|
||||||
|
To support sending multipart mail messages, the syntax is extended as follows:
|
||||||
|
.br
|
||||||
|
- name can be omitted: the equal sign is the first character of the argument,
|
||||||
|
.br
|
||||||
|
- if data starts with '(', this signals to start a new multipart: it can be
|
||||||
|
followed by a content type specification.
|
||||||
|
.br
|
||||||
|
- a multipart can be terminated with a '=)' argument.
|
||||||
|
|
||||||
|
Example: the following command sends an SMTP mime e-mail consisting in an
|
||||||
|
inline part in two alternative formats: plain text and HTML. It attaches a
|
||||||
|
text file:
|
||||||
|
|
||||||
|
curl -F '=(;type=multipart/alternative' \\
|
||||||
|
.br
|
||||||
|
-F '=plain text message' \\
|
||||||
|
.br
|
||||||
|
-F '= <body>HTML message</body>;type=text/html' \\
|
||||||
|
.br
|
||||||
|
-F '=)' -F '=@textfile.txt' ... smtp://example.com
|
||||||
|
|
||||||
|
Data can be encoded for transfer using encoder=. Available encodings are
|
||||||
|
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
|
||||||
|
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
|
||||||
|
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes
|
||||||
|
data according to the corresponding schemes, limiting lines length to
|
||||||
|
76 characters.
|
||||||
|
|
||||||
|
Example: send multipart mail with a quoted-printable text message and a
|
||||||
|
base64 attached file:
|
||||||
|
|
||||||
|
curl -F '=text message;encoder=quoted-printable' \\
|
||||||
|
.br
|
||||||
|
-F '=@localfile;encoder=base64' ... smtp://example.com
|
||||||
|
|
||||||
See further examples and details in the MANUAL.
|
See further examples and details in the MANUAL.
|
||||||
|
|
||||||
This option can be used multiple times.
|
This option can be used multiple times.
|
||||||
|
@ -838,9 +920,8 @@ contents but they should be encoded according to the URI standard.
|
||||||
(HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the command HEAD which this uses
|
(HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the command HEAD which this uses
|
||||||
to get nothing but the header of a document. When used on an FTP or FILE file,
|
to get nothing but the header of a document. When used on an FTP or FILE file,
|
||||||
curl displays the file size and last modification time only.
|
curl displays the file size and last modification time only.
|
||||||
.IP "-H, --header <header>"
|
.IP "-H, --header <header/@file>"
|
||||||
(HTTP)
|
(HTTP) Extra header to include in the request when sending HTTP to a server. You may
|
||||||
Extra header to include in the request when sending HTTP to a server. You may
|
|
||||||
specify any number of extra headers. Note that if you should add a custom
|
specify any number of extra headers. Note that if you should add a custom
|
||||||
header that has the same name as one of the internal ones curl would use, your
|
header that has the same name as one of the internal ones curl would use, your
|
||||||
externally set header will be used instead of the internal one. This allows
|
externally set header will be used instead of the internal one. This allows
|
||||||
|
@ -856,6 +937,10 @@ end-of-line marker, you should thus \fBnot\fP add that as a part of the header
|
||||||
content: do not add newlines or carriage returns, they will only mess things up
|
content: do not add newlines or carriage returns, they will only mess things up
|
||||||
for you.
|
for you.
|
||||||
|
|
||||||
|
Starting in 7.55.0, this option can take an argument in @filename style, which
|
||||||
|
then adds a header for each line in the input file. Using @- will make curl
|
||||||
|
read the header file from stdin.
|
||||||
|
|
||||||
See also the \fI-A, --user-agent\fP and \fI-e, --referer\fP options.
|
See also the \fI-A, --user-agent\fP and \fI-e, --referer\fP options.
|
||||||
|
|
||||||
Starting in 7.37.0, you need \fI--proxy-header\fP to send custom headers intended
|
Starting in 7.37.0, you need \fI--proxy-header\fP to send custom headers intended
|
||||||
|
@ -908,8 +993,11 @@ files larger than 2 gigabytes.
|
||||||
For FTP (since 7.46.0), skip the RETR command to figure out the size before
|
For FTP (since 7.46.0), skip the RETR command to figure out the size before
|
||||||
downloading a file.
|
downloading a file.
|
||||||
.IP "-i, --include"
|
.IP "-i, --include"
|
||||||
Include the HTTP-header in the output. The HTTP-header includes things like
|
Include the HTTP response headers in the output. The HTTP response headers can
|
||||||
server-name, date of the document, HTTP-version and more...
|
include things like server name, cookies, date of the document, HTTP version
|
||||||
|
and more...
|
||||||
|
|
||||||
|
To view the request headers, consider the \fI-v, --verbose\fP option.
|
||||||
|
|
||||||
See also \fI-v, --verbose\fP.
|
See also \fI-v, --verbose\fP.
|
||||||
.IP "-k, --insecure"
|
.IP "-k, --insecure"
|
||||||
|
@ -934,6 +1022,10 @@ name, IP address or host name. An example could look like:
|
||||||
|
|
||||||
If this option is used several times, the last one will be used.
|
If this option is used several times, the last one will be used.
|
||||||
|
|
||||||
|
On Linux it can be used to specify a VRF, but the binary needs to either
|
||||||
|
have CAP_NET_RAW or to be ran as root. More information about Linux VRF:
|
||||||
|
https://www.kernel.org/doc/Documentation/networking/vrf.txt
|
||||||
|
|
||||||
See also \fI--dns-interface\fP.
|
See also \fI--dns-interface\fP.
|
||||||
.IP "-4, --ipv4"
|
.IP "-4, --ipv4"
|
||||||
This option tells curl to resolve names to IPv4 addresses only, and not for
|
This option tells curl to resolve names to IPv4 addresses only, and not for
|
||||||
|
@ -998,7 +1090,7 @@ your transfer not to use your entire bandwidth. To make it slower than it
|
||||||
otherwise would be.
|
otherwise would be.
|
||||||
|
|
||||||
The given speed is measured in bytes/second, unless a suffix is appended.
|
The given speed is measured in bytes/second, unless a suffix is appended.
|
||||||
Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it
|
Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
|
||||||
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
|
megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
|
||||||
|
|
||||||
If you also use the \fI-Y, --speed-limit\fP option, that option will take precedence and
|
If you also use the \fI-Y, --speed-limit\fP option, that option will take precedence and
|
||||||
|
@ -1104,6 +1196,10 @@ Specify the maximum size (in bytes) of a file to download. If the file
|
||||||
requested is larger than this value, the transfer will not start and curl will
|
requested is larger than this value, the transfer will not start and curl will
|
||||||
return with exit code 63.
|
return with exit code 63.
|
||||||
|
|
||||||
|
A size modifier may be used. For example, Appending 'k' or 'K' will count the
|
||||||
|
number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
|
||||||
|
gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)
|
||||||
|
|
||||||
\fBNOTE:\fP The file size is not always known prior to download, and for such
|
\fBNOTE:\fP The file size is not always known prior to download, and for such
|
||||||
files this option has no effect even if the file transfer ends up being larger
|
files this option has no effect even if the file transfer ends up being larger
|
||||||
than this given limit. This concerns both FTP and HTTP transfers.
|
than this given limit. This concerns both FTP and HTTP transfers.
|
||||||
|
@ -1509,7 +1605,7 @@ Tells curl to use HTTP Digest authentication when communicating with the given
|
||||||
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
|
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
|
||||||
|
|
||||||
See also \fI-x, --proxy\fP and \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
|
See also \fI-x, --proxy\fP and \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
|
||||||
.IP "--proxy-header <header>"
|
.IP "--proxy-header <header/@file>"
|
||||||
(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
|
(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
|
||||||
specify any number of extra headers. This is the equivalent option to \fI-H, --header\fP
|
specify any number of extra headers. This is the equivalent option to \fI-H, --header\fP
|
||||||
but is for proxy communication only like in CONNECT requests when you want a
|
but is for proxy communication only like in CONNECT requests when you want a
|
||||||
|
@ -1523,6 +1619,10 @@ up for you.
|
||||||
Headers specified with this option will not be included in requests that curl
|
Headers specified with this option will not be included in requests that curl
|
||||||
knows will not be sent to a proxy.
|
knows will not be sent to a proxy.
|
||||||
|
|
||||||
|
Starting in 7.55.0, this option can take an argument in @filename style, which
|
||||||
|
then adds a header for each line in the input file. Using @- will make curl
|
||||||
|
read the header file from stdin.
|
||||||
|
|
||||||
This option can be used multiple times to add/replace/remove multiple headers.
|
This option can be used multiple times to add/replace/remove multiple headers.
|
||||||
|
|
||||||
Added in 7.37.0.
|
Added in 7.37.0.
|
||||||
|
@ -1802,6 +1902,13 @@ You may use this option as many times as the number of URLs you have.
|
||||||
When used, this will make curl attempt to figure out the timestamp of the
|
When used, this will make curl attempt to figure out the timestamp of the
|
||||||
remote file, and if that is available make the local file get that same
|
remote file, and if that is available make the local file get that same
|
||||||
timestamp.
|
timestamp.
|
||||||
|
.IP "--request-target"
|
||||||
|
(HTTP) Tells curl to use an alternative "target" (path) instead of using the path as
|
||||||
|
provided in the URL. Particularly useful when wanting to issue HTTP requests
|
||||||
|
without leading slash or other data that doesn't follow the regular URL
|
||||||
|
pattern, like "OPTIONS *".
|
||||||
|
|
||||||
|
Added in 7.55.0.
|
||||||
.IP "-X, --request <command>"
|
.IP "-X, --request <command>"
|
||||||
(HTTP) Specifies a custom request method to use when communicating with the
|
(HTTP) Specifies a custom request method to use when communicating with the
|
||||||
HTTP server. The specified request method will be used instead of the method
|
HTTP server. The specified request method will be used instead of the method
|
||||||
|
@ -1849,6 +1956,8 @@ different ports.
|
||||||
The provided address set by this option will be used even if \fI-4, --ipv4\fP or \fI-6, --ipv6\fP
|
The provided address set by this option will be used even if \fI-4, --ipv4\fP or \fI-6, --ipv6\fP
|
||||||
is set to make curl use another IP version.
|
is set to make curl use another IP version.
|
||||||
|
|
||||||
|
Support for providing the IP address within [brackets] was added in 7.57.0.
|
||||||
|
|
||||||
This option can be used many times to add many host names to resolve.
|
This option can be used many times to add many host names to resolve.
|
||||||
|
|
||||||
Added in 7.21.3.
|
Added in 7.21.3.
|
||||||
|
@ -1947,6 +2056,12 @@ the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
|
||||||
If this option is used several times, the last one will be used.
|
If this option is used several times, the last one will be used.
|
||||||
|
|
||||||
Added in 7.18.0.
|
Added in 7.18.0.
|
||||||
|
.IP "--socks5-basic"
|
||||||
|
Tells curl to use username/password authentication when connecting to a SOCKS5
|
||||||
|
proxy. The username/password authentication is enabled by default. Use
|
||||||
|
\fI--socks5-gssapi\fP to force GSS-API authentication to SOCKS5 proxies.
|
||||||
|
|
||||||
|
Added in 7.55.0.
|
||||||
.IP "--socks5-gssapi-nec"
|
.IP "--socks5-gssapi-nec"
|
||||||
As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
|
As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
|
||||||
says in section 4.3/4.4 it should be protected, but the NEC reference
|
says in section 4.3/4.4 it should be protected, but the NEC reference
|
||||||
|
@ -1964,6 +2079,13 @@ would use sockd/real-name for cases where the proxy-name does not match the
|
||||||
principal name.
|
principal name.
|
||||||
|
|
||||||
Added in 7.19.4.
|
Added in 7.19.4.
|
||||||
|
.IP "--socks5-gssapi"
|
||||||
|
Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
|
||||||
|
The GSS-API authentication is enabled by default (if curl is compiled with
|
||||||
|
GSS-API support). Use \fI--socks5-basic\fP to force username/password authentication
|
||||||
|
to SOCKS5 proxies.
|
||||||
|
|
||||||
|
Added in 7.55.0.
|
||||||
.IP "--socks5-hostname <host[:port]>"
|
.IP "--socks5-hostname <host[:port]>"
|
||||||
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
|
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
|
||||||
the port number is not specified, it is assumed at port 1080.
|
the port number is not specified, it is assumed at port 1080.
|
||||||
|
@ -2170,7 +2292,8 @@ Added in 7.34.0.
|
||||||
(TLS) Forces curl to use TLS version 1.3 when connecting to a remote TLS server.
|
(TLS) Forces curl to use TLS version 1.3 when connecting to a remote TLS server.
|
||||||
|
|
||||||
Note that TLS 1.3 is only supported by a subset of TLS backends. At the time
|
Note that TLS 1.3 is only supported by a subset of TLS backends. At the time
|
||||||
of writing this, those are BoringSSL and NSS only.
|
of this writing, they are BoringSSL, NSS, and Secure Transport (on iOS 11 or
|
||||||
|
later, and macOS 10.13 or later).
|
||||||
|
|
||||||
Added in 7.52.0.
|
Added in 7.52.0.
|
||||||
.IP "-1, --tlsv1"
|
.IP "-1, --tlsv1"
|
||||||
|
@ -2551,6 +2674,10 @@ If no protocol is specified in the proxy string or if the string doesn't match
|
||||||
a supported one, the proxy will be treated as an HTTP proxy.
|
a supported one, the proxy will be treated as an HTTP proxy.
|
||||||
|
|
||||||
The supported proxy protocol prefixes are as follows:
|
The supported proxy protocol prefixes are as follows:
|
||||||
|
.IP "http://"
|
||||||
|
Makes it use it as a HTTP proxy. The default if no scheme prefix is used.
|
||||||
|
.IP "https://"
|
||||||
|
Makes it treated as a \fBHTTPS\fP proxy.
|
||||||
.IP "socks4://"
|
.IP "socks4://"
|
||||||
Makes it the equivalent of \fI--socks4\fP
|
Makes it the equivalent of \fI--socks4\fP
|
||||||
.IP "socks4a://"
|
.IP "socks4a://"
|
||||||
|
@ -2741,6 +2868,10 @@ FTP chunk callback reported error
|
||||||
No connection available, the session will be queued
|
No connection available, the session will be queued
|
||||||
.IP 90
|
.IP 90
|
||||||
SSL public key does not matched pinned public key
|
SSL public key does not matched pinned public key
|
||||||
|
.IP 91
|
||||||
|
Invalid SSL certificate status.
|
||||||
|
.IP 92
|
||||||
|
Stream error in HTTP/2 framing layer.
|
||||||
.IP XX
|
.IP XX
|
||||||
More error codes will appear here in future releases. The existing ones
|
More error codes will appear here in future releases. The existing ones
|
||||||
are meant to never change.
|
are meant to never change.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -114,7 +114,7 @@ int main(void)
|
||||||
CURLM *cm;
|
CURLM *cm;
|
||||||
CURLMsg *msg;
|
CURLMsg *msg;
|
||||||
long L;
|
long L;
|
||||||
unsigned int C=0;
|
unsigned int C = 0;
|
||||||
int M, Q, U = -1;
|
int M, Q, U = -1;
|
||||||
fd_set R, W, E;
|
fd_set R, W, E;
|
||||||
struct timeval T;
|
struct timeval T;
|
||||||
|
@ -162,9 +162,9 @@ int main(void)
|
||||||
T.tv_sec = L/1000;
|
T.tv_sec = L/1000;
|
||||||
T.tv_usec = (L%1000)*1000;
|
T.tv_usec = (L%1000)*1000;
|
||||||
|
|
||||||
if(0 > select(M+1, &R, &W, &E, &T)) {
|
if(0 > select(M + 1, &R, &W, &E, &T)) {
|
||||||
fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
|
fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
|
||||||
M+1, L, errno, strerror(errno));
|
M + 1, L, errno, strerror(errno));
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -30,13 +30,9 @@ EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
||||||
# being currently built and tested are searched before the library which
|
# being currently built and tested are searched before the library which
|
||||||
# might possibly already be installed in the system.
|
# might possibly already be installed in the system.
|
||||||
#
|
#
|
||||||
# $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
|
|
||||||
# $(top_builddir)/include for generated curlbuild.h inc. from lib/curl_setup.h
|
|
||||||
# $(top_srcdir)/include is for libcurl's external include files
|
# $(top_srcdir)/include is for libcurl's external include files
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_builddir)/include/curl \
|
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
-I$(top_builddir)/include \
|
|
||||||
-I$(top_srcdir)/include
|
|
||||||
|
|
||||||
LIBDIR = $(top_builddir)/lib
|
LIBDIR = $(top_builddir)/lib
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
|
@ -144,22 +144,24 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
|
||||||
simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \
|
simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \
|
||||||
sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \
|
sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \
|
||||||
chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \
|
chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \
|
||||||
smtp-mail$(EXEEXT) smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) \
|
smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) smtp-multi$(EXEEXT) \
|
||||||
smtp-tls$(EXEEXT) smtp-vrfy$(EXEEXT) smtp-expn$(EXEEXT) \
|
smtp-ssl$(EXEEXT) smtp-tls$(EXEEXT) smtp-vrfy$(EXEEXT) \
|
||||||
rtsp$(EXEEXT) externalsocket$(EXEEXT) resolve$(EXEEXT) \
|
smtp-expn$(EXEEXT) rtsp$(EXEEXT) externalsocket$(EXEEXT) \
|
||||||
progressfunc$(EXEEXT) pop3-retr$(EXEEXT) pop3-list$(EXEEXT) \
|
resolve$(EXEEXT) progressfunc$(EXEEXT) pop3-retr$(EXEEXT) \
|
||||||
pop3-uidl$(EXEEXT) pop3-dele$(EXEEXT) pop3-top$(EXEEXT) \
|
pop3-list$(EXEEXT) pop3-uidl$(EXEEXT) pop3-dele$(EXEEXT) \
|
||||||
pop3-stat$(EXEEXT) pop3-noop$(EXEEXT) pop3-ssl$(EXEEXT) \
|
pop3-top$(EXEEXT) pop3-stat$(EXEEXT) pop3-noop$(EXEEXT) \
|
||||||
pop3-tls$(EXEEXT) pop3-multi$(EXEEXT) imap-list$(EXEEXT) \
|
pop3-ssl$(EXEEXT) pop3-tls$(EXEEXT) pop3-multi$(EXEEXT) \
|
||||||
imap-lsub$(EXEEXT) imap-fetch$(EXEEXT) imap-store$(EXEEXT) \
|
imap-list$(EXEEXT) imap-lsub$(EXEEXT) imap-fetch$(EXEEXT) \
|
||||||
imap-append$(EXEEXT) imap-examine$(EXEEXT) \
|
imap-store$(EXEEXT) imap-append$(EXEEXT) imap-examine$(EXEEXT) \
|
||||||
imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
|
imap-search$(EXEEXT) imap-create$(EXEEXT) imap-delete$(EXEEXT) \
|
||||||
imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
|
imap-copy$(EXEEXT) imap-noop$(EXEEXT) imap-ssl$(EXEEXT) \
|
||||||
imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
|
imap-tls$(EXEEXT) imap-multi$(EXEEXT) url2file$(EXEEXT) \
|
||||||
sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT) \
|
sftpget$(EXEEXT) ftpsget$(EXEEXT) postinmemory$(EXEEXT) \
|
||||||
http2-download$(EXEEXT) http2-upload$(EXEEXT) \
|
http2-download$(EXEEXT) http2-upload$(EXEEXT) \
|
||||||
http2-serverpush$(EXEEXT) getredirect$(EXEEXT) \
|
http2-serverpush$(EXEEXT) getredirect$(EXEEXT) \
|
||||||
ftpuploadfrommem$(EXEEXT)
|
ftpuploadfrommem$(EXEEXT) ftpuploadresume$(EXEEXT) \
|
||||||
|
sslbackend$(EXEEXT) postit2-formadd$(EXEEXT) \
|
||||||
|
multi-formadd$(EXEEXT) shared-connection-cache$(EXEEXT)
|
||||||
subdir = docs/examples
|
subdir = docs/examples
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
|
||||||
|
@ -184,8 +186,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||||
$(top_builddir)/include/curl/curlbuild.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
10_at_a_time_SOURCES = 10-at-a-time.c
|
10_at_a_time_SOURCES = 10-at-a-time.c
|
||||||
|
@ -302,6 +303,13 @@ ftpuploadfrommem_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ftpuploadfrommem_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ftpuploadfrommem_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
ftpuploadresume_SOURCES = ftpuploadresume.c
|
||||||
|
ftpuploadresume_OBJECTS = ftpuploadresume.$(OBJEXT)
|
||||||
|
ftpuploadresume_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ftpuploadresume_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ftpuploadresume_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
getinfo_SOURCES = getinfo.c
|
getinfo_SOURCES = getinfo.c
|
||||||
getinfo_OBJECTS = getinfo.$(OBJEXT)
|
getinfo_OBJECTS = getinfo.$(OBJEXT)
|
||||||
getinfo_LDADD = $(LDADD)
|
getinfo_LDADD = $(LDADD)
|
||||||
|
@ -490,6 +498,13 @@ multi_double_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_double_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_double_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
multi_formadd_SOURCES = multi-formadd.c
|
||||||
|
multi_formadd_OBJECTS = multi-formadd.$(OBJEXT)
|
||||||
|
multi_formadd_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@multi_formadd_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@multi_formadd_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
multi_post_SOURCES = multi-post.c
|
multi_post_SOURCES = multi-post.c
|
||||||
multi_post_OBJECTS = multi-post.$(OBJEXT)
|
multi_post_OBJECTS = multi-post.$(OBJEXT)
|
||||||
multi_post_LDADD = $(LDADD)
|
multi_post_LDADD = $(LDADD)
|
||||||
|
@ -602,6 +617,13 @@ postit2_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@postit2_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@postit2_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
postit2_formadd_SOURCES = postit2-formadd.c
|
||||||
|
postit2_formadd_OBJECTS = postit2-formadd.$(OBJEXT)
|
||||||
|
postit2_formadd_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@postit2_formadd_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@postit2_formadd_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
progressfunc_SOURCES = progressfunc.c
|
progressfunc_SOURCES = progressfunc.c
|
||||||
progressfunc_OBJECTS = progressfunc.$(OBJEXT)
|
progressfunc_OBJECTS = progressfunc.$(OBJEXT)
|
||||||
progressfunc_LDADD = $(LDADD)
|
progressfunc_LDADD = $(LDADD)
|
||||||
|
@ -642,6 +664,13 @@ sftpget_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@sftpget_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@sftpget_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
shared_connection_cache_SOURCES = shared-connection-cache.c
|
||||||
|
shared_connection_cache_OBJECTS = shared-connection-cache.$(OBJEXT)
|
||||||
|
shared_connection_cache_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@shared_connection_cache_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@shared_connection_cache_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
simple_SOURCES = simple.c
|
simple_SOURCES = simple.c
|
||||||
simple_OBJECTS = simple.$(OBJEXT)
|
simple_OBJECTS = simple.$(OBJEXT)
|
||||||
simple_LDADD = $(LDADD)
|
simple_LDADD = $(LDADD)
|
||||||
|
@ -677,6 +706,13 @@ smtp_mail_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_mail_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_mail_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
smtp_mime_SOURCES = smtp-mime.c
|
||||||
|
smtp_mime_OBJECTS = smtp-mime.$(OBJEXT)
|
||||||
|
smtp_mime_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_mime_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_mime_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
smtp_multi_SOURCES = smtp-multi.c
|
smtp_multi_SOURCES = smtp-multi.c
|
||||||
smtp_multi_OBJECTS = smtp-multi.$(OBJEXT)
|
smtp_multi_OBJECTS = smtp-multi.$(OBJEXT)
|
||||||
smtp_multi_LDADD = $(LDADD)
|
smtp_multi_LDADD = $(LDADD)
|
||||||
|
@ -705,6 +741,13 @@ smtp_vrfy_LDADD = $(LDADD)
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_vrfy_DEPENDENCIES = \
|
@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_vrfy_DEPENDENCIES = \
|
||||||
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
|
sslbackend_SOURCES = sslbackend.c
|
||||||
|
sslbackend_OBJECTS = sslbackend.$(OBJEXT)
|
||||||
|
sslbackend_LDADD = $(LDADD)
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@sslbackend_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@sslbackend_DEPENDENCIES = \
|
||||||
|
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
|
||||||
url2file_SOURCES = url2file.c
|
url2file_SOURCES = url2file.c
|
||||||
url2file_OBJECTS = url2file.$(OBJEXT)
|
url2file_OBJECTS = url2file.$(OBJEXT)
|
||||||
url2file_LDADD = $(LDADD)
|
url2file_LDADD = $(LDADD)
|
||||||
|
@ -749,37 +792,41 @@ am__v_CCLD_1 =
|
||||||
SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
|
SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
|
||||||
cookie_interface.c debug.c externalsocket.c fileupload.c \
|
cookie_interface.c debug.c externalsocket.c fileupload.c \
|
||||||
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
|
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
|
||||||
ftpsget.c ftpupload.c ftpuploadfrommem.c getinfo.c \
|
ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
|
||||||
getinmemory.c getredirect.c http-post.c http2-download.c \
|
getinfo.c getinmemory.c getredirect.c http-post.c \
|
||||||
http2-serverpush.c http2-upload.c httpcustomheader.c httpput.c \
|
http2-download.c http2-serverpush.c http2-upload.c \
|
||||||
https.c imap-append.c imap-copy.c imap-create.c imap-delete.c \
|
httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
|
||||||
imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
|
imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
|
||||||
imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
|
imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
|
||||||
imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
|
imap-ssl.c imap-store.c imap-tls.c multi-app.c \
|
||||||
|
multi-debugcallback.c multi-double.c multi-formadd.c \
|
||||||
multi-post.c multi-single.c persistant.c pop3-dele.c \
|
multi-post.c multi-single.c persistant.c pop3-dele.c \
|
||||||
pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c \
|
pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c \
|
||||||
pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
|
pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
|
||||||
postinmemory.c postit2.c progressfunc.c resolve.c rtsp.c \
|
postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
|
||||||
sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
|
resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
|
||||||
simplessl.c smtp-expn.c smtp-mail.c smtp-multi.c smtp-ssl.c \
|
shared-connection-cache.c simple.c simplepost.c simplessl.c \
|
||||||
smtp-tls.c smtp-vrfy.c url2file.c
|
smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c \
|
||||||
|
smtp-tls.c smtp-vrfy.c sslbackend.c url2file.c
|
||||||
DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
|
DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
|
||||||
cookie_interface.c debug.c externalsocket.c fileupload.c \
|
cookie_interface.c debug.c externalsocket.c fileupload.c \
|
||||||
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
|
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
|
||||||
ftpsget.c ftpupload.c ftpuploadfrommem.c getinfo.c \
|
ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
|
||||||
getinmemory.c getredirect.c http-post.c http2-download.c \
|
getinfo.c getinmemory.c getredirect.c http-post.c \
|
||||||
http2-serverpush.c http2-upload.c httpcustomheader.c httpput.c \
|
http2-download.c http2-serverpush.c http2-upload.c \
|
||||||
https.c imap-append.c imap-copy.c imap-create.c imap-delete.c \
|
httpcustomheader.c httpput.c https.c imap-append.c imap-copy.c \
|
||||||
imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
|
imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
|
||||||
imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
|
imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
|
||||||
imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
|
imap-ssl.c imap-store.c imap-tls.c multi-app.c \
|
||||||
|
multi-debugcallback.c multi-double.c multi-formadd.c \
|
||||||
multi-post.c multi-single.c persistant.c pop3-dele.c \
|
multi-post.c multi-single.c persistant.c pop3-dele.c \
|
||||||
pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c \
|
pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c \
|
||||||
pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
|
pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
|
||||||
postinmemory.c postit2.c progressfunc.c resolve.c rtsp.c \
|
postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
|
||||||
sendrecv.c sepheaders.c sftpget.c simple.c simplepost.c \
|
resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
|
||||||
simplessl.c smtp-expn.c smtp-mail.c smtp-multi.c smtp-ssl.c \
|
shared-connection-cache.c simple.c simplepost.c simplessl.c \
|
||||||
smtp-tls.c smtp-vrfy.c url2file.c
|
smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c \
|
||||||
|
smtp-tls.c smtp-vrfy.c sslbackend.c url2file.c
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
|
@ -822,8 +869,11 @@ CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
|
||||||
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
|
||||||
|
CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
|
||||||
|
CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
|
||||||
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
|
||||||
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
|
||||||
|
CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
|
||||||
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
@ -849,7 +899,9 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
|
||||||
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
|
||||||
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
|
||||||
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
|
||||||
|
CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||||
CYGPATH_W = @CYGPATH_W@
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
DEPDIR = @DEPDIR@
|
DEPDIR = @DEPDIR@
|
||||||
DLLTOOL = @DLLTOOL@
|
DLLTOOL = @DLLTOOL@
|
||||||
|
@ -866,6 +918,7 @@ FGREP = @FGREP@
|
||||||
GCOV = @GCOV@
|
GCOV = @GCOV@
|
||||||
GENHTML = @GENHTML@
|
GENHTML = @GENHTML@
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
|
HAVE_BROTLI = @HAVE_BROTLI@
|
||||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||||
HAVE_LIBZ = @HAVE_LIBZ@
|
HAVE_LIBZ = @HAVE_LIBZ@
|
||||||
|
@ -925,6 +978,7 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||||
SED = @SED@
|
SED = @SED@
|
||||||
SET_MAKE = @SET_MAKE@
|
SET_MAKE = @SET_MAKE@
|
||||||
SHELL = @SHELL@
|
SHELL = @SHELL@
|
||||||
|
SSL_BACKENDS = @SSL_BACKENDS@
|
||||||
SSL_ENABLED = @SSL_ENABLED@
|
SSL_ENABLED = @SSL_ENABLED@
|
||||||
SSL_LIBS = @SSL_LIBS@
|
SSL_LIBS = @SSL_LIBS@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
|
@ -937,6 +991,7 @@ USE_DARWINSSL = @USE_DARWINSSL@
|
||||||
USE_GNUTLS = @USE_GNUTLS@
|
USE_GNUTLS = @USE_GNUTLS@
|
||||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||||
USE_LIBRTMP = @USE_LIBRTMP@
|
USE_LIBRTMP = @USE_LIBRTMP@
|
||||||
|
USE_LIBSSH = @USE_LIBSSH@
|
||||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||||
USE_MBEDTLS = @USE_MBEDTLS@
|
USE_MBEDTLS = @USE_MBEDTLS@
|
||||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||||
|
@ -1015,13 +1070,10 @@ EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
||||||
# being currently built and tested are searched before the library which
|
# being currently built and tested are searched before the library which
|
||||||
# might possibly already be installed in the system.
|
# might possibly already be installed in the system.
|
||||||
#
|
#
|
||||||
# $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
|
|
||||||
# $(top_builddir)/include for generated curlbuild.h inc. from lib/curl_setup.h
|
|
||||||
# $(top_srcdir)/include is for libcurl's external include files
|
# $(top_srcdir)/include is for libcurl's external include files
|
||||||
|
|
||||||
# Avoid libcurl obsolete stuff
|
# Avoid libcurl obsolete stuff
|
||||||
AM_CPPFLAGS = -I$(top_builddir)/include/curl -I$(top_builddir)/include \
|
AM_CPPFLAGS = -I$(top_srcdir)/include -DCURL_NO_OLDIES $(am__append_1)
|
||||||
-I$(top_srcdir)/include -DCURL_NO_OLDIES $(am__append_1)
|
|
||||||
LIBDIR = $(top_builddir)/lib
|
LIBDIR = $(top_builddir)/lib
|
||||||
@USE_EXPLICIT_LIB_DEPS_FALSE@LDADD = $(LIBDIR)/libcurl.la
|
@USE_EXPLICIT_LIB_DEPS_FALSE@LDADD = $(LIBDIR)/libcurl.la
|
||||||
|
|
||||||
|
@ -1030,11 +1082,12 @@ LIBDIR = $(top_builddir)/lib
|
||||||
|
|
||||||
# These examples require external dependencies that may not be commonly
|
# These examples require external dependencies that may not be commonly
|
||||||
# available on POSIX systems, so don't bother attempting to compile them here.
|
# available on POSIX systems, so don't bother attempting to compile them here.
|
||||||
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
|
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
|
||||||
ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c \
|
ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
|
||||||
opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
|
sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
|
||||||
smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
|
smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
|
||||||
multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c
|
multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
|
||||||
|
threaded-shared-conn.c
|
||||||
|
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
|
@ -1144,6 +1197,10 @@ ftpuploadfrommem$(EXEEXT): $(ftpuploadfrommem_OBJECTS) $(ftpuploadfrommem_DEPEND
|
||||||
@rm -f ftpuploadfrommem$(EXEEXT)
|
@rm -f ftpuploadfrommem$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(ftpuploadfrommem_OBJECTS) $(ftpuploadfrommem_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(ftpuploadfrommem_OBJECTS) $(ftpuploadfrommem_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
ftpuploadresume$(EXEEXT): $(ftpuploadresume_OBJECTS) $(ftpuploadresume_DEPENDENCIES) $(EXTRA_ftpuploadresume_DEPENDENCIES)
|
||||||
|
@rm -f ftpuploadresume$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(ftpuploadresume_OBJECTS) $(ftpuploadresume_LDADD) $(LIBS)
|
||||||
|
|
||||||
getinfo$(EXEEXT): $(getinfo_OBJECTS) $(getinfo_DEPENDENCIES) $(EXTRA_getinfo_DEPENDENCIES)
|
getinfo$(EXEEXT): $(getinfo_OBJECTS) $(getinfo_DEPENDENCIES) $(EXTRA_getinfo_DEPENDENCIES)
|
||||||
@rm -f getinfo$(EXEEXT)
|
@rm -f getinfo$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(getinfo_OBJECTS) $(getinfo_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(getinfo_OBJECTS) $(getinfo_LDADD) $(LIBS)
|
||||||
|
@ -1252,6 +1309,10 @@ multi-double$(EXEEXT): $(multi_double_OBJECTS) $(multi_double_DEPENDENCIES) $(EX
|
||||||
@rm -f multi-double$(EXEEXT)
|
@rm -f multi-double$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(multi_double_OBJECTS) $(multi_double_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(multi_double_OBJECTS) $(multi_double_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
multi-formadd$(EXEEXT): $(multi_formadd_OBJECTS) $(multi_formadd_DEPENDENCIES) $(EXTRA_multi_formadd_DEPENDENCIES)
|
||||||
|
@rm -f multi-formadd$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(multi_formadd_OBJECTS) $(multi_formadd_LDADD) $(LIBS)
|
||||||
|
|
||||||
multi-post$(EXEEXT): $(multi_post_OBJECTS) $(multi_post_DEPENDENCIES) $(EXTRA_multi_post_DEPENDENCIES)
|
multi-post$(EXEEXT): $(multi_post_OBJECTS) $(multi_post_DEPENDENCIES) $(EXTRA_multi_post_DEPENDENCIES)
|
||||||
@rm -f multi-post$(EXEEXT)
|
@rm -f multi-post$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(multi_post_OBJECTS) $(multi_post_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(multi_post_OBJECTS) $(multi_post_LDADD) $(LIBS)
|
||||||
|
@ -1316,6 +1377,10 @@ postit2$(EXEEXT): $(postit2_OBJECTS) $(postit2_DEPENDENCIES) $(EXTRA_postit2_DEP
|
||||||
@rm -f postit2$(EXEEXT)
|
@rm -f postit2$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(postit2_OBJECTS) $(postit2_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(postit2_OBJECTS) $(postit2_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
postit2-formadd$(EXEEXT): $(postit2_formadd_OBJECTS) $(postit2_formadd_DEPENDENCIES) $(EXTRA_postit2_formadd_DEPENDENCIES)
|
||||||
|
@rm -f postit2-formadd$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(postit2_formadd_OBJECTS) $(postit2_formadd_LDADD) $(LIBS)
|
||||||
|
|
||||||
progressfunc$(EXEEXT): $(progressfunc_OBJECTS) $(progressfunc_DEPENDENCIES) $(EXTRA_progressfunc_DEPENDENCIES)
|
progressfunc$(EXEEXT): $(progressfunc_OBJECTS) $(progressfunc_DEPENDENCIES) $(EXTRA_progressfunc_DEPENDENCIES)
|
||||||
@rm -f progressfunc$(EXEEXT)
|
@rm -f progressfunc$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(progressfunc_OBJECTS) $(progressfunc_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(progressfunc_OBJECTS) $(progressfunc_LDADD) $(LIBS)
|
||||||
|
@ -1340,6 +1405,10 @@ sftpget$(EXEEXT): $(sftpget_OBJECTS) $(sftpget_DEPENDENCIES) $(EXTRA_sftpget_DEP
|
||||||
@rm -f sftpget$(EXEEXT)
|
@rm -f sftpget$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(sftpget_OBJECTS) $(sftpget_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(sftpget_OBJECTS) $(sftpget_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
shared-connection-cache$(EXEEXT): $(shared_connection_cache_OBJECTS) $(shared_connection_cache_DEPENDENCIES) $(EXTRA_shared_connection_cache_DEPENDENCIES)
|
||||||
|
@rm -f shared-connection-cache$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(shared_connection_cache_OBJECTS) $(shared_connection_cache_LDADD) $(LIBS)
|
||||||
|
|
||||||
simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) $(EXTRA_simple_DEPENDENCIES)
|
simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) $(EXTRA_simple_DEPENDENCIES)
|
||||||
@rm -f simple$(EXEEXT)
|
@rm -f simple$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(simple_OBJECTS) $(simple_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(simple_OBJECTS) $(simple_LDADD) $(LIBS)
|
||||||
|
@ -1360,6 +1429,10 @@ smtp-mail$(EXEEXT): $(smtp_mail_OBJECTS) $(smtp_mail_DEPENDENCIES) $(EXTRA_smtp_
|
||||||
@rm -f smtp-mail$(EXEEXT)
|
@rm -f smtp-mail$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(smtp_mail_OBJECTS) $(smtp_mail_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(smtp_mail_OBJECTS) $(smtp_mail_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
smtp-mime$(EXEEXT): $(smtp_mime_OBJECTS) $(smtp_mime_DEPENDENCIES) $(EXTRA_smtp_mime_DEPENDENCIES)
|
||||||
|
@rm -f smtp-mime$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(smtp_mime_OBJECTS) $(smtp_mime_LDADD) $(LIBS)
|
||||||
|
|
||||||
smtp-multi$(EXEEXT): $(smtp_multi_OBJECTS) $(smtp_multi_DEPENDENCIES) $(EXTRA_smtp_multi_DEPENDENCIES)
|
smtp-multi$(EXEEXT): $(smtp_multi_OBJECTS) $(smtp_multi_DEPENDENCIES) $(EXTRA_smtp_multi_DEPENDENCIES)
|
||||||
@rm -f smtp-multi$(EXEEXT)
|
@rm -f smtp-multi$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(smtp_multi_OBJECTS) $(smtp_multi_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(smtp_multi_OBJECTS) $(smtp_multi_LDADD) $(LIBS)
|
||||||
|
@ -1376,6 +1449,10 @@ smtp-vrfy$(EXEEXT): $(smtp_vrfy_OBJECTS) $(smtp_vrfy_DEPENDENCIES) $(EXTRA_smtp_
|
||||||
@rm -f smtp-vrfy$(EXEEXT)
|
@rm -f smtp-vrfy$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(smtp_vrfy_OBJECTS) $(smtp_vrfy_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(smtp_vrfy_OBJECTS) $(smtp_vrfy_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
sslbackend$(EXEEXT): $(sslbackend_OBJECTS) $(sslbackend_DEPENDENCIES) $(EXTRA_sslbackend_DEPENDENCIES)
|
||||||
|
@rm -f sslbackend$(EXEEXT)
|
||||||
|
$(AM_V_CCLD)$(LINK) $(sslbackend_OBJECTS) $(sslbackend_LDADD) $(LIBS)
|
||||||
|
|
||||||
url2file$(EXEEXT): $(url2file_OBJECTS) $(url2file_DEPENDENCIES) $(EXTRA_url2file_DEPENDENCIES)
|
url2file$(EXEEXT): $(url2file_OBJECTS) $(url2file_DEPENDENCIES) $(EXTRA_url2file_DEPENDENCIES)
|
||||||
@rm -f url2file$(EXEEXT)
|
@rm -f url2file$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(url2file_OBJECTS) $(url2file_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(url2file_OBJECTS) $(url2file_LDADD) $(LIBS)
|
||||||
|
@ -1402,6 +1479,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsget.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsget.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpupload.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpupload.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadfrommem.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadfrommem.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpuploadresume.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinfo.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getredirect.Po@am__quote@
|
||||||
|
@ -1429,6 +1507,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-double.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-formadd.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-post.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistant.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistant.Po@am__quote@
|
||||||
|
@ -1444,6 +1523,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-uidl.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-uidl.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/post-callback.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/post-callback.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postinmemory.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postinmemory.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2-formadd.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@
|
||||||
|
@ -1451,15 +1531,18 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sepheaders.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sepheaders.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shared-connection-cache.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-expn.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-expn.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mail.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mail.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mime.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-multi.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-multi.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-ssl.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-ssl.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-tls.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-tls.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-vrfy.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-vrfy.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sslbackend.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url2file.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url2file.Po@am__quote@
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
|
|
|
@ -26,18 +26,21 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
|
||||||
https multi-app multi-debugcallback multi-double multi-post multi-single \
|
https multi-app multi-debugcallback multi-double multi-post multi-single \
|
||||||
persistant post-callback postit2 sepheaders simple simplepost simplessl \
|
persistant post-callback postit2 sepheaders simple simplepost simplessl \
|
||||||
sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \
|
sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \
|
||||||
smtp-mail smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn rtsp \
|
smtp-mail smtp-mime smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn \
|
||||||
externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl \
|
rtsp externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl \
|
||||||
pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi \
|
pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi \
|
||||||
imap-list imap-lsub imap-fetch imap-store imap-append imap-examine \
|
imap-list imap-lsub imap-fetch imap-store imap-append imap-examine \
|
||||||
imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \
|
imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \
|
||||||
imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
|
imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
|
||||||
http2-upload http2-serverpush getredirect ftpuploadfrommem
|
http2-upload http2-serverpush getredirect ftpuploadfrommem \
|
||||||
|
ftpuploadresume sslbackend postit2-formadd multi-formadd \
|
||||||
|
shared-connection-cache
|
||||||
|
|
||||||
# These examples require external dependencies that may not be commonly
|
# These examples require external dependencies that may not be commonly
|
||||||
# available on POSIX systems, so don't bother attempting to compile them here.
|
# available on POSIX systems, so don't bother attempting to compile them here.
|
||||||
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
|
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
|
||||||
ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c \
|
ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
|
||||||
opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
|
sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
|
||||||
smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
|
smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
|
||||||
multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c
|
multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
|
||||||
|
threaded-shared-conn.c
|
||||||
|
|
|
@ -84,7 +84,7 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CC = $(CROSSPREFIX)gcc
|
CC = $(CROSSPREFIX)gcc
|
||||||
CFLAGS = -g -O2 -Wall
|
CFLAGS = -g -O2 -Wall -W
|
||||||
CFLAGS += -fno-strict-aliasing
|
CFLAGS += -fno-strict-aliasing
|
||||||
ifeq ($(ARCH),w64)
|
ifeq ($(ARCH),w64)
|
||||||
CFLAGS += -m64 -D_AMD64_
|
CFLAGS += -m64 -D_AMD64_
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -106,7 +106,7 @@ int main(int argc, char **argv)
|
||||||
if(argc < 3)
|
if(argc < 3)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
file= argv[1];
|
file = argv[1];
|
||||||
url = argv[2];
|
url = argv[2];
|
||||||
|
|
||||||
/* get the file size of the local file */
|
/* get the file size of the local file */
|
||||||
|
|
|
@ -24,85 +24,103 @@
|
||||||
* </DESC>
|
* </DESC>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <openssl/err.h>
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
|
size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
{
|
{
|
||||||
fwrite(ptr, size, nmemb, stream);
|
fwrite(ptr, size, nmemb, (FILE *)stream);
|
||||||
return (nmemb*size);
|
return (nmemb*size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
|
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
|
||||||
{
|
{
|
||||||
X509_STORE *store;
|
CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
|
||||||
X509 *cert=NULL;
|
X509_STORE *store = NULL;
|
||||||
BIO *bio;
|
X509 *cert = NULL;
|
||||||
char *mypem = /* www.cacert.org */
|
BIO *bio = NULL;
|
||||||
"-----BEGIN CERTIFICATE-----\n"\
|
char *mypem =
|
||||||
"MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
|
/* CA for example.com. CN = DigiCert High Assurance EV Root CA */
|
||||||
"IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"\
|
"-----BEGIN CERTIFICATE-----\n"
|
||||||
"IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"\
|
"MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs\n"
|
||||||
"Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"\
|
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
|
||||||
"BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n"\
|
"d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n"
|
||||||
"MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n"\
|
"ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL\n"
|
||||||
"ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n"\
|
"MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n"
|
||||||
"CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n"\
|
"LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug\n"
|
||||||
"8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n"\
|
"RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm\n"
|
||||||
"zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n"\
|
"+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW\n"
|
||||||
"fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n"\
|
"PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM\n"
|
||||||
"w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n"\
|
"xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB\n"
|
||||||
"G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n"\
|
"Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3\n"
|
||||||
"epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n"\
|
"hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg\n"
|
||||||
"laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n"\
|
"EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF\n"
|
||||||
"QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n"\
|
"MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA\n"
|
||||||
"fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n"\
|
"FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec\n"
|
||||||
"YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n"\
|
"nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z\n"
|
||||||
"ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n"\
|
"eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF\n"
|
||||||
"gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n"\
|
"hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2\n"
|
||||||
"MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n"\
|
"Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe\n"
|
||||||
"IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n"\
|
"vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep\n"
|
||||||
"dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n"\
|
"+OkuE6N36B9K\n"
|
||||||
"czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n"\
|
|
||||||
"dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n"\
|
|
||||||
"aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n"\
|
|
||||||
"AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n"\
|
|
||||||
"b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n"\
|
|
||||||
"ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n"\
|
|
||||||
"nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n"\
|
|
||||||
"18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n"\
|
|
||||||
"gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n"\
|
|
||||||
"Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n"\
|
|
||||||
"sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n"\
|
|
||||||
"SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n"\
|
|
||||||
"CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n"\
|
|
||||||
"GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"\
|
|
||||||
"zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"\
|
|
||||||
"omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
|
|
||||||
"-----END CERTIFICATE-----\n";
|
"-----END CERTIFICATE-----\n";
|
||||||
|
|
||||||
|
/* clear the current thread's OpenSSL error queue */
|
||||||
|
ERR_clear_error();
|
||||||
|
|
||||||
/* get a BIO */
|
/* get a BIO */
|
||||||
bio=BIO_new_mem_buf(mypem, -1);
|
bio = BIO_new_mem_buf(mypem, -1);
|
||||||
|
if(!bio)
|
||||||
|
goto err;
|
||||||
|
|
||||||
/* use it to read the PEM formatted certificate from memory into an X509
|
/* use it to read the PEM formatted certificate from memory into an X509
|
||||||
* structure that SSL can use
|
* structure that SSL can use
|
||||||
*/
|
*/
|
||||||
PEM_read_bio_X509(bio, &cert, 0, NULL);
|
if(!PEM_read_bio_X509(bio, &cert, 0, NULL))
|
||||||
if(cert == NULL)
|
goto err;
|
||||||
printf("PEM_read_bio_X509 failed...\n");
|
|
||||||
|
|
||||||
/* get a pointer to the X509 certificate store (which may be empty!) */
|
/* get a pointer to the X509 certificate store (which may be empty!) */
|
||||||
store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
|
store = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
|
||||||
|
if(!store)
|
||||||
|
goto err;
|
||||||
|
|
||||||
/* add our certificate to this store */
|
/* add our certificate to this store */
|
||||||
if(X509_STORE_add_cert(store, cert)==0)
|
if(!X509_STORE_add_cert(store, cert)) {
|
||||||
printf("error adding certificate\n");
|
unsigned long error = ERR_peek_last_error();
|
||||||
|
|
||||||
|
/* Ignore error X509_R_CERT_ALREADY_IN_HASH_TABLE which means the
|
||||||
|
* certificate is already in the store. That could happen if
|
||||||
|
* libcurl already loaded the certificate from a ca cert bundle
|
||||||
|
* set at libcurl build-time or runtime.
|
||||||
|
*/
|
||||||
|
if(ERR_GET_LIB(error) != ERR_LIB_X509 ||
|
||||||
|
ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
ERR_clear_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = CURLE_OK;
|
||||||
|
|
||||||
|
err:
|
||||||
|
if(rv != CURLE_OK) {
|
||||||
|
char errbuf[256];
|
||||||
|
unsigned long error = ERR_peek_last_error();
|
||||||
|
|
||||||
|
fprintf(stderr, "error adding certificate\n");
|
||||||
|
if(error) {
|
||||||
|
ERR_error_string_n(error, errbuf, sizeof errbuf);
|
||||||
|
fprintf(stderr, "%s\n", errbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* decrease reference counts */
|
|
||||||
X509_free(cert);
|
X509_free(cert);
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
ERR_clear_error();
|
||||||
|
|
||||||
/* all set to go */
|
return rv;
|
||||||
return CURLE_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@ -110,35 +128,54 @@ int main(void)
|
||||||
CURL *ch;
|
CURL *ch;
|
||||||
CURLcode rv;
|
CURLcode rv;
|
||||||
|
|
||||||
rv=curl_global_init(CURL_GLOBAL_ALL);
|
rv = curl_global_init(CURL_GLOBAL_ALL);
|
||||||
ch=curl_easy_init();
|
ch = curl_easy_init();
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
|
rv = curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
|
rv = curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
|
rv = curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
|
rv = curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
|
rv = curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
|
rv = curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
|
rv = curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
|
rv = curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
|
rv = curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
|
rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
|
rv = curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
|
||||||
|
|
||||||
/* first try: retrieve page without cacerts' certificate -> will fail
|
/* turn off the default CA locations (optional)
|
||||||
|
* otherwise libcurl will load CA certificates from the locations that
|
||||||
|
* were detected/specified at build-time
|
||||||
*/
|
*/
|
||||||
rv=curl_easy_perform(ch);
|
rv = curl_easy_setopt(ch, CURLOPT_CAINFO, NULL);
|
||||||
if(rv==CURLE_OK)
|
rv = curl_easy_setopt(ch, CURLOPT_CAPATH, NULL);
|
||||||
|
|
||||||
|
/* first try: retrieve page without ca certificates -> should fail
|
||||||
|
* unless libcurl was built --with-ca-fallback enabled at build-time
|
||||||
|
*/
|
||||||
|
rv = curl_easy_perform(ch);
|
||||||
|
if(rv == CURLE_OK)
|
||||||
printf("*** transfer succeeded ***\n");
|
printf("*** transfer succeeded ***\n");
|
||||||
else
|
else
|
||||||
printf("*** transfer failed ***\n");
|
printf("*** transfer failed ***\n");
|
||||||
|
|
||||||
|
/* use a fresh connection (optional)
|
||||||
|
* this option seriously impacts performance of multiple transfers but
|
||||||
|
* it is necessary order to demonstrate this example. recall that the
|
||||||
|
* ssl ctx callback is only called _before_ an SSL connection is
|
||||||
|
* established, therefore it will not affect existing verified SSL
|
||||||
|
* connections already in the connection cache associated with this
|
||||||
|
* handle. normally you would set the ssl ctx function before making
|
||||||
|
* any transfers, and not use this option.
|
||||||
|
*/
|
||||||
|
rv = curl_easy_setopt(ch, CURLOPT_FRESH_CONNECT, 1L);
|
||||||
|
|
||||||
/* second try: retrieve page using cacerts' certificate -> will succeed
|
/* second try: retrieve page using cacerts' certificate -> will succeed
|
||||||
* load the certificate by installing a function doing the necessary
|
* load the certificate by installing a function doing the necessary
|
||||||
* "modifications" to the SSL CONTEXT just before link init
|
* "modifications" to the SSL CONTEXT just before link init
|
||||||
*/
|
*/
|
||||||
rv=curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
|
rv = curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
|
||||||
rv=curl_easy_perform(ch);
|
rv = curl_easy_perform(ch);
|
||||||
if(rv==CURLE_OK)
|
if(rv == CURLE_OK)
|
||||||
printf("*** transfer succeeded ***\n");
|
printf("*** transfer succeeded ***\n");
|
||||||
else
|
else
|
||||||
printf("*** transfer failed ***\n");
|
printf("*** transfer failed ***\n");
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -93,7 +93,7 @@ int main(int argc, char *argv[])
|
||||||
prttime = 1;
|
prttime = 1;
|
||||||
}
|
}
|
||||||
else if(strncasecmp(*argv, "-M=", 3) == 0) {
|
else if(strncasecmp(*argv, "-M=", 3) == 0) {
|
||||||
long m = strtol((*argv)+3, NULL, 10);
|
long m = strtol((*argv) + 3, NULL, 10);
|
||||||
switch(m) {
|
switch(m) {
|
||||||
case 1:
|
case 1:
|
||||||
url = URL_1M;
|
url = URL_1M;
|
||||||
|
|
|
@ -195,7 +195,8 @@ static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
|
||||||
if(p->verbose > 2)
|
if(p->verbose > 2)
|
||||||
BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
|
BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
|
||||||
|
|
||||||
if((ok= X509_verify_cert(ctx)) && ctx->cert) {
|
ok = X509_verify_cert(ctx);
|
||||||
|
if(ok && ctx->cert) {
|
||||||
unsigned char *accessinfo;
|
unsigned char *accessinfo;
|
||||||
if(p->verbose > 1)
|
if(p->verbose > 1)
|
||||||
X509_print_ex(p->errorbio, ctx->cert, 0, 0);
|
X509_print_ex(p->errorbio, ctx->cert, 0, 0);
|
||||||
|
@ -268,16 +269,16 @@ static CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
BIO* in=NULL;
|
BIO* in = NULL;
|
||||||
BIO* out=NULL;
|
BIO* out = NULL;
|
||||||
|
|
||||||
char *outfile = NULL;
|
char *outfile = NULL;
|
||||||
char *infile = NULL;
|
char *infile = NULL;
|
||||||
|
|
||||||
int tabLength=100;
|
int tabLength = 100;
|
||||||
char *binaryptr;
|
char *binaryptr;
|
||||||
char *mimetype;
|
char *mimetype;
|
||||||
char *mimetypeaccept=NULL;
|
char *mimetypeaccept = NULL;
|
||||||
char *contenttype;
|
char *contenttype;
|
||||||
const char **pp;
|
const char **pp;
|
||||||
unsigned char *hostporturl = NULL;
|
unsigned char *hostporturl = NULL;
|
||||||
|
@ -288,8 +289,8 @@ int main(int argc, char **argv)
|
||||||
char *response;
|
char *response;
|
||||||
|
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
struct curl_slist *headers=NULL;
|
struct curl_slist *headers = NULL;
|
||||||
int badarg=0;
|
int badarg = 0;
|
||||||
|
|
||||||
binaryptr = malloc(tabLength);
|
binaryptr = malloc(tabLength);
|
||||||
|
|
||||||
|
@ -307,75 +308,75 @@ int main(int argc, char **argv)
|
||||||
while(*args && *args[0] == '-') {
|
while(*args && *args[0] == '-') {
|
||||||
if(!strcmp (*args, "-in")) {
|
if(!strcmp (*args, "-in")) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
infile=*(++args);
|
infile = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(!strcmp (*args, "-out")) {
|
else if(!strcmp (*args, "-out")) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
outfile=*(++args);
|
outfile = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(!strcmp (*args, "-p12")) {
|
else if(!strcmp (*args, "-p12")) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
p.p12file = *(++args);
|
p.p12file = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-envpass") == 0) {
|
else if(strcmp(*args, "-envpass") == 0) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
p.pst = getenv(*(++args));
|
p.pst = getenv(*(++args));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-connect") == 0) {
|
else if(strcmp(*args, "-connect") == 0) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
hostporturl = *(++args);
|
hostporturl = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-mimetype") == 0) {
|
else if(strcmp(*args, "-mimetype") == 0) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
mimetype = *(++args);
|
mimetype = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-acceptmime") == 0) {
|
else if(strcmp(*args, "-acceptmime") == 0) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
mimetypeaccept = *(++args);
|
mimetypeaccept = *(++args);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-accesstype") == 0) {
|
else if(strcmp(*args, "-accesstype") == 0) {
|
||||||
if(args[1]) {
|
if(args[1]) {
|
||||||
p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
|
p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
|
||||||
if(p.accesstype == 0)
|
if(p.accesstype == 0)
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
}
|
}
|
||||||
else if(strcmp(*args, "-verbose") == 0) {
|
else if(strcmp(*args, "-verbose") == 0) {
|
||||||
p.verbose++;
|
p.verbose++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
badarg=1;
|
badarg = 1;
|
||||||
args++;
|
args++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mimetype==NULL || mimetypeaccept == NULL)
|
if(mimetype == NULL || mimetypeaccept == NULL)
|
||||||
badarg = 1;
|
badarg = 1;
|
||||||
|
|
||||||
if(badarg) {
|
if(badarg) {
|
||||||
for(pp=curlx_usage; (*pp != NULL); pp++)
|
for(pp = curlx_usage; (*pp != NULL); pp++)
|
||||||
BIO_printf(p.errorbio, "%s\n", *pp);
|
BIO_printf(p.errorbio, "%s\n", *pp);
|
||||||
BIO_printf(p.errorbio, "\n");
|
BIO_printf(p.errorbio, "\n");
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -383,7 +384,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/* set input */
|
/* set input */
|
||||||
|
|
||||||
if((in=BIO_new(BIO_s_file())) == NULL) {
|
in = BIO_new(BIO_s_file());
|
||||||
|
if(in == NULL) {
|
||||||
BIO_printf(p.errorbio, "Error setting input bio\n");
|
BIO_printf(p.errorbio, "Error setting input bio\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -397,7 +399,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/* set output */
|
/* set output */
|
||||||
|
|
||||||
if((out=BIO_new(BIO_s_file())) == NULL) {
|
out = BIO_new(BIO_s_file());
|
||||||
|
if(out == NULL) {
|
||||||
BIO_printf(p.errorbio, "Error setting output bio.\n");
|
BIO_printf(p.errorbio, "Error setting output bio.\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -429,7 +432,7 @@ int main(int argc, char **argv)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.ca= NULL;
|
p.ca = NULL;
|
||||||
if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
|
if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
|
||||||
BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
|
BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -454,10 +457,10 @@ int main(int argc, char **argv)
|
||||||
given access type */
|
given access type */
|
||||||
serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
|
serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
|
||||||
if(!serverurl) {
|
if(!serverurl) {
|
||||||
int j=0;
|
int j = 0;
|
||||||
BIO_printf(p.errorbio, "no service URL in user cert "
|
BIO_printf(p.errorbio, "no service URL in user cert "
|
||||||
"cherching in others certificats\n");
|
"cherching in others certificats\n");
|
||||||
for(j=0; j<sk_X509_num(p.ca); j++) {
|
for(j = 0; j<sk_X509_num(p.ca); j++) {
|
||||||
serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
|
serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
|
||||||
NID_info_access);
|
NID_info_access);
|
||||||
if(serverurl)
|
if(serverurl)
|
||||||
|
@ -489,8 +492,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/* pass our list of custom made headers */
|
/* pass our list of custom made headers */
|
||||||
|
|
||||||
contenttype = malloc(15+strlen(mimetype));
|
contenttype = malloc(15 + strlen(mimetype));
|
||||||
snprintf(contenttype, 15+strlen(mimetype), "Content-type: %s", mimetype);
|
snprintf(contenttype, 15 + strlen(mimetype), "Content-type: %s", mimetype);
|
||||||
headers = curl_slist_append(headers, contenttype);
|
headers = curl_slist_append(headers, contenttype);
|
||||||
curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
|
curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
|
||||||
|
|
||||||
|
@ -512,12 +515,12 @@ int main(int argc, char **argv)
|
||||||
curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
|
curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
|
||||||
|
|
||||||
{
|
{
|
||||||
int lu; int i=0;
|
int lu; int i = 0;
|
||||||
while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
|
while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
|
||||||
i+=lu;
|
i += lu;
|
||||||
if(i== tabLength) {
|
if(i == tabLength) {
|
||||||
tabLength+=100;
|
tabLength += 100;
|
||||||
binaryptr=realloc(binaryptr, tabLength); /* should be more careful */
|
binaryptr = realloc(binaryptr, tabLength); /* should be more careful */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tabLength = i;
|
tabLength = i;
|
||||||
|
@ -533,8 +536,8 @@ int main(int argc, char **argv)
|
||||||
BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
|
BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
|
||||||
res = curl_easy_perform(p.curl));
|
res = curl_easy_perform(p.curl));
|
||||||
{
|
{
|
||||||
int result =curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
|
int result = curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
|
||||||
if(mimetypeaccept && p.verbose)
|
if(mimetypeaccept && p.verbose) {
|
||||||
if(!strcmp(mimetypeaccept, response))
|
if(!strcmp(mimetypeaccept, response))
|
||||||
BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
|
BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
|
||||||
response);
|
response);
|
||||||
|
@ -542,6 +545,7 @@ int main(int argc, char **argv)
|
||||||
BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
|
BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
|
||||||
"mime type, it is %s instead of %s\n",
|
"mime type, it is %s instead of %s\n",
|
||||||
response, mimetypeaccept);
|
response, mimetypeaccept);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
|
/*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -38,7 +38,7 @@ void dump(const char *text,
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t c;
|
size_t c;
|
||||||
|
|
||||||
unsigned int width=0x10;
|
unsigned int width = 0x10;
|
||||||
|
|
||||||
if(nohex)
|
if(nohex)
|
||||||
/* without the hex output, we can fit more on screen */
|
/* without the hex output, we can fit more on screen */
|
||||||
|
@ -47,30 +47,32 @@ void dump(const char *text,
|
||||||
fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
|
fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
|
||||||
text, (long)size, (long)size);
|
text, (long)size, (long)size);
|
||||||
|
|
||||||
for(i=0; i<size; i+= width) {
|
for(i = 0; i<size; i += width) {
|
||||||
|
|
||||||
fprintf(stream, "%4.4lx: ", (long)i);
|
fprintf(stream, "%4.4lx: ", (long)i);
|
||||||
|
|
||||||
if(!nohex) {
|
if(!nohex) {
|
||||||
/* hex not disabled, show it */
|
/* hex not disabled, show it */
|
||||||
for(c = 0; c < width; c++)
|
for(c = 0; c < width; c++)
|
||||||
if(i+c < size)
|
if(i + c < size)
|
||||||
fprintf(stream, "%02x ", ptr[i+c]);
|
fprintf(stream, "%02x ", ptr[i + c]);
|
||||||
else
|
else
|
||||||
fputs(" ", stream);
|
fputs(" ", stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = 0; (c < width) && (i+c < size); c++) {
|
for(c = 0; (c < width) && (i + c < size); c++) {
|
||||||
/* check for 0D0A; if found, skip past and start a new line of output */
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
|
||||||
i+=(c+2-width);
|
ptr[i + c + 1] == 0x0A) {
|
||||||
|
i += (c + 2 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stream, "%c",
|
fprintf(stream, "%c",
|
||||||
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
(ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
|
||||||
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
|
||||||
i+=(c+3-width);
|
ptr[i + c + 2] == 0x0A) {
|
||||||
|
i += (c + 3 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,28 +136,28 @@ static void mcode_or_die(const char *where, CURLMcode code)
|
||||||
const char *s;
|
const char *s;
|
||||||
switch(code) {
|
switch(code) {
|
||||||
case CURLM_BAD_HANDLE:
|
case CURLM_BAD_HANDLE:
|
||||||
s="CURLM_BAD_HANDLE";
|
s = "CURLM_BAD_HANDLE";
|
||||||
break;
|
break;
|
||||||
case CURLM_BAD_EASY_HANDLE:
|
case CURLM_BAD_EASY_HANDLE:
|
||||||
s="CURLM_BAD_EASY_HANDLE";
|
s = "CURLM_BAD_EASY_HANDLE";
|
||||||
break;
|
break;
|
||||||
case CURLM_OUT_OF_MEMORY:
|
case CURLM_OUT_OF_MEMORY:
|
||||||
s="CURLM_OUT_OF_MEMORY";
|
s = "CURLM_OUT_OF_MEMORY";
|
||||||
break;
|
break;
|
||||||
case CURLM_INTERNAL_ERROR:
|
case CURLM_INTERNAL_ERROR:
|
||||||
s="CURLM_INTERNAL_ERROR";
|
s = "CURLM_INTERNAL_ERROR";
|
||||||
break;
|
break;
|
||||||
case CURLM_UNKNOWN_OPTION:
|
case CURLM_UNKNOWN_OPTION:
|
||||||
s="CURLM_UNKNOWN_OPTION";
|
s = "CURLM_UNKNOWN_OPTION";
|
||||||
break;
|
break;
|
||||||
case CURLM_LAST:
|
case CURLM_LAST:
|
||||||
s="CURLM_LAST";
|
s = "CURLM_LAST";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
s="CURLM_unknown";
|
s = "CURLM_unknown";
|
||||||
break;
|
break;
|
||||||
case CURLM_BAD_SOCKET:
|
case CURLM_BAD_SOCKET:
|
||||||
s="CURLM_BAD_SOCKET";
|
s = "CURLM_BAD_SOCKET";
|
||||||
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
||||||
/* ignore this error */
|
/* ignore this error */
|
||||||
return;
|
return;
|
||||||
|
@ -257,7 +257,7 @@ static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
|
||||||
ev_io_stop(g->loop, &f->ev);
|
ev_io_stop(g->loop, &f->ev);
|
||||||
ev_io_init(&f->ev, event_cb, f->sockfd, kind);
|
ev_io_init(&f->ev, event_cb, f->sockfd, kind);
|
||||||
f->ev.data = g;
|
f->ev.data = g;
|
||||||
f->evset=1;
|
f->evset = 1;
|
||||||
ev_io_start(g->loop, &f->ev);
|
ev_io_start(g->loop, &f->ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,13 +371,13 @@ static void new_conn(char *url, GlobalInfo *g)
|
||||||
static void fifo_cb(EV_P_ struct ev_io *w, int revents)
|
static void fifo_cb(EV_P_ struct ev_io *w, int revents)
|
||||||
{
|
{
|
||||||
char s[1024];
|
char s[1024];
|
||||||
long int rv=0;
|
long int rv = 0;
|
||||||
int n=0;
|
int n = 0;
|
||||||
GlobalInfo *g = (GlobalInfo *)w->data;
|
GlobalInfo *g = (GlobalInfo *)w->data;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
s[0]='\0';
|
s[0]='\0';
|
||||||
rv=fscanf(g->input, "%1023s%n", s, &n);
|
rv = fscanf(g->input, "%1023s%n", s, &n);
|
||||||
s[n]='\0';
|
s[n]='\0';
|
||||||
if(n && s[0]) {
|
if(n && s[0]) {
|
||||||
new_conn(s, g); /* if we read a URL, go get it! */
|
new_conn(s, g); /* if we read a URL, go get it! */
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* See the main() function at the bottom that shows an app that retrieves from
|
* See the main() function at the bottom that shows an app that retrieves from
|
||||||
* a specified url using fgets() and fread() and saves as two output files.
|
* a specified url using fgets() and fread() and saves as two output files.
|
||||||
*
|
*
|
||||||
* Copyright (c) 2003 Simtec Electronics
|
* Copyright (c) 2003, 2017 Simtec Electronics
|
||||||
*
|
*
|
||||||
* Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
|
* Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
|
||||||
* reference to original curl example code
|
* reference to original curl example code
|
||||||
|
@ -58,9 +58,9 @@
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
enum fcurl_type_e {
|
enum fcurl_type_e {
|
||||||
CFTYPE_NONE=0,
|
CFTYPE_NONE = 0,
|
||||||
CFTYPE_FILE=1,
|
CFTYPE_FILE = 1,
|
||||||
CFTYPE_CURL=2
|
CFTYPE_CURL = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
struct fcurl_data
|
struct fcurl_data
|
||||||
|
@ -102,19 +102,19 @@ static size_t write_callback(char *buffer,
|
||||||
URL_FILE *url = (URL_FILE *)userp;
|
URL_FILE *url = (URL_FILE *)userp;
|
||||||
size *= nitems;
|
size *= nitems;
|
||||||
|
|
||||||
rembuff=url->buffer_len - url->buffer_pos; /* remaining space in buffer */
|
rembuff = url->buffer_len - url->buffer_pos; /* remaining space in buffer */
|
||||||
|
|
||||||
if(size > rembuff) {
|
if(size > rembuff) {
|
||||||
/* not enough space in buffer */
|
/* not enough space in buffer */
|
||||||
newbuff=realloc(url->buffer, url->buffer_len + (size - rembuff));
|
newbuff = realloc(url->buffer, url->buffer_len + (size - rembuff));
|
||||||
if(newbuff==NULL) {
|
if(newbuff == NULL) {
|
||||||
fprintf(stderr, "callback buffer grow failed\n");
|
fprintf(stderr, "callback buffer grow failed\n");
|
||||||
size=rembuff;
|
size = rembuff;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* realloc succeeded increase buffer size*/
|
/* realloc succeeded increase buffer size*/
|
||||||
url->buffer_len+=size - rembuff;
|
url->buffer_len += size - rembuff;
|
||||||
url->buffer=newbuff;
|
url->buffer = newbuff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
@ -211,12 +211,12 @@ static int fill_buffer(URL_FILE *file, size_t want)
|
||||||
static int use_buffer(URL_FILE *file, size_t want)
|
static int use_buffer(URL_FILE *file, size_t want)
|
||||||
{
|
{
|
||||||
/* sort out buffer */
|
/* sort out buffer */
|
||||||
if((file->buffer_pos - want) <=0) {
|
if((file->buffer_pos - want) <= 0) {
|
||||||
/* ditch buffer - write will recreate */
|
/* ditch buffer - write will recreate */
|
||||||
free(file->buffer);
|
free(file->buffer);
|
||||||
file->buffer=NULL;
|
file->buffer = NULL;
|
||||||
file->buffer_pos=0;
|
file->buffer_pos = 0;
|
||||||
file->buffer_len=0;
|
file->buffer_len = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* move rest down make it available for later */
|
/* move rest down make it available for later */
|
||||||
|
@ -243,7 +243,8 @@ URL_FILE *url_fopen(const char *url, const char *operation)
|
||||||
|
|
||||||
memset(file, 0, sizeof(URL_FILE));
|
memset(file, 0, sizeof(URL_FILE));
|
||||||
|
|
||||||
if((file->handle.file=fopen(url, operation)))
|
file->handle.file = fopen(url, operation);
|
||||||
|
if(file->handle.file)
|
||||||
file->type = CFTYPE_FILE; /* marked as URL */
|
file->type = CFTYPE_FILE; /* marked as URL */
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
@ -282,11 +283,11 @@ URL_FILE *url_fopen(const char *url, const char *operation)
|
||||||
|
|
||||||
int url_fclose(URL_FILE *file)
|
int url_fclose(URL_FILE *file)
|
||||||
{
|
{
|
||||||
int ret=0;/* default is good return */
|
int ret = 0;/* default is good return */
|
||||||
|
|
||||||
switch(file->type) {
|
switch(file->type) {
|
||||||
case CFTYPE_FILE:
|
case CFTYPE_FILE:
|
||||||
ret=fclose(file->handle.file); /* passthrough */
|
ret = fclose(file->handle.file); /* passthrough */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CFTYPE_CURL:
|
case CFTYPE_CURL:
|
||||||
|
@ -298,8 +299,8 @@ int url_fclose(URL_FILE *file)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* unknown or supported type - oh dear */
|
default: /* unknown or supported type - oh dear */
|
||||||
ret=EOF;
|
ret = EOF;
|
||||||
errno=EBADF;
|
errno = EBADF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,11 +312,11 @@ int url_fclose(URL_FILE *file)
|
||||||
|
|
||||||
int url_feof(URL_FILE *file)
|
int url_feof(URL_FILE *file)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret = 0;
|
||||||
|
|
||||||
switch(file->type) {
|
switch(file->type) {
|
||||||
case CFTYPE_FILE:
|
case CFTYPE_FILE:
|
||||||
ret=feof(file->handle.file);
|
ret = feof(file->handle.file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CFTYPE_CURL:
|
case CFTYPE_CURL:
|
||||||
|
@ -324,8 +325,8 @@ int url_feof(URL_FILE *file)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* unknown or supported type - oh dear */
|
default: /* unknown or supported type - oh dear */
|
||||||
ret=-1;
|
ret = -1;
|
||||||
errno=EBADF;
|
errno = EBADF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -337,7 +338,7 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
|
||||||
|
|
||||||
switch(file->type) {
|
switch(file->type) {
|
||||||
case CFTYPE_FILE:
|
case CFTYPE_FILE:
|
||||||
want=fread(ptr, size, nmemb, file->handle.file);
|
want = fread(ptr, size, nmemb, file->handle.file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CFTYPE_CURL:
|
case CFTYPE_CURL:
|
||||||
|
@ -363,8 +364,8 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* unknown or supported type - oh dear */
|
default: /* unknown or supported type - oh dear */
|
||||||
want=0;
|
want = 0;
|
||||||
errno=EBADF;
|
errno = EBADF;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -395,24 +396,24 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
|
||||||
|
|
||||||
/*buffer contains data */
|
/*buffer contains data */
|
||||||
/* look for newline or eof */
|
/* look for newline or eof */
|
||||||
for(loop=0;loop < want;loop++) {
|
for(loop = 0; loop < want; loop++) {
|
||||||
if(file->buffer[loop] == '\n') {
|
if(file->buffer[loop] == '\n') {
|
||||||
want=loop+1;/* include newline */
|
want = loop + 1;/* include newline */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* xfer data to caller */
|
/* xfer data to caller */
|
||||||
memcpy(ptr, file->buffer, want);
|
memcpy(ptr, file->buffer, want);
|
||||||
ptr[want]=0;/* always null terminate */
|
ptr[want] = 0;/* always null terminate */
|
||||||
|
|
||||||
use_buffer(file, want);
|
use_buffer(file, want);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* unknown or supported type - oh dear */
|
default: /* unknown or supported type - oh dear */
|
||||||
ptr=NULL;
|
ptr = NULL;
|
||||||
errno=EBADF;
|
errno = EBADF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,9 +436,9 @@ void url_rewind(URL_FILE *file)
|
||||||
|
|
||||||
/* ditch buffer - write will recreate - resets stream pos*/
|
/* ditch buffer - write will recreate - resets stream pos*/
|
||||||
free(file->buffer);
|
free(file->buffer);
|
||||||
file->buffer=NULL;
|
file->buffer = NULL;
|
||||||
file->buffer_pos=0;
|
file->buffer_pos = 0;
|
||||||
file->buffer_len=0;
|
file->buffer_len = 0;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -463,12 +464,12 @@ int main(int argc, char *argv[])
|
||||||
const char *url;
|
const char *url;
|
||||||
|
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
url="http://192.168.7.3/testfile";/* default to testurl */
|
url = "http://192.168.7.3/testfile";/* default to testurl */
|
||||||
else
|
else
|
||||||
url=argv[1];/* use passed url */
|
url = argv[1];/* use passed url */
|
||||||
|
|
||||||
/* copy from url line by line with fgets */
|
/* copy from url line by line with fgets */
|
||||||
outf=fopen(FGETSFILE, "wb+");
|
outf = fopen(FGETSFILE, "wb+");
|
||||||
if(!outf) {
|
if(!outf) {
|
||||||
perror("couldn't open fgets output file\n");
|
perror("couldn't open fgets output file\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -492,7 +493,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
|
|
||||||
/* Copy from url with fread */
|
/* Copy from url with fread */
|
||||||
outf=fopen(FREADFILE, "wb+");
|
outf = fopen(FREADFILE, "wb+");
|
||||||
if(!outf) {
|
if(!outf) {
|
||||||
perror("couldn't open fread output file\n");
|
perror("couldn't open fread output file\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -516,7 +517,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
|
|
||||||
/* Test rewind */
|
/* Test rewind */
|
||||||
outf=fopen(REWINDFILE, "wb+");
|
outf = fopen(REWINDFILE, "wb+");
|
||||||
if(!outf) {
|
if(!outf) {
|
||||||
perror("couldn't open fread output file\n");
|
perror("couldn't open fread output file\n");
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -35,10 +35,10 @@ struct FtpFile {
|
||||||
|
|
||||||
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
|
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
|
||||||
{
|
{
|
||||||
struct FtpFile *out=(struct FtpFile *)stream;
|
struct FtpFile *out = (struct FtpFile *)stream;
|
||||||
if(out && !out->stream) {
|
if(out && !out->stream) {
|
||||||
/* open file for writing */
|
/* open file for writing */
|
||||||
out->stream=fopen(out->filename, "wb");
|
out->stream = fopen(out->filename, "wb");
|
||||||
if(!out->stream)
|
if(!out->stream)
|
||||||
return -1; /* failure, can't open file to write */
|
return -1; /* failure, can't open file to write */
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ int main(void)
|
||||||
{
|
{
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
struct FtpFile ftpfile={
|
struct FtpFile ftpfile = {
|
||||||
"curl.tar.gz", /* name to store the file as if successful */
|
"curl.tar.gz", /* name to store the file as if successful */
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -37,10 +37,10 @@ struct FtpFile {
|
||||||
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
|
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
|
||||||
void *stream)
|
void *stream)
|
||||||
{
|
{
|
||||||
struct FtpFile *out=(struct FtpFile *)stream;
|
struct FtpFile *out = (struct FtpFile *)stream;
|
||||||
if(out && !out->stream) {
|
if(out && !out->stream) {
|
||||||
/* open file for writing */
|
/* open file for writing */
|
||||||
out->stream=fopen(out->filename, "wb");
|
out->stream = fopen(out->filename, "wb");
|
||||||
if(!out->stream)
|
if(!out->stream)
|
||||||
return -1; /* failure, can't open file to write */
|
return -1; /* failure, can't open file to write */
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ int main(void)
|
||||||
{
|
{
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
struct FtpFile ftpfile={
|
struct FtpFile ftpfile = {
|
||||||
"yourfile.bin", /* name to store the file as if successful */
|
"yourfile.bin", /* name to store the file as if successful */
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -71,7 +71,7 @@ int main(void)
|
||||||
struct stat file_info;
|
struct stat file_info;
|
||||||
curl_off_t fsize;
|
curl_off_t fsize;
|
||||||
|
|
||||||
struct curl_slist *headerlist=NULL;
|
struct curl_slist *headerlist = NULL;
|
||||||
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
|
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
|
||||||
static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
|
static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -26,44 +26,32 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1300)
|
|
||||||
# error _snscanf requires MSVC 7.0 or later.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The MinGW headers are missing a few Win32 function definitions,
|
|
||||||
you shouldn't need this if you use VC++ */
|
|
||||||
#if defined(__MINGW32__) && !defined(__MINGW64__)
|
|
||||||
int __cdecl _snscanf(const char *input, size_t length,
|
|
||||||
const char *format, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* parse headers for Content-Length */
|
/* parse headers for Content-Length */
|
||||||
size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
static size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb,
|
||||||
|
void *stream)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
long len = 0;
|
long len = 0;
|
||||||
|
|
||||||
/* _snscanf() is Win32 specific */
|
r = sscanf(ptr, "Content-Length: %ld\n", &len);
|
||||||
r = _snscanf(ptr, size * nmemb, "Content-Length: %ld\n", &len);
|
if(r)
|
||||||
|
|
||||||
if(r) /* Microsoft: we don't read the specs */
|
|
||||||
*((long *) stream) = len;
|
*((long *) stream) = len;
|
||||||
|
|
||||||
return size * nmemb;
|
return size * nmemb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* discard downloaded data */
|
/* discard downloaded data */
|
||||||
size_t discardfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
static size_t discardfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
{
|
{
|
||||||
|
(void)ptr;
|
||||||
|
(void)stream;
|
||||||
return size * nmemb;
|
return size * nmemb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* read data to upload */
|
/* read data to upload */
|
||||||
size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
{
|
{
|
||||||
FILE *f = stream;
|
FILE *f = stream;
|
||||||
size_t n;
|
size_t n;
|
||||||
|
@ -77,8 +65,8 @@ size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int upload(CURL *curlhandle, const char *remotepath, const char *localpath,
|
static int upload(CURL *curlhandle, const char *remotepath,
|
||||||
long timeout, long tries)
|
const char *localpath, long timeout, long tries)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
long uploaded_len = 0;
|
long uploaded_len = 0;
|
||||||
|
@ -156,7 +144,7 @@ int upload(CURL *curlhandle, const char *remotepath, const char *localpath,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int c, char **argv)
|
int main(void)
|
||||||
{
|
{
|
||||||
CURL *curlhandle = NULL;
|
CURL *curlhandle = NULL;
|
||||||
|
|
||||||
|
|
|
@ -99,14 +99,14 @@ static void mcode_or_die(const char *where, CURLMcode code)
|
||||||
if(CURLM_OK != code) {
|
if(CURLM_OK != code) {
|
||||||
const char *s;
|
const char *s;
|
||||||
switch(code) {
|
switch(code) {
|
||||||
case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
|
case CURLM_BAD_HANDLE: s = "CURLM_BAD_HANDLE"; break;
|
||||||
case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
|
case CURLM_BAD_EASY_HANDLE: s = "CURLM_BAD_EASY_HANDLE"; break;
|
||||||
case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
|
case CURLM_OUT_OF_MEMORY: s = "CURLM_OUT_OF_MEMORY"; break;
|
||||||
case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
|
case CURLM_INTERNAL_ERROR: s = "CURLM_INTERNAL_ERROR"; break;
|
||||||
case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET"; break;
|
case CURLM_BAD_SOCKET: s = "CURLM_BAD_SOCKET"; break;
|
||||||
case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
|
case CURLM_UNKNOWN_OPTION: s = "CURLM_UNKNOWN_OPTION"; break;
|
||||||
case CURLM_LAST: s="CURLM_LAST"; break;
|
case CURLM_LAST: s = "CURLM_LAST"; break;
|
||||||
default: s="CURLM_unknown";
|
default: s = "CURLM_unknown";
|
||||||
}
|
}
|
||||||
MSG_OUT("ERROR: %s returns %s\n", where, s);
|
MSG_OUT("ERROR: %s returns %s\n", where, s);
|
||||||
exit(code);
|
exit(code);
|
||||||
|
@ -156,7 +156,7 @@ static gboolean timer_cb(gpointer data)
|
||||||
static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
|
static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
|
||||||
{
|
{
|
||||||
struct timeval timeout;
|
struct timeval timeout;
|
||||||
GlobalInfo *g=(GlobalInfo *)userp;
|
GlobalInfo *g = (GlobalInfo *)userp;
|
||||||
timeout.tv_sec = timeout_ms/1000;
|
timeout.tv_sec = timeout_ms/1000;
|
||||||
timeout.tv_usec = (timeout_ms%1000)*1000;
|
timeout.tv_usec = (timeout_ms%1000)*1000;
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
|
||||||
{
|
{
|
||||||
GlobalInfo *g = (GlobalInfo*) data;
|
GlobalInfo *g = (GlobalInfo*) data;
|
||||||
CURLMcode rc;
|
CURLMcode rc;
|
||||||
int fd=g_io_channel_unix_get_fd(ch);
|
int fd = g_io_channel_unix_get_fd(ch);
|
||||||
|
|
||||||
int action =
|
int action =
|
||||||
(condition & G_IO_IN ? CURL_CSELECT_IN : 0) |
|
(condition & G_IO_IN ? CURL_CSELECT_IN : 0) |
|
||||||
|
@ -228,7 +228,7 @@ static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
|
||||||
if(f->ev) {
|
if(f->ev) {
|
||||||
g_source_remove(f->ev);
|
g_source_remove(f->ev);
|
||||||
}
|
}
|
||||||
f->ev=g_io_add_watch(f->ch, kind, event_cb, g);
|
f->ev = g_io_add_watch(f->ch, kind, event_cb, g);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize a new SockInfo structure */
|
/* Initialize a new SockInfo structure */
|
||||||
|
@ -237,7 +237,7 @@ static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
|
||||||
SockInfo *fdp = g_malloc0(sizeof(SockInfo));
|
SockInfo *fdp = g_malloc0(sizeof(SockInfo));
|
||||||
|
|
||||||
fdp->global = g;
|
fdp->global = g;
|
||||||
fdp->ch=g_io_channel_unix_new(s);
|
fdp->ch = g_io_channel_unix_new(s);
|
||||||
setsock(fdp, s, easy, action, g);
|
setsock(fdp, s, easy, action, g);
|
||||||
curl_multi_assign(g->multi, s, fdp);
|
curl_multi_assign(g->multi, s, fdp);
|
||||||
}
|
}
|
||||||
|
@ -319,7 +319,7 @@ static void new_conn(char *url, GlobalInfo *g)
|
||||||
curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 30L);
|
curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 30L);
|
||||||
|
|
||||||
MSG_OUT("Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
|
MSG_OUT("Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
|
||||||
rc =curl_multi_add_handle(g->multi, conn->easy);
|
rc = curl_multi_add_handle(g->multi, conn->easy);
|
||||||
mcode_or_die("new_conn: curl_multi_add_handle", rc);
|
mcode_or_die("new_conn: curl_multi_add_handle", rc);
|
||||||
|
|
||||||
/* note that the add_handle() will set a time-out to trigger very soon so
|
/* note that the add_handle() will set a time-out to trigger very soon so
|
||||||
|
@ -331,11 +331,11 @@ static gboolean fifo_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
|
||||||
{
|
{
|
||||||
#define BUF_SIZE 1024
|
#define BUF_SIZE 1024
|
||||||
gsize len, tp;
|
gsize len, tp;
|
||||||
gchar *buf, *tmp, *all=NULL;
|
gchar *buf, *tmp, *all = NULL;
|
||||||
GIOStatus rv;
|
GIOStatus rv;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
GError *err=NULL;
|
GError *err = NULL;
|
||||||
rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
|
rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
|
||||||
if(buf) {
|
if(buf) {
|
||||||
if(tp) {
|
if(tp) {
|
||||||
|
@ -345,15 +345,15 @@ static gboolean fifo_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
|
||||||
g_free(buf);
|
g_free(buf);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
buf = g_malloc(BUF_SIZE+1);
|
buf = g_malloc(BUF_SIZE + 1);
|
||||||
while(TRUE) {
|
while(TRUE) {
|
||||||
buf[BUF_SIZE]='\0';
|
buf[BUF_SIZE]='\0';
|
||||||
g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
|
g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
|
||||||
if(len) {
|
if(len) {
|
||||||
buf[len]='\0';
|
buf[len]='\0';
|
||||||
if(all) {
|
if(all) {
|
||||||
tmp=all;
|
tmp = all;
|
||||||
all=g_strdup_printf("%s%s", tmp, buf);
|
all = g_strdup_printf("%s%s", tmp, buf);
|
||||||
g_free(tmp);
|
g_free(tmp);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -417,12 +417,12 @@ int main(int argc, char **argv)
|
||||||
GMainLoop*gmain;
|
GMainLoop*gmain;
|
||||||
int fd;
|
int fd;
|
||||||
GIOChannel* ch;
|
GIOChannel* ch;
|
||||||
g=g_malloc0(sizeof(GlobalInfo));
|
g = g_malloc0(sizeof(GlobalInfo));
|
||||||
|
|
||||||
fd=init_fifo();
|
fd = init_fifo();
|
||||||
ch=g_io_channel_unix_new(fd);
|
ch = g_io_channel_unix_new(fd);
|
||||||
g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
|
g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
|
||||||
gmain=g_main_loop_new(NULL, FALSE);
|
gmain = g_main_loop_new(NULL, FALSE);
|
||||||
g->multi = curl_multi_init();
|
g->multi = curl_multi_init();
|
||||||
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
|
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
|
||||||
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
|
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
|
||||||
|
|
|
@ -137,15 +137,15 @@ static void mcode_or_die(const char *where, CURLMcode code)
|
||||||
if(CURLM_OK != code) {
|
if(CURLM_OK != code) {
|
||||||
const char *s;
|
const char *s;
|
||||||
switch(code) {
|
switch(code) {
|
||||||
case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
|
case CURLM_BAD_HANDLE: s = "CURLM_BAD_HANDLE"; break;
|
||||||
case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
|
case CURLM_BAD_EASY_HANDLE: s = "CURLM_BAD_EASY_HANDLE"; break;
|
||||||
case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
|
case CURLM_OUT_OF_MEMORY: s = "CURLM_OUT_OF_MEMORY"; break;
|
||||||
case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
|
case CURLM_INTERNAL_ERROR: s = "CURLM_INTERNAL_ERROR"; break;
|
||||||
case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
|
case CURLM_UNKNOWN_OPTION: s = "CURLM_UNKNOWN_OPTION"; break;
|
||||||
case CURLM_LAST: s="CURLM_LAST"; break;
|
case CURLM_LAST: s = "CURLM_LAST"; break;
|
||||||
default: s="CURLM_unknown";
|
default: s = "CURLM_unknown";
|
||||||
break;
|
break;
|
||||||
case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET";
|
case CURLM_BAD_SOCKET: s = "CURLM_BAD_SOCKET";
|
||||||
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
||||||
/* ignore this error */
|
/* ignore this error */
|
||||||
return;
|
return;
|
||||||
|
@ -359,15 +359,15 @@ static void new_conn(char *url, GlobalInfo *g)
|
||||||
static void fifo_cb(int fd, short event, void *arg)
|
static void fifo_cb(int fd, short event, void *arg)
|
||||||
{
|
{
|
||||||
char s[1024];
|
char s[1024];
|
||||||
long int rv=0;
|
long int rv = 0;
|
||||||
int n=0;
|
int n = 0;
|
||||||
GlobalInfo *g = (GlobalInfo *)arg;
|
GlobalInfo *g = (GlobalInfo *)arg;
|
||||||
(void)fd; /* unused */
|
(void)fd; /* unused */
|
||||||
(void)event; /* unused */
|
(void)event; /* unused */
|
||||||
|
|
||||||
do {
|
do {
|
||||||
s[0]='\0';
|
s[0]='\0';
|
||||||
rv=fscanf(g->input, "%1023s%n", s, &n);
|
rv = fscanf(g->input, "%1023s%n", s, &n);
|
||||||
s[n]='\0';
|
s[n]='\0';
|
||||||
if(n && s[0]) {
|
if(n && s[0]) {
|
||||||
new_conn(s, arg); /* if we read a URL, go get it! */
|
new_conn(s, arg); /* if we read a URL, go get it! */
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -52,7 +52,7 @@ void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
|
||||||
TidyAttr attr;
|
TidyAttr attr;
|
||||||
printf("%*.*s%s ", indent, indent, "<", name);
|
printf("%*.*s%s ", indent, indent, "<", name);
|
||||||
/* walk the attribute list */
|
/* walk the attribute list */
|
||||||
for(attr=tidyAttrFirst(child); attr; attr=tidyAttrNext(attr) ) {
|
for(attr = tidyAttrFirst(child); attr; attr = tidyAttrNext(attr) ) {
|
||||||
printf(tidyAttrName(attr));
|
printf(tidyAttrName(attr));
|
||||||
tidyAttrValue(attr)?printf("=\"%s\" ",
|
tidyAttrValue(attr)?printf("=\"%s\" ",
|
||||||
tidyAttrValue(attr)):printf(" ");
|
tidyAttrValue(attr)):printf(" ");
|
||||||
|
@ -95,7 +95,7 @@ int main(int argc, char **argv)
|
||||||
tidyBufInit(&docbuf);
|
tidyBufInit(&docbuf);
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
|
||||||
err=curl_easy_perform(curl);
|
err = curl_easy_perform(curl);
|
||||||
if(!err) {
|
if(!err) {
|
||||||
err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
|
err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
|
||||||
if(err >= 0) {
|
if(err >= 0) {
|
||||||
|
|
|
@ -51,7 +51,7 @@ static int num_transfers;
|
||||||
static int hnd2num(CURL *hnd)
|
static int hnd2num(CURL *hnd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i=0; i< num_transfers; i++) {
|
for(i = 0; i< num_transfers; i++) {
|
||||||
if(curl_hnd[i] == hnd)
|
if(curl_hnd[i] == hnd)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t c;
|
size_t c;
|
||||||
|
|
||||||
unsigned int width=0x10;
|
unsigned int width = 0x10;
|
||||||
|
|
||||||
if(nohex)
|
if(nohex)
|
||||||
/* without the hex output, we can fit more on screen */
|
/* without the hex output, we can fit more on screen */
|
||||||
|
@ -74,30 +74,32 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
|
||||||
fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
|
fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
|
||||||
num, text, (long)size, (long)size);
|
num, text, (long)size, (long)size);
|
||||||
|
|
||||||
for(i=0; i<size; i+= width) {
|
for(i = 0; i<size; i += width) {
|
||||||
|
|
||||||
fprintf(stderr, "%4.4lx: ", (long)i);
|
fprintf(stderr, "%4.4lx: ", (long)i);
|
||||||
|
|
||||||
if(!nohex) {
|
if(!nohex) {
|
||||||
/* hex not disabled, show it */
|
/* hex not disabled, show it */
|
||||||
for(c = 0; c < width; c++)
|
for(c = 0; c < width; c++)
|
||||||
if(i+c < size)
|
if(i + c < size)
|
||||||
fprintf(stderr, "%02x ", ptr[i+c]);
|
fprintf(stderr, "%02x ", ptr[i + c]);
|
||||||
else
|
else
|
||||||
fputs(" ", stderr);
|
fputs(" ", stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = 0; (c < width) && (i+c < size); c++) {
|
for(c = 0; (c < width) && (i + c < size); c++) {
|
||||||
/* check for 0D0A; if found, skip past and start a new line of output */
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
|
||||||
i+=(c+2-width);
|
ptr[i + c + 1] == 0x0A) {
|
||||||
|
i += (c + 2 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "%c",
|
fprintf(stderr, "%c",
|
||||||
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
(ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
|
||||||
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
|
||||||
i+=(c+3-width);
|
ptr[i + c + 2] == 0x0A) {
|
||||||
|
i += (c + 3 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,7 +201,7 @@ int main(int argc, char **argv)
|
||||||
/* init a multi stack */
|
/* init a multi stack */
|
||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
for(i=0; i<num_transfers; i++) {
|
for(i = 0; i<num_transfers; i++) {
|
||||||
easy[i] = curl_easy_init();
|
easy[i] = curl_easy_init();
|
||||||
/* set options */
|
/* set options */
|
||||||
setup(easy[i], i);
|
setup(easy[i], i);
|
||||||
|
@ -269,7 +271,7 @@ int main(int argc, char **argv)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
@ -286,7 +288,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
curl_multi_cleanup(multi_handle);
|
curl_multi_cleanup(multi_handle);
|
||||||
|
|
||||||
for(i=0; i<num_transfers; i++)
|
for(i = 0; i<num_transfers; i++)
|
||||||
curl_easy_cleanup(easy[i]);
|
curl_easy_cleanup(easy[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -45,7 +45,7 @@ void dump(const char *text, unsigned char *ptr, size_t size,
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t c;
|
size_t c;
|
||||||
|
|
||||||
unsigned int width=0x10;
|
unsigned int width = 0x10;
|
||||||
|
|
||||||
if(nohex)
|
if(nohex)
|
||||||
/* without the hex output, we can fit more on screen */
|
/* without the hex output, we can fit more on screen */
|
||||||
|
@ -54,30 +54,32 @@ void dump(const char *text, unsigned char *ptr, size_t size,
|
||||||
fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
|
fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
|
||||||
text, (long)size, (long)size);
|
text, (long)size, (long)size);
|
||||||
|
|
||||||
for(i=0; i<size; i+= width) {
|
for(i = 0; i<size; i += width) {
|
||||||
|
|
||||||
fprintf(stderr, "%4.4lx: ", (long)i);
|
fprintf(stderr, "%4.4lx: ", (long)i);
|
||||||
|
|
||||||
if(!nohex) {
|
if(!nohex) {
|
||||||
/* hex not disabled, show it */
|
/* hex not disabled, show it */
|
||||||
for(c = 0; c < width; c++)
|
for(c = 0; c < width; c++)
|
||||||
if(i+c < size)
|
if(i + c < size)
|
||||||
fprintf(stderr, "%02x ", ptr[i+c]);
|
fprintf(stderr, "%02x ", ptr[i + c]);
|
||||||
else
|
else
|
||||||
fputs(" ", stderr);
|
fputs(" ", stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = 0; (c < width) && (i+c < size); c++) {
|
for(c = 0; (c < width) && (i + c < size); c++) {
|
||||||
/* check for 0D0A; if found, skip past and start a new line of output */
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
|
||||||
i+=(c+2-width);
|
ptr[i + c + 1] == 0x0A) {
|
||||||
|
i += (c + 2 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "%c",
|
fprintf(stderr, "%c",
|
||||||
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
(ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
|
||||||
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
|
||||||
i+=(c+3-width);
|
ptr[i + c + 2] == 0x0A) {
|
||||||
|
i += (c + 3 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -181,7 +183,7 @@ static int server_push_callback(CURL *parent,
|
||||||
fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
|
fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
|
||||||
count, (int)num_headers);
|
count, (int)num_headers);
|
||||||
|
|
||||||
for(i=0; i<num_headers; i++) {
|
for(i = 0; i<num_headers; i++) {
|
||||||
headp = curl_pushheader_bynum(headers, i);
|
headp = curl_pushheader_bynum(headers, i);
|
||||||
fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
|
fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
|
||||||
}
|
}
|
||||||
|
@ -204,7 +206,7 @@ int main(void)
|
||||||
CURL *easy;
|
CURL *easy;
|
||||||
CURLM *multi_handle;
|
CURLM *multi_handle;
|
||||||
int still_running; /* keep number of running handles */
|
int still_running; /* keep number of running handles */
|
||||||
int transfers=1; /* we start with one */
|
int transfers = 1; /* we start with one */
|
||||||
struct CURLMsg *m;
|
struct CURLMsg *m;
|
||||||
|
|
||||||
/* init a multi stack */
|
/* init a multi stack */
|
||||||
|
@ -281,7 +283,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
|
|
@ -53,7 +53,7 @@ static int num_transfers;
|
||||||
static int hnd2num(CURL *hnd)
|
static int hnd2num(CURL *hnd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i=0; i< num_transfers; i++) {
|
for(i = 0; i< num_transfers; i++) {
|
||||||
if(curl_hnd[i] == hnd)
|
if(curl_hnd[i] == hnd)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t c;
|
size_t c;
|
||||||
unsigned int width=0x10;
|
unsigned int width = 0x10;
|
||||||
|
|
||||||
if(nohex)
|
if(nohex)
|
||||||
/* without the hex output, we can fit more on screen */
|
/* without the hex output, we can fit more on screen */
|
||||||
|
@ -75,30 +75,32 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
|
||||||
fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
|
fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
|
||||||
num, text, (long)size, (long)size);
|
num, text, (long)size, (long)size);
|
||||||
|
|
||||||
for(i=0; i<size; i+= width) {
|
for(i = 0; i<size; i += width) {
|
||||||
|
|
||||||
fprintf(stderr, "%4.4lx: ", (long)i);
|
fprintf(stderr, "%4.4lx: ", (long)i);
|
||||||
|
|
||||||
if(!nohex) {
|
if(!nohex) {
|
||||||
/* hex not disabled, show it */
|
/* hex not disabled, show it */
|
||||||
for(c = 0; c < width; c++)
|
for(c = 0; c < width; c++)
|
||||||
if(i+c < size)
|
if(i + c < size)
|
||||||
fprintf(stderr, "%02x ", ptr[i+c]);
|
fprintf(stderr, "%02x ", ptr[i + c]);
|
||||||
else
|
else
|
||||||
fputs(" ", stderr);
|
fputs(" ", stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = 0; (c < width) && (i+c < size); c++) {
|
for(c = 0; (c < width) && (i + c < size); c++) {
|
||||||
/* check for 0D0A; if found, skip past and start a new line of output */
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
|
||||||
i+=(c+2-width);
|
ptr[i + c + 1] == 0x0A) {
|
||||||
|
i += (c + 2 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "%c",
|
fprintf(stderr, "%c",
|
||||||
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
(ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
|
||||||
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
|
||||||
i+=(c+3-width);
|
ptr[i + c + 2] == 0x0A) {
|
||||||
|
i += (c + 3 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -260,7 +262,7 @@ int main(int argc, char **argv)
|
||||||
/* init a multi stack */
|
/* init a multi stack */
|
||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
for(i=0; i<num_transfers; i++) {
|
for(i = 0; i<num_transfers; i++) {
|
||||||
easy[i] = curl_easy_init();
|
easy[i] = curl_easy_init();
|
||||||
/* set options */
|
/* set options */
|
||||||
setup(easy[i], i, filename);
|
setup(easy[i], i, filename);
|
||||||
|
@ -333,7 +335,7 @@ int main(int argc, char **argv)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
@ -350,7 +352,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
curl_multi_cleanup(multi_handle);
|
curl_multi_cleanup(multi_handle);
|
||||||
|
|
||||||
for(i=0; i<num_transfers; i++)
|
for(i = 0; i<num_transfers; i++)
|
||||||
curl_easy_cleanup(easy[i]);
|
curl_easy_cleanup(easy[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -69,7 +69,7 @@ int main(int argc, char **argv)
|
||||||
if(argc < 3)
|
if(argc < 3)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
file= argv[1];
|
file = argv[1];
|
||||||
url = argv[2];
|
url = argv[2];
|
||||||
|
|
||||||
/* get the file size of the local file */
|
/* get the file size of the local file */
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -144,7 +144,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
|
if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -55,7 +55,7 @@ int main(void)
|
||||||
int msgs_left; /* how many messages are left */
|
int msgs_left; /* how many messages are left */
|
||||||
|
|
||||||
/* Allocate one CURL handle per transfer */
|
/* Allocate one CURL handle per transfer */
|
||||||
for(i=0; i<HANDLECOUNT; i++)
|
for(i = 0; i<HANDLECOUNT; i++)
|
||||||
handles[i] = curl_easy_init();
|
handles[i] = curl_easy_init();
|
||||||
|
|
||||||
/* set the options (I left out a few, you'll get the point anyway) */
|
/* set the options (I left out a few, you'll get the point anyway) */
|
||||||
|
@ -68,7 +68,7 @@ int main(void)
|
||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
/* add the individual transfers */
|
/* add the individual transfers */
|
||||||
for(i=0; i<HANDLECOUNT; i++)
|
for(i = 0; i<HANDLECOUNT; i++)
|
||||||
curl_multi_add_handle(multi_handle, handles[i]);
|
curl_multi_add_handle(multi_handle, handles[i]);
|
||||||
|
|
||||||
/* we start some action by calling perform right away */
|
/* we start some action by calling perform right away */
|
||||||
|
@ -130,7 +130,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
@ -150,7 +150,7 @@ int main(void)
|
||||||
int idx, found = 0;
|
int idx, found = 0;
|
||||||
|
|
||||||
/* Find out which handle this message is about */
|
/* Find out which handle this message is about */
|
||||||
for(idx=0; idx<HANDLECOUNT; idx++) {
|
for(idx = 0; idx<HANDLECOUNT; idx++) {
|
||||||
found = (msg->easy_handle == handles[idx]);
|
found = (msg->easy_handle == handles[idx]);
|
||||||
if(found)
|
if(found)
|
||||||
break;
|
break;
|
||||||
|
@ -170,7 +170,7 @@ int main(void)
|
||||||
curl_multi_cleanup(multi_handle);
|
curl_multi_cleanup(multi_handle);
|
||||||
|
|
||||||
/* Free the CURL handles */
|
/* Free the CURL handles */
|
||||||
for(i=0; i<HANDLECOUNT; i++)
|
for(i = 0; i<HANDLECOUNT; i++)
|
||||||
curl_easy_cleanup(handles[i]);
|
curl_easy_cleanup(handles[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -45,7 +45,7 @@ void dump(const char *text,
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t c;
|
size_t c;
|
||||||
|
|
||||||
unsigned int width=0x10;
|
unsigned int width = 0x10;
|
||||||
|
|
||||||
if(nohex)
|
if(nohex)
|
||||||
/* without the hex output, we can fit more on screen */
|
/* without the hex output, we can fit more on screen */
|
||||||
|
@ -54,30 +54,32 @@ void dump(const char *text,
|
||||||
fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
|
fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
|
||||||
text, (long)size, (long)size);
|
text, (long)size, (long)size);
|
||||||
|
|
||||||
for(i=0; i<size; i+= width) {
|
for(i = 0; i<size; i += width) {
|
||||||
|
|
||||||
fprintf(stream, "%4.4lx: ", (long)i);
|
fprintf(stream, "%4.4lx: ", (long)i);
|
||||||
|
|
||||||
if(!nohex) {
|
if(!nohex) {
|
||||||
/* hex not disabled, show it */
|
/* hex not disabled, show it */
|
||||||
for(c = 0; c < width; c++)
|
for(c = 0; c < width; c++)
|
||||||
if(i+c < size)
|
if(i + c < size)
|
||||||
fprintf(stream, "%02x ", ptr[i+c]);
|
fprintf(stream, "%02x ", ptr[i + c]);
|
||||||
else
|
else
|
||||||
fputs(" ", stream);
|
fputs(" ", stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = 0; (c < width) && (i+c < size); c++) {
|
for(c = 0; (c < width) && (i + c < size); c++) {
|
||||||
/* check for 0D0A; if found, skip past and start a new line of output */
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
|
||||||
i+=(c+2-width);
|
ptr[i + c + 1] == 0x0A) {
|
||||||
|
i += (c + 2 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(stream, "%c",
|
fprintf(stream, "%c",
|
||||||
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
(ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
|
||||||
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
|
||||||
i+=(c+3-width);
|
ptr[i + c + 2] == 0x0A) {
|
||||||
|
i += (c + 3 - width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +206,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -119,7 +119,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
|
|
@ -0,0 +1,171 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
*
|
||||||
|
* This software is licensed as described in the file COPYING, which
|
||||||
|
* you should have received as part of this distribution. The terms
|
||||||
|
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
/* <DESC>
|
||||||
|
* using the multi interface to do a multipart formpost without blocking
|
||||||
|
* </DESC>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
|
||||||
|
CURLM *multi_handle;
|
||||||
|
int still_running;
|
||||||
|
|
||||||
|
struct curl_httppost *formpost = NULL;
|
||||||
|
struct curl_httppost *lastptr = NULL;
|
||||||
|
struct curl_slist *headerlist = NULL;
|
||||||
|
static const char buf[] = "Expect:";
|
||||||
|
|
||||||
|
/* Fill in the file upload field. This makes libcurl load data from
|
||||||
|
the given file name when curl_easy_perform() is called. */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "sendfile",
|
||||||
|
CURLFORM_FILE, "postit2.c",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
/* Fill in the filename field */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "filename",
|
||||||
|
CURLFORM_COPYCONTENTS, "postit2.c",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
/* Fill in the submit field too, even if this is rarely needed */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "submit",
|
||||||
|
CURLFORM_COPYCONTENTS, "send",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
|
/* initialize custom header list (stating that Expect: 100-continue is not
|
||||||
|
wanted */
|
||||||
|
headerlist = curl_slist_append(headerlist, buf);
|
||||||
|
if(curl && multi_handle) {
|
||||||
|
|
||||||
|
/* what URL that receives this POST */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/upload.cgi");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
|
||||||
|
|
||||||
|
curl_multi_add_handle(multi_handle, curl);
|
||||||
|
|
||||||
|
curl_multi_perform(multi_handle, &still_running);
|
||||||
|
|
||||||
|
do {
|
||||||
|
struct timeval timeout;
|
||||||
|
int rc; /* select() return code */
|
||||||
|
CURLMcode mc; /* curl_multi_fdset() return code */
|
||||||
|
|
||||||
|
fd_set fdread;
|
||||||
|
fd_set fdwrite;
|
||||||
|
fd_set fdexcep;
|
||||||
|
int maxfd = -1;
|
||||||
|
|
||||||
|
long curl_timeo = -1;
|
||||||
|
|
||||||
|
FD_ZERO(&fdread);
|
||||||
|
FD_ZERO(&fdwrite);
|
||||||
|
FD_ZERO(&fdexcep);
|
||||||
|
|
||||||
|
/* set a suitable timeout to play around with */
|
||||||
|
timeout.tv_sec = 1;
|
||||||
|
timeout.tv_usec = 0;
|
||||||
|
|
||||||
|
curl_multi_timeout(multi_handle, &curl_timeo);
|
||||||
|
if(curl_timeo >= 0) {
|
||||||
|
timeout.tv_sec = curl_timeo / 1000;
|
||||||
|
if(timeout.tv_sec > 1)
|
||||||
|
timeout.tv_sec = 1;
|
||||||
|
else
|
||||||
|
timeout.tv_usec = (curl_timeo % 1000) * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get file descriptors from the transfers */
|
||||||
|
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
if(mc != CURLM_OK) {
|
||||||
|
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* On success the value of maxfd is guaranteed to be >= -1. We call
|
||||||
|
select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
|
||||||
|
no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
|
||||||
|
to sleep 100ms, which is the minimum suggested value in the
|
||||||
|
curl_multi_fdset() doc. */
|
||||||
|
|
||||||
|
if(maxfd == -1) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
Sleep(100);
|
||||||
|
rc = 0;
|
||||||
|
#else
|
||||||
|
/* Portable sleep for platforms other than Windows. */
|
||||||
|
struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
|
||||||
|
rc = select(0, NULL, NULL, NULL, &wait);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
|
If you need access to the original value save a copy beforehand. */
|
||||||
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(rc) {
|
||||||
|
case -1:
|
||||||
|
/* select error */
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
/* timeout or readable/writable sockets */
|
||||||
|
printf("perform!\n");
|
||||||
|
curl_multi_perform(multi_handle, &still_running);
|
||||||
|
printf("running: %d!\n", still_running);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while(still_running);
|
||||||
|
|
||||||
|
curl_multi_cleanup(multi_handle);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
|
/* then cleanup the formpost chain */
|
||||||
|
curl_formfree(formpost);
|
||||||
|
|
||||||
|
/* free slist */
|
||||||
|
curl_slist_free_all(headerlist);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -37,47 +37,43 @@ int main(void)
|
||||||
CURLM *multi_handle;
|
CURLM *multi_handle;
|
||||||
int still_running;
|
int still_running;
|
||||||
|
|
||||||
struct curl_httppost *formpost=NULL;
|
curl_mime *form = NULL;
|
||||||
struct curl_httppost *lastptr=NULL;
|
curl_mimepart *field = NULL;
|
||||||
struct curl_slist *headerlist=NULL;
|
struct curl_slist *headerlist = NULL;
|
||||||
static const char buf[] = "Expect:";
|
static const char buf[] = "Expect:";
|
||||||
|
|
||||||
/* Fill in the file upload field. This makes libcurl load data from
|
|
||||||
the given file name when curl_easy_perform() is called. */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "sendfile",
|
|
||||||
CURLFORM_FILE, "postit2.c",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
/* Fill in the filename field */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "filename",
|
|
||||||
CURLFORM_COPYCONTENTS, "postit2.c",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
/* Fill in the submit field too, even if this is rarely needed */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "submit",
|
|
||||||
CURLFORM_COPYCONTENTS, "send",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
/* initialize custom header list (stating that Expect: 100-continue is not
|
|
||||||
wanted */
|
|
||||||
headerlist = curl_slist_append(headerlist, buf);
|
|
||||||
if(curl && multi_handle) {
|
if(curl && multi_handle) {
|
||||||
|
/* Create the form */
|
||||||
|
form = curl_mime_init(curl);
|
||||||
|
|
||||||
|
/* Fill in the file upload field */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "sendfile");
|
||||||
|
curl_mime_filedata(field, "multi-post.c");
|
||||||
|
|
||||||
|
/* Fill in the filename field */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "filename");
|
||||||
|
curl_mime_data(field, "multi-post.c", CURL_ZERO_TERMINATED);
|
||||||
|
|
||||||
|
/* Fill in the submit field too, even if this is rarely needed */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "submit");
|
||||||
|
curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
|
||||||
|
|
||||||
|
/* initialize custom header list (stating that Expect: 100-continue is not
|
||||||
|
wanted */
|
||||||
|
headerlist = curl_slist_append(headerlist, buf);
|
||||||
|
|
||||||
/* what URL that receives this POST */
|
/* what URL that receives this POST */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/upload.cgi");
|
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/upload.cgi");
|
||||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
|
curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
|
||||||
|
|
||||||
curl_multi_add_handle(multi_handle, curl);
|
curl_multi_add_handle(multi_handle, curl);
|
||||||
|
|
||||||
|
@ -139,7 +135,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(rc) {
|
switch(rc) {
|
||||||
|
@ -161,8 +157,8 @@ int main(void)
|
||||||
/* always cleanup */
|
/* always cleanup */
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
/* then cleanup the formpost chain */
|
/* then cleanup the form */
|
||||||
curl_formfree(formpost);
|
curl_mime_free(form);
|
||||||
|
|
||||||
/* free slist */
|
/* free slist */
|
||||||
curl_slist_free_all(headerlist);
|
curl_slist_free_all(headerlist);
|
||||||
|
|
|
@ -74,7 +74,7 @@ int main(int argc, char **argv)
|
||||||
/* Must initialize libcurl before any threads are started */
|
/* Must initialize libcurl before any threads are started */
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
for(i=0; i< NUMT; i++) {
|
for(i = 0; i< NUMT; i++) {
|
||||||
error = pthread_create(&tid[i],
|
error = pthread_create(&tid[i],
|
||||||
NULL, /* default attributes please */
|
NULL, /* default attributes please */
|
||||||
pull_one_url,
|
pull_one_url,
|
||||||
|
@ -86,7 +86,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now wait for all threads to terminate */
|
/* now wait for all threads to terminate */
|
||||||
for(i=0; i< NUMT; i++) {
|
for(i = 0; i< NUMT; i++) {
|
||||||
error = pthread_join(tid[i], NULL);
|
error = pthread_join(tid[i], NULL);
|
||||||
fprintf(stderr, "Thread %d terminated\n", i);
|
fprintf(stderr, "Thread %d terminated\n", i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -50,7 +50,7 @@ void handle_error(const char *file, int lineno, const char *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This array will store all of the mutexes available to OpenSSL. */
|
/* This array will store all of the mutexes available to OpenSSL. */
|
||||||
static MUTEX_TYPE *mutex_buf= NULL;
|
static MUTEX_TYPE *mutex_buf = NULL;
|
||||||
|
|
||||||
static void locking_function(int mode, int n, const char *file, int line)
|
static void locking_function(int mode, int n, const char *file, int line)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -144,7 +144,7 @@ int main(void)
|
||||||
else {
|
else {
|
||||||
/* Note that on some platforms 'timeout' may be modified by select().
|
/* Note that on some platforms 'timeout' may be modified by select().
|
||||||
If you need access to the original value save a copy beforehand. */
|
If you need access to the original value save a copy beforehand. */
|
||||||
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
|
if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -20,36 +20,45 @@
|
||||||
*
|
*
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
/* <DESC>
|
/* <DESC>
|
||||||
* An example source code that issues a HTTP POST and we provide the actual
|
* Issue an HTTP POST and provide the data through the read callback.
|
||||||
* data through a read callback.
|
|
||||||
* </DESC>
|
* </DESC>
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
static const char data[]="this is what we post to the silly web server";
|
/* silly test data to POST */
|
||||||
|
static const char data[]="Lorem ipsum dolor sit amet, consectetur adipiscing "
|
||||||
|
"elit. Sed vel urna neque. Ut quis leo metus. Quisque eleifend, ex at "
|
||||||
|
"laoreet rhoncus, odio ipsum semper metus, at tempus ante urna in mauris. "
|
||||||
|
"Suspendisse ornare tempor venenatis. Ut dui neque, pellentesque a varius "
|
||||||
|
"eget, mattis vitae ligula. Fusce ut pharetra est. Ut ullamcorper mi ac "
|
||||||
|
"sollicitudin semper. Praesent sit amet tellus varius, posuere nulla non, "
|
||||||
|
"rhoncus ipsum.";
|
||||||
|
|
||||||
struct WriteThis {
|
struct WriteThis {
|
||||||
const char *readptr;
|
const char *readptr;
|
||||||
long sizeleft;
|
size_t sizeleft;
|
||||||
};
|
};
|
||||||
|
|
||||||
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
|
static size_t read_callback(void *dest, size_t size, size_t nmemb, void *userp)
|
||||||
{
|
{
|
||||||
struct WriteThis *pooh = (struct WriteThis *)userp;
|
struct WriteThis *wt = (struct WriteThis *)userp;
|
||||||
|
size_t buffer_size = size*nmemb;
|
||||||
|
|
||||||
if(size*nmemb < 1)
|
if(wt->sizeleft) {
|
||||||
return 0;
|
/* copy as much as possible from the source to the destination */
|
||||||
|
size_t copy_this_much = wt->sizeleft;
|
||||||
|
if(copy_this_much > buffer_size)
|
||||||
|
copy_this_much = buffer_size;
|
||||||
|
memcpy(dest, wt->readptr, copy_this_much);
|
||||||
|
|
||||||
if(pooh->sizeleft) {
|
wt->readptr += copy_this_much;
|
||||||
*(char *)ptr = pooh->readptr[0]; /* copy one single byte */
|
wt->sizeleft -= copy_this_much;
|
||||||
pooh->readptr++; /* advance pointer */
|
return copy_this_much; /* we copied this many bytes */
|
||||||
pooh->sizeleft--; /* less data left */
|
|
||||||
return 1; /* we return 1 byte at a time! */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0; /* no more data left to deliver */
|
return 0; /* no more data left to deliver */
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@ -57,10 +66,10 @@ int main(void)
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
|
|
||||||
struct WriteThis pooh;
|
struct WriteThis wt;
|
||||||
|
|
||||||
pooh.readptr = data;
|
wt.readptr = data;
|
||||||
pooh.sizeleft = (long)strlen(data);
|
wt.sizeleft = strlen(data);
|
||||||
|
|
||||||
/* In windows, this will init the winsock stuff */
|
/* In windows, this will init the winsock stuff */
|
||||||
res = curl_global_init(CURL_GLOBAL_DEFAULT);
|
res = curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
@ -75,7 +84,7 @@ int main(void)
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl) {
|
if(curl) {
|
||||||
/* First set the URL that is about to receive our POST. */
|
/* First set the URL that is about to receive our POST. */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/index.cgi");
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/index.cgi");
|
||||||
|
|
||||||
/* Now specify we want to POST data */
|
/* Now specify we want to POST data */
|
||||||
curl_easy_setopt(curl, CURLOPT_POST, 1L);
|
curl_easy_setopt(curl, CURLOPT_POST, 1L);
|
||||||
|
@ -84,7 +93,7 @@ int main(void)
|
||||||
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
|
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
|
||||||
|
|
||||||
/* pointer to pass to our read function */
|
/* pointer to pass to our read function */
|
||||||
curl_easy_setopt(curl, CURLOPT_READDATA, &pooh);
|
curl_easy_setopt(curl, CURLOPT_READDATA, &wt);
|
||||||
|
|
||||||
/* get verbose debug output please */
|
/* get verbose debug output please */
|
||||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
@ -108,7 +117,7 @@ int main(void)
|
||||||
#else
|
#else
|
||||||
/* Set the expected POST size. If you want to POST large amounts of data,
|
/* Set the expected POST size. If you want to POST large amounts of data,
|
||||||
consider CURLOPT_POSTFIELDSIZE_LARGE */
|
consider CURLOPT_POSTFIELDSIZE_LARGE */
|
||||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft);
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)wt.sizeleft);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DISABLE_EXPECT
|
#ifdef DISABLE_EXPECT
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -58,7 +58,7 @@ int main(void)
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
struct MemoryStruct chunk;
|
struct MemoryStruct chunk;
|
||||||
static const char *postthis="Field=1&Field=2&Field=3";
|
static const char *postthis = "Field=1&Field=2&Field=3";
|
||||||
|
|
||||||
chunk.memory = malloc(1); /* will be grown as needed by realloc above */
|
chunk.memory = malloc(1); /* will be grown as needed by realloc above */
|
||||||
chunk.size = 0; /* no data at this point */
|
chunk.size = 0; /* no data at this point */
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
*
|
||||||
|
* This software is licensed as described in the file COPYING, which
|
||||||
|
* you should have received as part of this distribution. The terms
|
||||||
|
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
/* <DESC>
|
||||||
|
* HTTP Multipart formpost with file upload and two additional parts.
|
||||||
|
* </DESC>
|
||||||
|
*/
|
||||||
|
/* Example code that uploads a file name 'foo' to a remote script that accepts
|
||||||
|
* "HTML form based" (as described in RFC1738) uploads using HTTP POST.
|
||||||
|
*
|
||||||
|
* The imaginary form we'll fill in looks like:
|
||||||
|
*
|
||||||
|
* <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
|
||||||
|
* Enter file: <input type="file" name="sendfile" size="40">
|
||||||
|
* Enter file name: <input type="text" name="filename" size="30">
|
||||||
|
* <input type="submit" value="send" name="submit">
|
||||||
|
* </form>
|
||||||
|
*
|
||||||
|
* This exact source code has not been verified to work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
struct curl_httppost *formpost = NULL;
|
||||||
|
struct curl_httppost *lastptr = NULL;
|
||||||
|
struct curl_slist *headerlist = NULL;
|
||||||
|
static const char buf[] = "Expect:";
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
|
/* Fill in the file upload field */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "sendfile",
|
||||||
|
CURLFORM_FILE, "postit2.c",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
/* Fill in the filename field */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "filename",
|
||||||
|
CURLFORM_COPYCONTENTS, "postit2.c",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
|
||||||
|
/* Fill in the submit field too, even if this is rarely needed */
|
||||||
|
curl_formadd(&formpost,
|
||||||
|
&lastptr,
|
||||||
|
CURLFORM_COPYNAME, "submit",
|
||||||
|
CURLFORM_COPYCONTENTS, "send",
|
||||||
|
CURLFORM_END);
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
/* initialize custom header list (stating that Expect: 100-continue is not
|
||||||
|
wanted */
|
||||||
|
headerlist = curl_slist_append(headerlist, buf);
|
||||||
|
if(curl) {
|
||||||
|
/* what URL that receives this POST */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
|
||||||
|
if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
|
||||||
|
/* only disable 100-continue header if explicitly requested */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
|
||||||
|
|
||||||
|
/* Perform the request, res will get the return code */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
/* Check for errors */
|
||||||
|
if(res != CURLE_OK)
|
||||||
|
fprintf(stderr, "curl_easy_perform() failed: %s\n",
|
||||||
|
curl_easy_strerror(res));
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
|
/* then cleanup the formpost chain */
|
||||||
|
curl_formfree(formpost);
|
||||||
|
/* free slist */
|
||||||
|
curl_slist_free_all(headerlist);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
|
@ -47,46 +47,42 @@ int main(int argc, char *argv[])
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
|
|
||||||
struct curl_httppost *formpost=NULL;
|
curl_mime *form = NULL;
|
||||||
struct curl_httppost *lastptr=NULL;
|
curl_mimepart *field = NULL;
|
||||||
struct curl_slist *headerlist=NULL;
|
struct curl_slist *headerlist = NULL;
|
||||||
static const char buf[] = "Expect:";
|
static const char buf[] = "Expect:";
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
/* Fill in the file upload field */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "sendfile",
|
|
||||||
CURLFORM_FILE, "postit2.c",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
/* Fill in the filename field */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "filename",
|
|
||||||
CURLFORM_COPYCONTENTS, "postit2.c",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
|
|
||||||
/* Fill in the submit field too, even if this is rarely needed */
|
|
||||||
curl_formadd(&formpost,
|
|
||||||
&lastptr,
|
|
||||||
CURLFORM_COPYNAME, "submit",
|
|
||||||
CURLFORM_COPYCONTENTS, "send",
|
|
||||||
CURLFORM_END);
|
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
/* initialize custom header list (stating that Expect: 100-continue is not
|
|
||||||
wanted */
|
|
||||||
headerlist = curl_slist_append(headerlist, buf);
|
|
||||||
if(curl) {
|
if(curl) {
|
||||||
|
/* Create the form */
|
||||||
|
form = curl_mime_init(curl);
|
||||||
|
|
||||||
|
/* Fill in the file upload field */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "sendfile");
|
||||||
|
curl_mime_filedata(field, "postit2.c");
|
||||||
|
|
||||||
|
/* Fill in the filename field */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "filename");
|
||||||
|
curl_mime_data(field, "postit2.c", CURL_ZERO_TERMINATED);
|
||||||
|
|
||||||
|
/* Fill in the submit field too, even if this is rarely needed */
|
||||||
|
field = curl_mime_addpart(form);
|
||||||
|
curl_mime_name(field, "submit");
|
||||||
|
curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
|
||||||
|
|
||||||
|
/* initialize custom header list (stating that Expect: 100-continue is not
|
||||||
|
wanted */
|
||||||
|
headerlist = curl_slist_append(headerlist, buf);
|
||||||
/* what URL that receives this POST */
|
/* what URL that receives this POST */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
|
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
|
||||||
if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
|
if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
|
||||||
/* only disable 100-continue header if explicitly requested */
|
/* only disable 100-continue header if explicitly requested */
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
|
curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
|
||||||
|
|
||||||
/* Perform the request, res will get the return code */
|
/* Perform the request, res will get the return code */
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
@ -98,8 +94,8 @@ int main(int argc, char *argv[])
|
||||||
/* always cleanup */
|
/* always cleanup */
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
|
|
||||||
/* then cleanup the formpost chain */
|
/* then cleanup the form */
|
||||||
curl_formfree(formpost);
|
curl_mime_free(form);
|
||||||
/* free slist */
|
/* free slist */
|
||||||
curl_slist_free_all(headerlist);
|
curl_slist_free_all(headerlist);
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue