← Commit list

265b14d6b3

Daniel Stenberg
Daniel Stenberg
2021-06-07
SUCCESS Duration: 112s

Subject

metalink: remove

Binary

Download Binary (712 KB)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

$ git checkout -f 265b14d6b37c4298bd5556fabcbc37d36f911693
Previous HEAD position was 659ea56040 release-notes.pl: also spot common 'closes' typo
HEAD is now at 265b14d6b3 metalink: remove

$ git clean -fdx
Removing Makefile
Removing Makefile.in
Removing aclocal.m4
Removing autom4te.cache/
Removing compile
Removing config.guess
Removing config.log
Removing config.status
Removing config.sub
Removing configure
Removing curl-config
Removing depcomp
Removing docs/Makefile
Removing docs/Makefile.in
Removing docs/cmdline-opts/Makefile
Removing docs/cmdline-opts/Makefile.in
Removing docs/curl.1
Removing docs/examples/.deps/
Removing docs/examples/Makefile
Removing docs/examples/Makefile.in
Removing docs/libcurl/Makefile
Removing docs/libcurl/Makefile.in
Removing docs/libcurl/opts/Makefile
Removing docs/libcurl/opts/Makefile.in
Removing include/Makefile
Removing include/Makefile.in
Removing include/curl/Makefile
Removing include/curl/Makefile.in
Removing install-sh
Removing lib/.deps/
Removing lib/.dirstamp
Removing lib/.libs/
Removing lib/Makefile
Removing lib/Makefile.in
Removing lib/curl_config.h
Removing lib/curl_config.h.in
Removing lib/curl_ctype.o
Removing lib/curl_multibyte.o
Removing lib/dynbuf.o
Removing lib/libcurl.la
Removing lib/libcurl.vers
Removing lib/libcurl_la-altsvc.lo
Removing lib/libcurl_la-altsvc.o
Removing lib/libcurl_la-amigaos.lo
Removing lib/libcurl_la-amigaos.o
Removing lib/libcurl_la-asyn-ares.lo
Removing lib/libcurl_la-asyn-ares.o
Removing lib/libcurl_la-asyn-thread.lo
Removing lib/libcurl_la-asyn-thread.o
Removing lib/libcurl_la-base64.lo
Removing lib/libcurl_la-base64.o
Removing lib/libcurl_la-bufref.lo
Removing lib/libcurl_la-bufref.o
Removing lib/libcurl_la-c-hyper.lo
Removing lib/libcurl_la-c-hyper.o
Removing lib/libcurl_la-conncache.lo
Removing lib/libcurl_la-conncache.o
Removing lib/libcurl_la-connect.lo
Removing lib/libcurl_la-connect.o
Removing lib/libcurl_la-content_encoding.lo
Removing lib/libcurl_la-content_encoding.o
Removing lib/libcurl_la-cookie.lo
Removing lib/libcurl_la-cookie.o
Removing lib/libcurl_la-curl_addrinfo.lo
Removing lib/libcurl_la-curl_addrinfo.o
Removing lib/libcurl_la-curl_ctype.lo
Removing lib/libcurl_la-curl_ctype.o
Removing lib/libcurl_la-curl_des.lo
Removing lib/libcurl_la-curl_des.o
Removing lib/libcurl_la-curl_endian.lo
Removing lib/libcurl_la-curl_endian.o
Removing lib/libcurl_la-curl_fnmatch.lo
Removing lib/libcurl_la-curl_fnmatch.o
Removing lib/libcurl_la-curl_get_line.lo
Removing lib/libcurl_la-curl_get_line.o
Removing lib/libcurl_la-curl_gethostname.lo
Removing lib/libcurl_la-curl_gethostname.o
Removing lib/libcurl_la-curl_gssapi.lo
Removing lib/libcurl_la-curl_gssapi.o
Removing lib/libcurl_la-curl_memrchr.lo
Removing lib/libcurl_la-curl_memrchr.o
Removing lib/libcurl_la-curl_multibyte.lo
Removing lib/libcurl_la-curl_multibyte.o
Removing lib/libcurl_la-curl_ntlm_core.lo
Removing lib/libcurl_la-curl_ntlm_core.o
Removing lib/libcurl_la-curl_ntlm_wb.lo
Removing lib/libcurl_la-curl_ntlm_wb.o
Removing lib/libcurl_la-curl_path.lo
Removing lib/libcurl_la-curl_path.o
Removing lib/libcurl_la-curl_range.lo
Removing lib/libcurl_la-curl_range.o
Removing lib/libcurl_la-curl_rtmp.lo
Removing lib/libcurl_la-curl_rtmp.o
Removing lib/libcurl_la-curl_sasl.lo
Removing lib/libcurl_la-curl_sasl.o
Removing lib/libcurl_la-curl_sspi.lo
Removing lib/libcurl_la-curl_sspi.o
Removing lib/libcurl_la-curl_threads.lo
Removing lib/libcurl_la-curl_threads.o
Removing lib/libcurl_la-dict.lo
Removing lib/libcurl_la-dict.o
Removing lib/libcurl_la-doh.lo
Removing lib/libcurl_la-doh.o
Removing lib/libcurl_la-dotdot.lo
Removing lib/libcurl_la-dotdot.o
Removing lib/libcurl_la-dynbuf.lo
Removing lib/libcurl_la-dynbuf.o
Removing lib/libcurl_la-easy.lo
Removing lib/libcurl_la-easy.o
Removing lib/libcurl_la-easygetopt.lo
Removing lib/libcurl_la-easygetopt.o
Removing lib/libcurl_la-easyoptions.lo
Removing lib/libcurl_la-easyoptions.o
Removing lib/libcurl_la-escape.lo
Removing lib/libcurl_la-escape.o
Removing lib/libcurl_la-file.lo
Removing lib/libcurl_la-file.o
Removing lib/libcurl_la-fileinfo.lo
Removing lib/libcurl_la-fileinfo.o
Removing lib/libcurl_la-formdata.lo
Removing lib/libcurl_la-formdata.o
Removing lib/libcurl_la-ftp.lo
Removing lib/libcurl_la-ftp.o
Removing lib/libcurl_la-ftplistparser.lo
Removing lib/libcurl_la-ftplistparser.o
Removing lib/libcurl_la-getenv.lo
Removing lib/libcurl_la-getenv.o
Removing lib/libcurl_la-getinfo.lo
Removing lib/libcurl_la-getinfo.o
Removing lib/libcurl_la-gopher.lo
Removing lib/libcurl_la-gopher.o
Removing lib/libcurl_la-hash.lo
Removing lib/libcurl_la-hash.o
Removing lib/libcurl_la-hmac.lo
Removing lib/libcurl_la-hmac.o
Removing lib/libcurl_la-hostasyn.lo
Removing lib/libcurl_la-hostasyn.o
Removing lib/libcurl_la-hostcheck.lo
Removing lib/libcurl_la-hostcheck.o
Removing lib/libcurl_la-hostip.lo
Removing lib/libcurl_la-hostip.o
Removing lib/libcurl_la-hostip4.lo
Removing lib/libcurl_la-hostip4.o
Removing lib/libcurl_la-hostip6.lo
Removing lib/libcurl_la-hostip6.o
Removing lib/libcurl_la-hostsyn.lo
Removing lib/libcurl_la-hostsyn.o
Removing lib/libcurl_la-hsts.lo
Removing lib/libcurl_la-hsts.o
Removing lib/libcurl_la-http.lo
Removing lib/libcurl_la-http.o
Removing lib/libcurl_la-http2.lo
Removing lib/libcurl_la-http2.o
Removing lib/libcurl_la-http_aws_sigv4.lo
Removing lib/libcurl_la-http_aws_sigv4.o
Removing lib/libcurl_la-http_chunks.lo
Removing lib/libcurl_la-http_chunks.o
Removing lib/libcurl_la-http_digest.lo
Removing lib/libcurl_la-http_digest.o
Removing lib/libcurl_la-http_negotiate.lo
Removing lib/libcurl_la-http_negotiate.o
Removing lib/libcurl_la-http_ntlm.lo
Removing lib/libcurl_la-http_ntlm.o
Removing lib/libcurl_la-http_proxy.lo
Removing lib/libcurl_la-http_proxy.o
Removing lib/libcurl_la-idn_win32.lo
Removing lib/libcurl_la-idn_win32.o
Removing lib/libcurl_la-if2ip.lo
Removing lib/libcurl_la-if2ip.o
Removing lib/libcurl_la-imap.lo
Removing lib/libcurl_la-imap.o
Removing lib/libcurl_la-inet_ntop.lo
Removing lib/libcurl_la-inet_ntop.o
Removing lib/libcurl_la-inet_pton.lo
Removing lib/libcurl_la-inet_pton.o
Removing lib/libcurl_la-krb5.lo
Removing lib/libcurl_la-krb5.o
Removing lib/libcurl_la-ldap.lo
Removing lib/libcurl_la-ldap.o
Removing lib/libcurl_la-llist.lo
Removing lib/libcurl_la-llist.o
Removing lib/libcurl_la-md4.lo
Removing lib/libcurl_la-md4.o
Removing lib/libcurl_la-md5.lo
Removing lib/libcurl_la-md5.o
Removing lib/libcurl_la-memdebug.lo
Removing lib/libcurl_la-memdebug.o
Removing lib/libcurl_la-mime.lo
Removing lib/libcurl_la-mime.o
Removing lib/libcurl_la-mprintf.lo
Removing lib/libcurl_la-mprintf.o
Removing lib/libcurl_la-mqtt.lo
Removing lib/libcurl_la-mqtt.o
Removing lib/libcurl_la-multi.lo
Removing lib/libcurl_la-multi.o
Removing lib/libcurl_la-netrc.lo
Removing lib/libcurl_la-netrc.o
Removing lib/libcurl_la-non-ascii.lo
Removing lib/libcurl_la-non-ascii.o
Removing lib/libcurl_la-nonblock.lo
Removing lib/libcurl_la-nonblock.o
Removing lib/libcurl_la-openldap.lo
Removing lib/libcurl_la-openldap.o
Removing lib/libcurl_la-parsedate.lo
Removing lib/libcurl_la-parsedate.o
Removing lib/libcurl_la-pingpong.lo
Removing lib/libcurl_la-pingpong.o
Removing lib/libcurl_la-pop3.lo
Removing lib/libcurl_la-pop3.o
Removing lib/libcurl_la-progress.lo
Removing lib/libcurl_la-progress.o
Removing lib/libcurl_la-psl.lo
Removing lib/libcurl_la-psl.o
Removing lib/libcurl_la-rand.lo
Removing lib/libcurl_la-rand.o
Removing lib/libcurl_la-rename.lo
Removing lib/libcurl_la-rename.o
Removing lib/libcurl_la-rtsp.lo
Removing lib/libcurl_la-rtsp.o
Removing lib/libcurl_la-select.lo
Removing lib/libcurl_la-select.o
Removing lib/libcurl_la-sendf.lo
Removing lib/libcurl_la-sendf.o
Removing lib/libcurl_la-setopt.lo
Removing lib/libcurl_la-setopt.o
Removing lib/libcurl_la-sha256.lo
Removing lib/libcurl_la-sha256.o
Removing lib/libcurl_la-share.lo
Removing lib/libcurl_la-share.o
Removing lib/libcurl_la-slist.lo
Removing lib/libcurl_la-slist.o
Removing lib/libcurl_la-smb.lo
Removing lib/libcurl_la-smb.o
Removing lib/libcurl_la-smtp.lo
Removing lib/libcurl_la-smtp.o
Removing lib/libcurl_la-socketpair.lo
Removing lib/libcurl_la-socketpair.o
Removing lib/libcurl_la-socks.lo
Removing lib/libcurl_la-socks.o
Removing lib/libcurl_la-socks_gssapi.lo
Removing lib/libcurl_la-socks_gssapi.o
Removing lib/libcurl_la-socks_sspi.lo
Removing lib/libcurl_la-socks_sspi.o
Removing lib/libcurl_la-speedcheck.lo
Removing lib/libcurl_la-speedcheck.o
Removing lib/libcurl_la-splay.lo
Removing lib/libcurl_la-splay.o
Removing lib/libcurl_la-strcase.lo
Removing lib/libcurl_la-strcase.o
Removing lib/libcurl_la-strdup.lo
Removing lib/libcurl_la-strdup.o
Removing lib/libcurl_la-strerror.lo
Removing lib/libcurl_la-strerror.o
Removing lib/libcurl_la-strtok.lo
Removing lib/libcurl_la-strtok.o
Removing lib/libcurl_la-strtoofft.lo
Removing lib/libcurl_la-strtoofft.o
Removing lib/libcurl_la-system_win32.lo
Removing lib/libcurl_la-system_win32.o
Removing lib/libcurl_la-telnet.lo
Removing lib/libcurl_la-telnet.o
Removing lib/libcurl_la-tftp.lo
Removing lib/libcurl_la-tftp.o
Removing lib/libcurl_la-timeval.lo
Removing lib/libcurl_la-timeval.o
Removing lib/libcurl_la-transfer.lo
Removing lib/libcurl_la-transfer.o
Removing lib/libcurl_la-url.lo
Removing lib/libcurl_la-url.o
Removing lib/libcurl_la-urlapi.lo
Removing lib/libcurl_la-urlapi.o
Removing lib/libcurl_la-version.lo
Removing lib/libcurl_la-version.o
Removing lib/libcurl_la-version_win32.lo
Removing lib/libcurl_la-version_win32.o
Removing lib/libcurl_la-warnless.lo
Removing lib/libcurl_la-warnless.o
Removing lib/libcurl_la-wildcard.lo
Removing lib/libcurl_la-wildcard.o
Removing lib/libcurl_la-x509asn1.lo
Removing lib/libcurl_la-x509asn1.o
Removing lib/nonblock.o
Removing lib/stamp-h1
Removing lib/strtoofft.o
Removing lib/vauth/.deps/
Removing lib/vauth/.dirstamp
Removing lib/vauth/libcurl_la-cleartext.lo
Removing lib/vauth/libcurl_la-cleartext.o
Removing lib/vauth/libcurl_la-cram.lo
Removing lib/vauth/libcurl_la-cram.o
Removing lib/vauth/libcurl_la-digest.lo
Removing lib/vauth/libcurl_la-digest.o
Removing lib/vauth/libcurl_la-digest_sspi.lo
Removing lib/vauth/libcurl_la-digest_sspi.o
Removing lib/vauth/libcurl_la-gsasl.lo
Removing lib/vauth/libcurl_la-gsasl.o
Removing lib/vauth/libcurl_la-krb5_gssapi.lo
Removing lib/vauth/libcurl_la-krb5_gssapi.o
Removing lib/vauth/libcurl_la-krb5_sspi.lo
Removing lib/vauth/libcurl_la-krb5_sspi.o
Removing lib/vauth/libcurl_la-ntlm.lo
Removing lib/vauth/libcurl_la-ntlm.o
Removing lib/vauth/libcurl_la-ntlm_sspi.lo
Removing lib/vauth/libcurl_la-ntlm_sspi.o
Removing lib/vauth/libcurl_la-oauth2.lo
Removing lib/vauth/libcurl_la-oauth2.o
Removing lib/vauth/libcurl_la-spnego_gssapi.lo
Removing lib/vauth/libcurl_la-spnego_gssapi.o
Removing lib/vauth/libcurl_la-spnego_sspi.lo
Removing lib/vauth/libcurl_la-spnego_sspi.o
Removing lib/vauth/libcurl_la-vauth.lo
Removing lib/vauth/libcurl_la-vauth.o
Removing lib/version_win32.o
Removing lib/vquic/.deps/
Removing lib/vquic/.dirstamp
Removing lib/vquic/libcurl_la-ngtcp2.lo
Removing lib/vquic/libcurl_la-ngtcp2.o
Removing lib/vquic/libcurl_la-quiche.lo
Removing lib/vquic/libcurl_la-quiche.o
Removing lib/vquic/libcurl_la-vquic.lo
Removing lib/vquic/libcurl_la-vquic.o
Removing lib/vssh/.deps/
Removing lib/vssh/.dirstamp
Removing lib/vssh/libcurl_la-libssh.lo
Removing lib/vssh/libcurl_la-libssh.o
Removing lib/vssh/libcurl_la-libssh2.lo
Removing lib/vssh/libcurl_la-libssh2.o
Removing lib/vssh/libcurl_la-wolfssh.lo
Removing lib/vssh/libcurl_la-wolfssh.o
Removing lib/vtls/.deps/
Removing lib/vtls/.dirstamp
Removing lib/vtls/libcurl_la-bearssl.lo
Removing lib/vtls/libcurl_la-bearssl.o
Removing lib/vtls/libcurl_la-gskit.lo
Removing lib/vtls/libcurl_la-gskit.o
Removing lib/vtls/libcurl_la-gtls.lo
Removing lib/vtls/libcurl_la-gtls.o
Removing lib/vtls/libcurl_la-keylog.lo
Removing lib/vtls/libcurl_la-keylog.o
Removing lib/vtls/libcurl_la-mbedtls.lo
Removing lib/vtls/libcurl_la-mbedtls.o
Removing lib/vtls/libcurl_la-mbedtls_threadlock.lo
Removing lib/vtls/libcurl_la-mbedtls_threadlock.o
Removing lib/vtls/libcurl_la-mesalink.lo
Removing lib/vtls/libcurl_la-mesalink.o
Removing lib/vtls/libcurl_la-nss.lo
Removing lib/vtls/libcurl_la-nss.o
Removing lib/vtls/libcurl_la-openssl.lo
Removing lib/vtls/libcurl_la-openssl.o
Removing lib/vtls/libcurl_la-rustls.lo
Removing lib/vtls/libcurl_la-rustls.o
Removing lib/vtls/libcurl_la-schannel.lo
Removing lib/vtls/libcurl_la-schannel.o
Removing lib/vtls/libcurl_la-schannel_verify.lo
Removing lib/vtls/libcurl_la-schannel_verify.o
Removing lib/vtls/libcurl_la-sectransp.lo
Removing lib/vtls/libcurl_la-sectransp.o
Removing lib/vtls/libcurl_la-vtls.lo
Removing lib/vtls/libcurl_la-vtls.o
Removing lib/vtls/libcurl_la-wolfssl.lo
Removing lib/vtls/libcurl_la-wolfssl.o
Removing lib/warnless.o
Removing libcurl.pc
Removing libtool
Removing ltmain.sh
Removing m4/libtool.m4
Removing m4/ltoptions.m4
Removing m4/ltsugar.m4
Removing m4/ltversion.m4
Removing m4/lt~obsolete.m4
Removing missing
Removing packages/Makefile
Removing packages/Makefile.in
Removing packages/vms/Makefile
Removing packages/vms/Makefile.in
Removing scripts/Makefile
Removing scripts/Makefile.in
Removing src/.deps/
Removing src/.libs/
Removing src/Makefile
Removing src/Makefile.in
Removing src/curl
Removing src/slist_wc.o
Removing src/tool_binmode.o
Removing src/tool_bname.o
Removing src/tool_cb_dbg.o
Removing src/tool_cb_hdr.o
Removing src/tool_cb_prg.o
Removing src/tool_cb_rea.o
Removing src/tool_cb_see.o
Removing src/tool_cb_wrt.o
Removing src/tool_cfgable.o
Removing src/tool_convert.o
Removing src/tool_dirhie.o
Removing src/tool_doswin.o
Removing src/tool_easysrc.o
Removing src/tool_filetime.o
Removing src/tool_formparse.o
Removing src/tool_getparam.o
Removing src/tool_getpass.o
Removing src/tool_help.o
Removing src/tool_helpers.o
Removing src/tool_homedir.o
Removing src/tool_hugehelp.c
Removing src/tool_hugehelp.o
Removing src/tool_libinfo.o
Removing src/tool_main.o
Removing src/tool_msgs.o
Removing src/tool_operate.o
Removing src/tool_operhlp.o
Removing src/tool_panykey.o
Removing src/tool_paramhlp.o
Removing src/tool_parsecfg.o
Removing src/tool_progress.o
Removing src/tool_setopt.o
Removing src/tool_sleep.o
Removing src/tool_strdup.o
Removing src/tool_urlglob.o
Removing src/tool_util.o
Removing src/tool_vms.o
Removing src/tool_writeout.o
Removing src/tool_writeout_json.o
Removing src/tool_xattr.o
Removing test-driver
Removing tests/Makefile
Removing tests/Makefile.in
Removing tests/certs/Makefile
Removing tests/certs/Makefile.in
Removing tests/certs/scripts/Makefile
Removing tests/certs/scripts/Makefile.in
Removing tests/configurehelp.pm
Removing tests/data/Makefile
Removing tests/data/Makefile.in
Removing tests/libtest/.deps/
Removing tests/libtest/Makefile
Removing tests/libtest/Makefile.in
Removing tests/server/.deps/
Removing tests/server/Makefile
Removing tests/server/Makefile.in
Removing tests/unit/.deps/
Removing tests/unit/Makefile
Removing tests/unit/Makefile.in

$ autoreconf -fi
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
configure.ac:120: installing './compile'
configure.ac:293: installing './config.guess'
configure.ac:293: installing './config.sub'
configure.ac:120: installing './install-sh'
configure.ac:125: installing './missing'
docs/examples/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'

$ bash -c find . -name config.guess -exec cp /usr/share/misc/config.guess {} \;

$ bash -c find . -name config.sub -exec cp /usr/share/misc/config.sub {} \;

$ chmod +x configure

$ ./configure --disable-shared --without-ssl --disable-docs
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports nested variables... yes
checking whether to enable debug build options... no
checking whether to enable compiler optimizer... (assumed) yes
checking whether to enable strict compiler warnings... no
checking whether to enable compiler warnings as errors... no
checking whether to enable curl debug memory tracking... no
checking whether to enable hiding of library internal symbols... yes
checking whether to enable c-ares for DNS lookups... no
checking whether to disable dependency on -lrt... (assumed no)
checking whether to enable ECH support... no
checking for path separator... :
checking for sed... /usr/bin/sed
checking for grep... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ar... /usr/bin/ar
checking for a BSD-compatible install... /usr/bin/install -c
checking for gcc... ccache gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether ccache gcc accepts -g... yes
checking for ccache gcc option to enable C11 features... none needed
checking whether ccache gcc understands -c and -o together... yes
checking how to run the C preprocessor... ccache gcc -E
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for code coverage support... no
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of ccache gcc... gcc3
checking curl version... 7.77.1-DEV
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking if OS is AIX (to define _ALL_SOURCE)... no
checking if _THREAD_SAFE is already defined... no
checking if _THREAD_SAFE is actually needed... no
checking if _THREAD_SAFE is onwards defined... no
checking if _REENTRANT is already defined... no
checking if _REENTRANT is actually needed... no
checking if _REENTRANT is onwards defined... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking how to print strings... printf
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by ccache gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from ccache gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if ccache gcc supports -fno-rtti -fno-exceptions... no
checking for ccache gcc option to produce PIC... -fPIC -DPIC
checking if ccache gcc PIC flag -fPIC -DPIC works... yes
checking if ccache gcc static flag -static works... yes
checking if ccache gcc supports -c -o file.o... yes
checking if ccache gcc supports -c -o file.o... (cached) yes
checking whether the ccache gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking whether to build shared libraries with -version-info... yes
checking whether to build shared libraries with -no-undefined... no
checking whether to build shared libraries with -mimpure-text... no
checking whether to build shared libraries with PIC... yes
checking whether to build static libraries with PIC... yes
checking whether to build shared libraries only... no
checking whether to build static libraries only... yes
checking for inline... inline
checking if cpp -P is needed... yes
checking if cpp -P works... yes
checking if compiler is DEC/Compaq/HP C... no
checking if compiler is HP-UX C... no
checking if compiler is IBM C... no
checking if compiler is Intel C... no
checking if compiler is clang... no
checking if compiler is GNU C... yes
checking if compiler is LCC... no
checking if compiler is SGI MIPSpro C... no
checking if compiler is SGI MIPS C... no
checking if compiler is SunPro C... no
checking if compiler is Tiny C... no
checking if compiler is Watcom C... no
checking if compiler accepts some basic options... yes
configure: compiler options added: -Werror-implicit-function-declaration 
checking if compiler accepts debug disabling options... yes
configure: compiler options added: 
checking if compiler optimizer assumed setting might be used... yes
checking if compiler accepts optimizer enabling options... yes
configure: compiler options added: -O2
checking if compiler accepts strict warning options... yes
configure: compiler options added: -Wno-system-headers -Wenum-conversion 
checking if compiler halts on compilation errors... yes
checking if compiler halts on negative sized arrays... yes
checking if compiler halts on function prototype mismatch... yes
checking if compiler supports hiding library internal symbols... yes
checking for windows.h... no
checking whether build target is a native Windows one... no
checking whether build target supports WIN32 file API... no
checking whether build target supports WIN32 crypto API... no
checking for good-to-use Darwin CFLAGS... no
checking whether to link macOS SystemConfiguration framework... no
checking to see if the compiler supports __builtin_available()... no
checking whether to support http... yes
checking whether to support ftp... yes
checking whether to support file... yes
checking whether to support ldap... yes
checking whether to support ldaps... yes
checking whether to support rtsp... yes
checking whether to support proxies... yes
checking whether to support dict... yes
checking whether to support telnet... yes
checking whether to support tftp... yes
checking whether to support pop3... yes
checking whether to support imap... yes
checking whether to support smb... yes
checking whether to support smtp... yes
checking whether to support gopher... yes
checking whether to support mqtt... no
checking whether to provide built-in manual... yes
checking whether to enable generation of C code... yes
checking whether to use libgcc... no
checking if X/Open network library is required... no
checking for gethostbyname... yes
checking for windows.h... (cached) no
checking for winsock.h... (cached) no
checking for winsock2.h... (cached) no
checking for proto/bsdsocket.h... no
checking for connect in libraries... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... yes
checking for monotonic clock_gettime... yes
checking for clock_gettime in libraries... no additional lib required
checking if monotonic clock_gettime works... yes
checking for pkg-config... /usr/bin/pkg-config
checking for zlib options with pkg-config... found
checking for zlib.h... yes
configure: found both libz and libz.h header
checking for BrotliDecoderDecompress in -lbrotlidec... no
checking for brotli/decode.h... no
checking for ZSTD_createDStream in -lzstd... no
checking for zstd.h... no
checking for lber.h... no
checking for ldap.h... no
checking for ldapssl.h... no
checking for ldap_ssl.h... no
checking for LDAP libraries... cannot find LDAP libraries
checking whether to enable IPv6... yes
checking if struct sockaddr_in6 has sin6_scope_id member... yes
checking if argv can be written to... yes
checking if GSS-API support is requested... no
checking whether to enable Windows native SSL/TLS... no
checking whether to enable Secure Transport... no
checking whether to enable Amiga native SSL/TLS (AmiSSL)... no
checking for library containing psl_builtin... -lpsl
checking for library containing gsasl_init... no
checking for RTMP_Init in -lrtmp... no
checking whether versioned symbols are wanted... no
checking whether to enable Windows native IDN (Windows native builds only)... no
checking whether to build with libidn2... (assumed) yes
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libidn2 options with pkg-config... no
configure: IDN_LIBS: "-lidn2"
configure: IDN_LDFLAGS: ""
configure: IDN_CPPFLAGS: ""
configure: IDN_DIR: ""
checking if idn2_lookup_ul can be linked... no
checking for idn2.h... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libnghttp2 options with pkg-config... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for libngtcp2 options with pkg-config... no
checking for pkg-config... (cached) /usr/bin/pkg-config
checking for fish options with pkg-config... no
checking for malloc.h... yes
checking for memory.h... no
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/select.h... yes
checking for sys/socket.h... yes
checking for sys/ioctl.h... yes
checking for sys/uio.h... yes
checking for assert.h... yes
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for arpa/inet.h... yes
checking for net/if.h... yes
checking for netinet/in.h... yes
checking for netinet/in6.h... no
checking for sys/un.h... yes
checking for linux/tcp.h... yes
checking for netinet/tcp.h... yes
checking for netdb.h... yes
checking for sys/sockio.h... no
checking for sys/stat.h... (cached) yes
checking for sys/param.h... yes
checking for termios.h... yes
checking for termio.h... yes
checking for sgtty.h... yes
checking for fcntl.h... yes
checking for alloca.h... yes
checking for io.h... no
checking for pwd.h... yes
checking for utime.h... yes
checking for sys/utime.h... no
checking for sys/poll.h... yes
checking for poll.h... yes
checking for socket.h... no
checking for sys/resource.h... yes
checking for libgen.h... yes
checking for locale.h... yes
checking for errno.h... yes
checking for stdbool.h... yes
checking for arpa/tftp.h... yes
checking for sys/filio.h... no
checking for sys/wait.h... yes
checking for setjmp.h... yes
checking for an ANSI C-conforming const... yes
checking for compiler support of C99 variadic macro style... yes
checking for compiler support of old gcc variadic macro style... yes
checking for size_t... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for struct timeval... yes
checking run-time libs availability... fine
checking size of size_t... 8
checking size of long... 8
checking size of int... 4
checking size of short... 2
checking size of time_t... 8
checking size of off_t... 8
checking size of curl_off_t... 8
checking for long long... yes
checking if numberLL works... yes
checking for ssize_t... yes
checking for bool... yes
checking for sa_family_t... yes
checking for suseconds_t... yes
checking if time_t is unsigned... no
checking for sys/types.h... (cached) yes
checking for poll.h... (cached) yes
checking for sys/poll.h... (cached) yes
checking for in_addr_t... yes
checking for struct sockaddr_storage... yes
checking for signal.h... yes
checking for sig_atomic_t... yes
checking if sig_atomic_t is already defined as volatile... no
checking for sys/select.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for select... yes
checking types of args and return type for select... int,fd_set *,struct timeval *,int
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for recv... yes
checking types of args and return type for recv... int,void *,size_t,int,ssize_t
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for send... yes
checking types of args and return type for send... int,const void *,size_t,int,ssize_t
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for MSG_NOSIGNAL... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking if alarm can be linked... yes
checking if alarm is prototyped... yes
checking if alarm is compilable... yes
checking if alarm usage allowed... yes
checking if alarm might be used... yes
checking for sys/types.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for libgen.h... (cached) yes
checking if basename can be linked... yes
checking if basename is prototyped... yes
checking if basename is compilable... yes
checking if basename usage allowed... yes
checking if basename might be used... yes
checking for sys/types.h... (cached) yes
checking for socket.h... (cached) no
checking if closesocket can be linked... no
checking if closesocket might be used... no
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking if CloseSocket can be linked... no
checking if CloseSocket might be used... no
checking if connect can be linked... yes
checking if connect is prototyped... yes
checking if connect is compilable... yes
checking if connect usage allowed... yes
checking if connect might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for fcntl.h... (cached) yes
checking if fcntl can be linked... yes
checking if fcntl is prototyped... yes
checking if fcntl is compilable... yes
checking if fcntl usage allowed... yes
checking if fcntl might be used... yes
checking if fcntl O_NONBLOCK is compilable... yes
checking if fcntl O_NONBLOCK usage allowed... yes
checking if fcntl O_NONBLOCK might be used... yes
checking for windows.h... (cached) no
checking for winsock2.h... (cached) no
checking for ws2tcpip.h... (cached) no
checking for sys/types.h... (cached) yes
checking for netdb.h... (cached) yes
checking if freeaddrinfo can be linked... yes
checking if freeaddrinfo is prototyped... yes
checking if freeaddrinfo is compilable... yes
checking if freeaddrinfo usage allowed... yes
checking if freeaddrinfo might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for netinet/in.h... (cached) yes
checking for ifaddrs.h... yes
checking if freeifaddrs can be linked... yes
checking if freeifaddrs is prototyped... yes
checking if freeifaddrs is compilable... yes
checking if freeifaddrs usage allowed... yes
checking if freeifaddrs might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/xattr.h... yes
checking if fsetxattr can be linked... yes
checking if fsetxattr is prototyped... yes
checking if fsetxattr takes 5 args.... yes
checking if fsetxattr is compilable... yes
checking if fsetxattr usage allowed... yes
checking if fsetxattr might be used... yes
checking if ftruncate can be linked... yes
checking if ftruncate is prototyped... yes
checking if ftruncate is compilable... yes
checking if ftruncate usage allowed... yes
checking if ftruncate might be used... yes
checking for sys/types.h... (cached) yes
checking for stdlib.h... (cached) yes
checking if getaddrinfo can be linked... yes
checking if getaddrinfo is prototyped... yes
checking if getaddrinfo is compilable... yes
checking if getaddrinfo seems to work... yes
checking if getaddrinfo usage allowed... yes
checking if getaddrinfo might be used... yes
checking if getaddrinfo is threadsafe... yes
checking if gai_strerror can be linked... yes
checking if gai_strerror is prototyped... yes
checking if gai_strerror is compilable... yes
checking if gai_strerror usage allowed... yes
checking if gai_strerror might be used... yes
checking if gethostbyaddr can be linked... yes
checking if gethostbyaddr is prototyped... yes
checking if gethostbyaddr is compilable... yes
checking if gethostbyaddr usage allowed... yes
checking if gethostbyaddr might be used... yes
checking if gethostbyaddr_r can be linked... yes
checking if gethostbyaddr_r is prototyped... yes
checking if gethostbyaddr_r takes 5 args.... no
checking if gethostbyaddr_r takes 7 args.... no
checking if gethostbyaddr_r takes 8 args.... yes
checking if gethostbyaddr_r is compilable... yes
checking if gethostbyaddr_r usage allowed... yes
checking if gethostbyaddr_r might be used... yes
checking if gethostbyname can be linked... yes
checking if gethostbyname is prototyped... yes
checking if gethostbyname is compilable... yes
checking if gethostbyname usage allowed... yes
checking if gethostbyname might be used... yes
checking if gethostbyname_r can be linked... yes
checking if gethostbyname_r is prototyped... yes
checking if gethostbyname_r takes 3 args.... no
checking if gethostbyname_r takes 5 args.... no
checking if gethostbyname_r takes 6 args.... yes
checking if gethostbyname_r is compilable... yes
checking if gethostbyname_r usage allowed... yes
checking if gethostbyname_r might be used... yes
checking if gethostname can be linked... yes
checking if gethostname is prototyped... yes
checking if gethostname is compilable... yes
checking for gethostname arg 2 data type... size_t
checking if gethostname usage allowed... yes
checking if gethostname might be used... yes
checking if getpeername can be linked... yes
checking if getpeername is prototyped... yes
checking if getpeername is compilable... yes
checking if getpeername usage allowed... yes
checking if getpeername might be used... yes
checking if getsockname can be linked... yes
checking if getsockname is prototyped... yes
checking if getsockname is compilable... yes
checking if getsockname usage allowed... yes
checking if getsockname might be used... yes
checking for net/if.h... (cached) yes
checking if if_nametoindex can be linked... yes
checking if if_nametoindex is prototyped... yes
checking if if_nametoindex is compilable... yes
checking if if_nametoindex usage allowed... yes
checking if if_nametoindex might be used... yes
checking if getifaddrs can be linked... yes
checking if getifaddrs is prototyped... yes
checking if getifaddrs is compilable... yes
checking if getifaddrs seems to work... yes
checking if getifaddrs usage allowed... yes
checking if getifaddrs might be used... yes
checking if getservbyport_r can be linked... yes
checking if getservbyport_r is prototyped... yes
checking if getservbyport_r takes 4 args.... no
checking if getservbyport_r takes 5 args.... no
checking if getservbyport_r takes 6 args.... yes
checking if getservbyport_r is compilable... yes
checking if getservbyport_r usage allowed... yes
checking if getservbyport_r might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/time.h... (cached) yes
checking if gmtime_r can be linked... yes
checking if gmtime_r is prototyped... yes
checking if gmtime_r is compilable... yes
checking if gmtime_r seems to work... yes
checking if gmtime_r usage allowed... yes
checking if gmtime_r might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for netinet/in.h... (cached) yes
checking for arpa/inet.h... (cached) yes
checking if inet_ntoa_r can be linked... no
checking if inet_ntoa_r might be used... no
checking if inet_ntop can be linked... yes
checking if inet_ntop is prototyped... yes
checking if inet_ntop is compilable... yes
checking if inet_ntop seems to work... yes
checking if inet_ntop usage allowed... yes
checking if inet_ntop might be used... yes
checking if inet_pton can be linked... yes
checking if inet_pton is prototyped... yes
checking if inet_pton is compilable... yes
checking if inet_pton seems to work... yes
checking if inet_pton usage allowed... yes
checking if inet_pton might be used... yes
checking for sys/types.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/socket.h... (cached) yes
checking for sys/ioctl.h... (cached) yes
checking for stropts.h... no
checking if ioctl can be linked... yes
checking if ioctl is prototyped... yes
checking if ioctl is compilable... yes
checking if ioctl usage allowed... yes
checking if ioctl might be used... yes
checking if ioctl FIONBIO is compilable... yes
checking if ioctl FIONBIO usage allowed... yes
checking if ioctl FIONBIO might be used... yes
checking if ioctl SIOCGIFADDR is compilable... yes
checking if ioctl SIOCGIFADDR usage allowed... yes
checking if ioctl SIOCGIFADDR might be used... yes
checking if ioctlsocket can be linked... no
checking if ioctlsocket might be used... no
checking if IoctlSocket can be linked... no
checking if IoctlSocket might be used... no
checking if localtime_r can be linked... yes
checking if localtime_r is prototyped... yes
checking if localtime_r is compilable... yes
checking if localtime_r seems to work... yes
checking if localtime_r usage allowed... yes
checking if localtime_r might be used... yes
checking if memrchr can be linked... yes
checking if memrchr is prototyped... no
checking if memrchr might be used... no
checking if poll can be linked... yes
checking if poll is prototyped... yes
checking if poll is compilable... yes
checking if poll seems to work... yes
checking if poll usage allowed... yes
checking if poll might be used... yes
checking if setsockopt can be linked... yes
checking if setsockopt is prototyped... yes
checking if setsockopt is compilable... yes
checking if setsockopt usage allowed... yes
checking if setsockopt might be used... yes
checking if setsockopt SO_NONBLOCK is compilable... no
checking if setsockopt SO_NONBLOCK might be used... no
checking for sys/types.h... (cached) yes
checking for signal.h... (cached) yes
checking if sigaction can be linked... yes
checking if sigaction is prototyped... yes
checking if sigaction is compilable... yes
checking if sigaction usage allowed... yes
checking if sigaction might be used... yes
checking if siginterrupt can be linked... yes
checking if siginterrupt is prototyped... yes
checking if siginterrupt is compilable... yes
checking if siginterrupt usage allowed... yes
checking if siginterrupt might be used... yes
checking if signal can be linked... yes
checking if signal is prototyped... yes
checking if signal is compilable... yes
checking if signal usage allowed... yes
checking if signal might be used... yes
checking for sys/types.h... (cached) yes
checking for setjmp.h... (cached) yes
checking if sigsetjmp can be linked... no
checking if sigsetjmp seems a macro... yes
checking if sigsetjmp is compilable... yes
checking if sigsetjmp usage allowed... yes
checking if sigsetjmp might be used... yes
checking if socket can be linked... yes
checking if socket is prototyped... yes
checking if socket is compilable... yes
checking if socket usage allowed... yes
checking if socket might be used... yes
checking if socketpair can be linked... yes
checking if socketpair is prototyped... yes
checking if socketpair is compilable... yes
checking if socketpair usage allowed... yes
checking if socketpair might be used... yes
checking if strcasecmp can be linked... yes
checking if strcasecmp is prototyped... yes
checking if strcasecmp is compilable... yes
checking if strcasecmp usage allowed... yes
checking if strcasecmp might be used... yes
checking if strcmpi can be linked... no
checking if strcmpi might be used... no
checking if strdup can be linked... yes
checking if strdup is prototyped... yes
checking if strdup is compilable... yes
checking if strdup usage allowed... yes
checking if strdup might be used... yes
checking if strerror_r can be linked... yes
checking if strerror_r is prototyped... yes
checking if strerror_r is compilable... yes
checking if strerror_r is glibc like... no
checking if strerror_r is POSIX like... yes
checking if strerror_r seems to work... yes
checking if strerror_r usage allowed... yes
checking if strerror_r might be used... yes
checking if stricmp can be linked... no
checking if stricmp might be used... no
checking if strncmpi can be linked... no
checking if strncmpi might be used... no
checking if strnicmp can be linked... no
checking if strnicmp might be used... no
checking if strstr can be linked... yes
checking if strstr is prototyped... yes
checking if strstr is compilable... yes
checking if strstr usage allowed... yes
checking if strstr might be used... yes
checking if strtok_r can be linked... yes
checking if strtok_r is prototyped... yes
checking if strtok_r is compilable... yes
checking if strtok_r usage allowed... yes
checking if strtok_r might be used... yes
checking if strtoll can be linked... yes
checking if strtoll is prototyped... yes
checking if strtoll is compilable... yes
checking if strtoll usage allowed... yes
checking if strtoll might be used... yes
checking for sys/types.h... (cached) yes
checking for sys/uio.h... (cached) yes
checking if writev can be linked... yes
checking if writev is prototyped... yes
checking if writev is compilable... yes
checking if writev usage allowed... yes
checking if writev might be used... yes
checking for ccache gcc options needed to detect all undeclared functions... none needed
checking whether getpwuid_r is declared... yes
checking for fnmatch... yes
checking for geteuid... yes
checking for getpass_r... no
checking deeper for getpass_r... but still no
checking for getppid... yes
checking for getpwuid... yes
checking for getpwuid_r... yes
checking for getrlimit... yes
checking for gettimeofday... yes
checking for if_nametoindex... yes
checking for mach_absolute_time... no
checking deeper for mach_absolute_time... but still no
checking for pipe... yes
checking for setlocale... yes
checking for setmode... no
checking deeper for setmode... but still no
checking for setrlimit... yes
checking for usleep... yes
checking for utime... yes
checking for utimes... yes
checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK
checking for perl... /usr/bin/perl
checking for gnroff... no
checking for nroff... /usr/bin/nroff
checking how to use *nroff to get plain text from man pages... -man
checking whether to enable the threaded resolver... yes
checking whether to use POSIX threads for threaded resolver... auto
checking for pthread.h... yes
checking for pthread_create... yes
checking convert -I options to -isystem... yes
checking whether to enable verbose strings... yes
checking whether to enable SSPI support (Windows native builds only)... no
checking whether to enable cryptographic authentication methods... yes
checking whether to support NTLM... yes
checking whether to enable NTLM delegation to winbind's helper... no
checking whether to enable TLS-SRP authentication... yes
checking whether to enable Unix domain sockets... auto
checking for struct sockaddr_un.sun_path... yes
checking whether to support cookies... yes
checking whether to support socketpair... yes
checking whether to support HTTP authentication... yes
checking whether to support DoH... yes
checking whether to support the MIME API... yes
checking whether to support date parsing... yes
checking whether to support netrc parsing... yes
checking whether to support progress-meter... yes
checking whether to support DNS shuffling... yes
checking whether to support curl_easy_option*... yes
checking whether to support alt-svc... no
configure: disables HSTS due to lack of SSL
checking whether hiding of library internal symbols will actually happen... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating docs/Makefile
config.status: creating docs/examples/Makefile
config.status: creating docs/libcurl/Makefile
config.status: creating docs/libcurl/opts/Makefile
config.status: creating docs/cmdline-opts/Makefile
config.status: creating include/Makefile
config.status: creating include/curl/Makefile
config.status: creating src/Makefile
config.status: creating lib/Makefile
config.status: creating scripts/Makefile
config.status: creating lib/libcurl.vers
config.status: creating tests/Makefile
config.status: creating tests/certs/Makefile
config.status: creating tests/certs/scripts/Makefile
config.status: creating tests/data/Makefile
config.status: creating tests/server/Makefile
config.status: creating tests/libtest/Makefile
config.status: creating tests/unit/Makefile
config.status: creating packages/Makefile
config.status: creating packages/vms/Makefile
config.status: creating curl-config
config.status: creating libcurl.pc
config.status: creating lib/curl_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
configure: amending lib/Makefile
configure: amending src/Makefile
configure: amending tests/unit/Makefile
configure: amending tests/server/Makefile
configure: amending tests/libtest/Makefile
configure: amending docs/examples/Makefile
configure: Configured to build curl/libcurl:

  Host setup:       x86_64-pc-linux-gnu
  Install prefix:   /usr/local
  Compiler:         ccache gcc
   CFLAGS:          -Werror-implicit-function-declaration -O2 -Wno-system-headers -Wenum-conversion
   CPPFLAGS:        
   LDFLAGS:         
   LIBS:            -lpsl -lz

  curl version:     7.77.1-DEV
  SSL:              no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )
  SSH:              no      (--with-{libssh,libssh2})
  zlib:             enabled
  brotli:           no      (--with-brotli)
  zstd:             no      (--with-zstd)
  GSS-API:          no      (--with-gssapi)
  GSASL:            no      (libgsasl not found)
  TLS-SRP:          no      (--enable-tls-srp)
  resolver:         POSIX threaded
  IPv6:             enabled
  Unix sockets:     enabled
  IDN:              no      (--with-{libidn2,winidn})
  Build libcurl:    Shared=no, Static=yes
  Built-in manual:  enabled
  --libcurl option: enabled (--disable-libcurl-option)
  Verbose errors:   enabled (--disable-verbose)
  Code coverage:    disabled
  SSPI:             no      (--enable-sspi)
  ca cert bundle:   no
  ca cert path:     
  ca fallback:      
  LDAP:             no      (--enable-ldap / --with-ldap-lib / --with-lber-lib)
  LDAPS:            no      (--enable-ldaps)
  RTSP:             enabled
  RTMP:             no      (--with-librtmp)
  PSL:              enabled
  Alt-svc:          enabled (--disable-alt-svc)
  HSTS:             no      (--enable-hsts)
  HTTP1:            enabled (internal)
  HTTP2:            no      (--with-nghttp2, --with-hyper)
  HTTP3:            no      (--with-ngtcp2, --with-quiche)
  ECH:              no      (--enable-ech)
  Protocols:        DICT FILE FTP GOPHER HTTP IMAP MQTT POP3 RTSP SMTP TELNET TFTP
  Features:         AsynchDNS IPv6 Largefile PSL UnixSockets alt-svc libz

configure: WARNING: Cannot find libraries for LDAP support: LDAP disabled
configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.
configure: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this.
configure: WARNING: libgsasl was not found
configure: WARNING: Cannot find libraries for IDN support: IDN disabled

$ make -j3
Making all in lib
make[1]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/lib'
make  all-am
make[2]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/lib'
  CC       libcurl_la-altsvc.lo
  CC       libcurl_la-amigaos.lo
  CC       libcurl_la-asyn-ares.lo
  CC       libcurl_la-asyn-thread.lo
  CC       libcurl_la-base64.lo
  CC       libcurl_la-bufref.lo
  CC       libcurl_la-c-hyper.lo
  CC       libcurl_la-conncache.lo
  CC       libcurl_la-connect.lo
  CC       libcurl_la-content_encoding.lo
  CC       libcurl_la-cookie.lo
  CC       libcurl_la-curl_addrinfo.lo
  CC       libcurl_la-curl_ctype.lo
  CC       libcurl_la-curl_des.lo
  CC       libcurl_la-curl_endian.lo
  CC       libcurl_la-curl_fnmatch.lo
  CC       libcurl_la-curl_get_line.lo
  CC       libcurl_la-curl_gethostname.lo
  CC       libcurl_la-curl_gssapi.lo
  CC       libcurl_la-curl_memrchr.lo
  CC       libcurl_la-curl_multibyte.lo
  CC       libcurl_la-curl_ntlm_core.lo
  CC       libcurl_la-curl_ntlm_wb.lo
  CC       libcurl_la-curl_path.lo
  CC       libcurl_la-curl_range.lo
  CC       libcurl_la-curl_rtmp.lo
  CC       libcurl_la-curl_sasl.lo
  CC       libcurl_la-curl_sspi.lo
  CC       libcurl_la-curl_threads.lo
  CC       libcurl_la-dict.lo
  CC       libcurl_la-doh.lo
  CC       libcurl_la-dotdot.lo
  CC       libcurl_la-dynbuf.lo
  CC       libcurl_la-easy.lo
  CC       libcurl_la-easygetopt.lo
  CC       libcurl_la-easyoptions.lo
  CC       libcurl_la-escape.lo
  CC       libcurl_la-file.lo
  CC       libcurl_la-fileinfo.lo
  CC       libcurl_la-formdata.lo
  CC       libcurl_la-ftp.lo
  CC       libcurl_la-ftplistparser.lo
  CC       libcurl_la-getenv.lo
  CC       libcurl_la-getinfo.lo
  CC       libcurl_la-gopher.lo
  CC       libcurl_la-hash.lo
  CC       libcurl_la-hmac.lo
  CC       libcurl_la-hostasyn.lo
  CC       libcurl_la-hostcheck.lo
  CC       libcurl_la-hostip.lo
  CC       libcurl_la-hostip4.lo
  CC       libcurl_la-hostip6.lo
  CC       libcurl_la-hostsyn.lo
  CC       libcurl_la-hsts.lo
  CC       libcurl_la-http.lo
  CC       libcurl_la-http2.lo
  CC       libcurl_la-http_chunks.lo
  CC       libcurl_la-http_digest.lo
  CC       libcurl_la-http_negotiate.lo
  CC       libcurl_la-http_ntlm.lo
  CC       libcurl_la-http_proxy.lo
  CC       libcurl_la-http_aws_sigv4.lo
  CC       libcurl_la-idn_win32.lo
  CC       libcurl_la-if2ip.lo
  CC       libcurl_la-imap.lo
  CC       libcurl_la-inet_ntop.lo
  CC       libcurl_la-inet_pton.lo
  CC       libcurl_la-krb5.lo
  CC       libcurl_la-ldap.lo
  CC       libcurl_la-llist.lo
  CC       libcurl_la-md4.lo
  CC       libcurl_la-md5.lo
  CC       libcurl_la-memdebug.lo
  CC       libcurl_la-mime.lo
  CC       libcurl_la-mprintf.lo
  CC       libcurl_la-mqtt.lo
  CC       libcurl_la-multi.lo
  CC       libcurl_la-netrc.lo
  CC       libcurl_la-non-ascii.lo
  CC       libcurl_la-nonblock.lo
  CC       libcurl_la-openldap.lo
  CC       libcurl_la-parsedate.lo
  CC       libcurl_la-pingpong.lo
  CC       libcurl_la-pop3.lo
  CC       libcurl_la-progress.lo
  CC       libcurl_la-psl.lo
  CC       libcurl_la-rand.lo
  CC       libcurl_la-rename.lo
  CC       libcurl_la-rtsp.lo
  CC       libcurl_la-select.lo
  CC       libcurl_la-sendf.lo
  CC       libcurl_la-setopt.lo
  CC       libcurl_la-sha256.lo
  CC       libcurl_la-share.lo
  CC       libcurl_la-slist.lo
  CC       libcurl_la-smb.lo
  CC       libcurl_la-smtp.lo
  CC       libcurl_la-socketpair.lo
  CC       libcurl_la-socks.lo
  CC       libcurl_la-socks_gssapi.lo
  CC       libcurl_la-socks_sspi.lo
  CC       libcurl_la-speedcheck.lo
  CC       libcurl_la-splay.lo
  CC       libcurl_la-strcase.lo
  CC       libcurl_la-strdup.lo
  CC       libcurl_la-strerror.lo
  CC       libcurl_la-strtok.lo
  CC       libcurl_la-strtoofft.lo
  CC       libcurl_la-system_win32.lo
  CC       libcurl_la-telnet.lo
  CC       libcurl_la-tftp.lo
  CC       libcurl_la-timeval.lo
  CC       libcurl_la-transfer.lo
  CC       libcurl_la-url.lo
  CC       libcurl_la-urlapi.lo
  CC       libcurl_la-version.lo
  CC       libcurl_la-version_win32.lo
  CC       libcurl_la-warnless.lo
  CC       libcurl_la-wildcard.lo
  CC       libcurl_la-x509asn1.lo
  CC       vauth/libcurl_la-cleartext.lo
  CC       vauth/libcurl_la-cram.lo
  CC       vauth/libcurl_la-digest.lo
  CC       vauth/libcurl_la-digest_sspi.lo
  CC       vauth/libcurl_la-gsasl.lo
  CC       vauth/libcurl_la-krb5_gssapi.lo
  CC       vauth/libcurl_la-krb5_sspi.lo
  CC       vauth/libcurl_la-ntlm.lo
  CC       vauth/libcurl_la-ntlm_sspi.lo
  CC       vauth/libcurl_la-oauth2.lo
  CC       vauth/libcurl_la-spnego_gssapi.lo
  CC       vauth/libcurl_la-spnego_sspi.lo
  CC       vauth/libcurl_la-vauth.lo
  CC       vtls/libcurl_la-bearssl.lo
  CC       vtls/libcurl_la-gskit.lo
  CC       vtls/libcurl_la-gtls.lo
  CC       vtls/libcurl_la-keylog.lo
  CC       vtls/libcurl_la-mbedtls.lo
  CC       vtls/libcurl_la-mbedtls_threadlock.lo
  CC       vtls/libcurl_la-mesalink.lo
  CC       vtls/libcurl_la-nss.lo
  CC       vtls/libcurl_la-openssl.lo
  CC       vtls/libcurl_la-rustls.lo
  CC       vtls/libcurl_la-schannel.lo
  CC       vtls/libcurl_la-schannel_verify.lo
  CC       vtls/libcurl_la-sectransp.lo
  CC       vtls/libcurl_la-vtls.lo
  CC       vtls/libcurl_la-wolfssl.lo
  CC       vquic/libcurl_la-ngtcp2.lo
  CC       vquic/libcurl_la-quiche.lo
  CC       vquic/libcurl_la-vquic.lo
  CC       vssh/libcurl_la-libssh.lo
  CC       vssh/libcurl_la-libssh2.lo
  CC       vssh/libcurl_la-wolfssh.lo
  CCLD     libcurl.la
make[2]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/lib'
make[1]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/lib'
Making all in src
make[1]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/src'
Making all in ../docs
make[2]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/docs'
Making all in .
make[3]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/docs'
if test "..x" != "..x" -a -e "./curl.1"; then \
	/usr/bin/install -c -m 644 "./curl.1" /root/asi_db/builds/curl/_worktrees/w0/docs/curl.1; fi
cd cmdline-opts && make
make[4]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/docs/cmdline-opts'
generate ../../docs/curl.1
make[4]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/docs/cmdline-opts'
make[3]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/docs'
Making all in cmdline-opts
make[3]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/docs/cmdline-opts'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/docs/cmdline-opts'
make[2]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/docs'
make[2]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0/src'
  CC       slist_wc.o
  CC       tool_binmode.o
  CC       tool_bname.o
  CC       tool_cb_dbg.o
  CC       tool_cb_hdr.o
  CC       tool_cb_prg.o
  CC       tool_cb_rea.o
  CC       tool_cb_see.o
  CC       tool_cb_wrt.o
  CC       tool_cfgable.o
  CC       tool_convert.o
  CC       tool_dirhie.o
  CC       tool_doswin.o
  CC       tool_easysrc.o
  CC       tool_filetime.o
  CC       tool_formparse.o
  CC       tool_getparam.o
  CC       tool_getpass.o
  CC       tool_help.o
  CC       tool_helpers.o
  CC       tool_homedir.o
  HUGE     tool_hugehelp.c
  CC       tool_libinfo.o
  CC       tool_main.o
  CC       tool_msgs.o
  CC       tool_operate.o
  CC       tool_operhlp.o
  CC       tool_panykey.o
  CC       tool_paramhlp.o
  CC       tool_parsecfg.o
  CC       tool_progress.o
  CC       tool_strdup.o
  CC       tool_setopt.o
  CC       tool_sleep.o
  CC       tool_urlglob.o
  CC       tool_util.o
  CC       tool_vms.o
  CC       tool_writeout.o
  CC       tool_writeout_json.o
  CC       tool_xattr.o
  CC       ../lib/strtoofft.o
  CC       ../lib/nonblock.o
  CC       ../lib/warnless.o
  CC       ../lib/curl_ctype.o
  CC       ../lib/curl_multibyte.o
  CC       ../lib/version_win32.o
  CC       ../lib/dynbuf.o
  CC       tool_hugehelp.o
  CCLD     curl
make[2]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/src'
make[1]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0/src'
make[1]: Entering directory '/root/asi_db/builds/curl/_worktrees/w0'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/root/asi_db/builds/curl/_worktrees/w0'

Commit Diff GitHub →

.cirrus.yml+2 -2
@@ -41,7 +41,7 @@ freebsd_task:
pkginstall_script:
- pkg update -f
- - pkg install -y autoconf automake libtool pkgconf brotli openldap-client heimdal libpsl libmetalink libssh2 openssh-portable libidn2 librtmp libnghttp2 nghttp2 stunnel
+ - pkg install -y autoconf automake libtool pkgconf brotli openldap-client heimdal libpsl libssh2 openssh-portable libidn2 librtmp libnghttp2 nghttp2 stunnel
- case `python -V` in
Python?3.7*) pkg install -y py37-impacket ;;
Python?2.7*) pkg install -y py27-impacket ;;
@@ -56,7 +56,7 @@ freebsd_task:
export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;;
esac
- - ./configure --prefix="${HOME}"/install --enable-debug --with-openssl --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libmetalink --with-libpsl --with-nghttp2 || { tail -300 config.log; false; }
+ - ./configure --prefix="${HOME}"/install --enable-debug --with-openssl --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libpsl --with-nghttp2 || { tail -300 config.log; false; }
compile_script:
- make V=1 && cd tests && make V=1
test_script:
.github/workflows/macos.yml+11 -11
@@ -38,19 +38,19 @@ jobs:
macosx-version-min: 10.9
- name: HTTP only
install: nghttp2
- configure: --enable-debug --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libmetalink --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib
+ configure: --enable-debug --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib
macosx-version-min: 10.15
- - name: SecureTransport metalink
- install: nghttp2 libmetalink
- configure: --enable-debug --with-secure-transport --with-libmetalink
+ - name: SecureTransport http2
+ install: nghttp2
+ configure: --enable-debug --with-secure-transport
macosx-version-min: 10.8
- - name: OpenSSL metalink
- install: nghttp2 openssl libmetalink
- configure: --enable-debug --with-openssl=/usr/local/opt/openssl --with-libmetalink
+ - name: OpenSSL http2
+ install: nghttp2 openssl
+ configure: --enable-debug --with-openssl=/usr/local/opt/openssl
macosx-version-min: 10.9
- - name: LibreSSL metalink
- install: nghttp2 libressl libmetalink
- configure: --enable-debug --with-openssl=/usr/local/opt/libressl --with-libmetalink
+ - name: LibreSSL http2
+ install: nghttp2 libressl
+ configure: --enable-debug --with-openssl=/usr/local/opt/libressl
macosx-version-min: 10.9
- name: torture
install: nghttp2 openssl
@@ -63,7 +63,7 @@ jobs:
tflags: -n -t --shallow=20 FTP
macosx-version-min: 10.9
- name: macOS 10.15
- install: nghttp2 libmetalink libssh2 openssl
+ install: nghttp2 libssh2 openssl
configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl
macosx-version-min: 10.15
steps:
.lgtm.yml+1 -1
@@ -28,4 +28,4 @@ extraction:
- rm -f CMakeLists.txt
- ./buildconf
configure: # enable as many optional features as possible
- command: ./configure --enable-ares --with-libssh2 --with-gssapi --with-librtmp --with-libmetalink --with-openssl
+ command: ./configure --enable-ares --with-libssh2 --with-gssapi --with-librtmp --with-openssl
configure.ac+2 -95
@@ -163,7 +163,6 @@ curl_verbose_msg="enabled (--disable-verbose)"
curl_ldaps_msg="no (--enable-ldaps)"
curl_rtsp_msg="no (--enable-rtsp)"
curl_rtmp_msg="no (--with-librtmp)"
- curl_mtlnk_msg="no (--with-libmetalink)"
curl_psl_msg="no (--with-libpsl)"
curl_altsvc_msg="enabled (--disable-alt-svc)"
curl_hsts_msg="enabled (--disable-hsts)"
@@ -1853,99 +1852,8 @@ if test $with_libgsasl != "no"; then
fi
AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"])
-dnl **********************************************************************
-dnl Check for libmetalink
-dnl **********************************************************************
-
-OPT_LIBMETALINK=no
-
-AC_ARG_WITH(libmetalink,dnl
-AS_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
-AS_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
- OPT_LIBMETALINK=$withval)
-
-if test X"$OPT_LIBMETALINK" != Xno; then
-
- addld=""
- addlib=""
- addcflags=""
- version=""
- libmetalinklib=""
-
- PKGTEST="no"
- if test "x$OPT_LIBMETALINK" = "xyes"; then
- dnl this is with no partiular path given
- PKGTEST="yes"
- CURL_CHECK_PKGCONFIG(libmetalink)
- else
- dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
- LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
- AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
- if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
- PKGTEST="yes"
- fi
- if test "$PKGTEST" = "yes"; then
- CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
- fi
- fi
- if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
- addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
- $PKGCONFIG --libs-only-l libmetalink`
- addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
- $PKGCONFIG --libs-only-L libmetalink`
- addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
- $PKGCONFIG --cflags-only-I libmetalink`
- version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
- $PKGCONFIG --modversion libmetalink`
- libmetalinklib=`echo $addld | $SED -e 's/^-L//'`
- fi
- if test -n "$addlib"; then
-
- clean_CPPFLAGS="$CPPFLAGS"
- clean_LDFLAGS="$LDFLAGS"
- clean_LIBS="$LIBS"
- CPPFLAGS="$clean_CPPFLAGS $addcflags"
- LDFLAGS="$clean_LDFLAGS $addld"
- LIBS="$addlib $clean_LIBS"
- AC_MSG_CHECKING([if libmetalink is recent enough])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-# include <metalink/metalink.h>
- ]],[[
- if(0 != metalink_strerror(0)) /* added in 0.1.0 */
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes ($version)])
- want_metalink="yes"
- ],[
- AC_MSG_RESULT([no ($version)])
- AC_MSG_NOTICE([libmetalink library defective or too old])
- want_metalink="no"
- ])
- if test "x$OPENSSL_ENABLED" != "x1" -a "x$USE_WINDOWS_SSPI" != "x1" \
- -a "x$GNUTLS_ENABLED" != "x1" -a "x$NSS_ENABLED" != "x1" \
- -a "x$SECURETRANSPORT_ENABLED" != "x1"; then
- AC_MSG_WARN([metalink support requires a compatible SSL/TLS backend])
- want_metalink="no"
- fi
- CPPFLAGS="$clean_CPPFLAGS"
- LDFLAGS="$clean_LDFLAGS"
- LIBS="$clean_LIBS"
- if test "$want_metalink" = "yes"; then
- dnl finally libmetalink will be used
- AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
- LIBMETALINK_LIBS=$addlib
- LIBMETALINK_LDFLAGS=$addld
- LIBMETALINK_CPPFLAGS=$addcflags
- AC_SUBST([LIBMETALINK_LIBS])
- AC_SUBST([LIBMETALINK_LDFLAGS])
- AC_SUBST([LIBMETALINK_CPPFLAGS])
- curl_mtlnk_msg="enabled"
- fi
-
- fi
-fi
+AC_ARG_WITH(libmetalink,,
+ AC_MSG_ERROR([--with-libmetalink no longer works!]))
dnl **********************************************************************
dnl Check for the presence of LIBSSH2 libraries and headers
@@ -4342,7 +4250,6 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
LDAPS: ${curl_ldaps_msg}
RTSP: ${curl_rtsp_msg}
RTMP: ${curl_rtmp_msg}
- Metalink: ${curl_mtlnk_msg}
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
HSTS: ${curl_hsts_msg}
docs/FEATURES.md+2 -5
@@ -8,7 +8,6 @@
- multiple file upload on a single command line
- custom maximum transfer rate
- redirectable stderr
- - metalink support (13)
- parallel transfers
## libcurl
@@ -79,7 +78,7 @@
- download
- authentication
- - Kerberos 5 (14)
+ - Kerberos 5 (13)
- active/passive using PORT, EPRT, PASV or EPSV
- single file size information (compare to HTTP HEAD)
- 'type=' URL support
@@ -218,6 +217,4 @@
10. -
11. requires libidn2 or Windows
12. requires libz, brotli and/or zstd
- 13. requires libmetalink, and either an Apple or Microsoft operating
- system, or OpenSSL, or GnuTLS, or NSS
- 14. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
+ 13. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
docs/MANUAL.md+0 -25
@@ -952,31 +952,6 @@ previous example in an SFTP URL might look like:
IPv6 addresses provided other than in URLs (e.g. to the `--proxy`,
`--interface` or `--ftp-port` options) should not be URL encoded.
-## Metalink
-
-Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way
-to list multiple URIs and hashes for a file. Curl will make use of the mirrors
-listed within for failover if there are errors (such as the file or server not
-being available). It will also verify the hash of the file after the download
-completes. The Metalink file itself is downloaded and processed in memory and
-not stored in the local file system.
-
-Example to use a remote Metalink file:
-
- curl --metalink http://www.example.com/example.metalink
-
-To use a Metalink file in the local file system, use FILE protocol
-(`file://`):
-
- curl --metalink file:///example.metalink
-
-Please note that if FILE protocol is disabled, there is no way to use a local
-Metalink file at the time of this writing. Also note that if `--metalink` and
-`--include` are used together, `--include` will be ignored. This is because
-including headers in the response will break Metalink parser and if the
-headers are included in the file described in Metalink file, hash check will
-fail.
-
## Mailing Lists
For your convenience, we have several open mailing lists to discuss curl, its
docs/cmdline-opts/metalink.d+3 -22
@@ -1,27 +1,8 @@
Long: metalink
Help: Process given URLs as metalink XML file
Added: 7.27.0
-Requires: metalink
Category: misc
---
-This option can tell curl to parse and process a given URI as Metalink file
-(both version 3 and 4 (RFC 5854) are supported) and make use of the mirrors
-listed within for failover if there are errors (such as the file or server not
-being available). It will also verify the hash of the file after the download
-completes. The Metalink file itself is downloaded and processed in memory and
-not stored in the local file system.
-
-Example to use a remote Metalink file:
-
- curl --metalink http://www.example.com/example.metalink
-
-To use a Metalink file in the local file system, use FILE protocol (file://):
-
- curl --metalink file:///example.metalink
-
-Please note that if FILE protocol is disabled, there is no way to use a local
-Metalink file at the time of this writing. Also note that if --metalink and
---include are used together, --include will be ignored. This is because
-including headers in the response will break Metalink parser and if the
-headers are included in the file described in Metalink file, hash check will
-fail.
+This option was previously used to specify a metalink resource. Metalink
+support has unfortunately been disabled in curl since 7.78.0 due to security
+reasons.
docs/cmdline-opts/page-header+2 -2
@@ -37,8 +37,8 @@ interaction.
curl offers a busload of useful tricks like proxy support, user
authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer
-resume, Metalink, and more. As you will see below, the number of features will
-make your head spin!
+resume and more. As you will see below, the number of features will make your
+head spin!
curl is powered by libcurl for all transfer-related features. See
*libcurl(3)* for details.
docs/cmdline-opts/version.d+0 -2
@@ -50,8 +50,6 @@ This curl supports transfers of large files, files larger than 2GB.
.IP "libz"
Automatic decompression (via gzip, deflate) of compressed files over HTTP is
supported.
-.IP "Metalink"
-This curl supports Metalink.
.IP "MultiSSL"
This curl supports multiple TLS backends.
.IP "NTLM"
docs/examples/Makefile.m32+0 -19
@@ -59,10 +59,6 @@ endif
ifndef LIBRTMP_PATH
LIBRTMP_PATH = ../../../librtmp-2.4
endif
-# Edit the path below to point to the base of your libmetalink package.
-ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../../libmetalink-0.1.3
-endif
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../../expat-2.1.0
@@ -220,9 +216,6 @@ endif
ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
IPV6 = 1
endif
-ifeq ($(findstring -metalink,$(CFG)),-metalink)
-METALINK = 1
-endif
ifeq ($(findstring -winssl,$(CFG)),-winssl)
WINSSL = 1
SSPI = 1
@@ -354,18 +347,6 @@ ifdef WINIDN
curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
endif
endif
-ifdef METALINK
- INCLUDES += -I"$(LIBMETALINK_PATH)/include"
- CFLAGS += -DUSE_METALINK
- curl_LDADD += -L"$(LIBMETALINK_PATH)/lib" -lmetalink
- ifndef DYN
- ifeq ($(findstring libexpat_metalink_parser.o,$(shell $(AR) t "$(LIBMETALINK_PATH)/lib/libmetalink.a")),libexpat_metalink_parser.o)
- curl_LDADD += -L"$(LIBEXPAT_PATH)/lib" -lexpat
- else
- curl_LDADD += -L"$(LIBXML2_PATH)/lib" -lxml2
- endif
- endif
-endif
ifdef SSPI
CFLAGS += -DUSE_WINDOWS_SSPI
endif
packages/vms/gnv_link_curl.com+2 -2
@@ -4,7 +4,7 @@ $! $Id$
$!
$! File to build images using gnv$libcurl.exe
$!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2009 - 2021, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
@@ -408,7 +408,7 @@ $ link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf -
[.src]curl-tool_getpass.o, [.src]curl-tool_help.o, -
[.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, -
[.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, -
- [.src]curl-tool_metalink.o, [.src]curl-tool_mfiles.o, -
+ [.src]curl-tool_mfiles.o, -
[.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, -
[.src]curl-tool_operhlp.o, [.src]curl-tool_panykey.o, -
[.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, -
src/Makefile.am+4 -7
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al.
+# Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -61,18 +61,15 @@ CFLAGS += @CURL_CFLAG_EXTRAS@
LIBS = $(BLANK_AT_MAKETIME)
if USE_EXPLICIT_LIB_DEPS
-curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @LIBCURL_LIBS@
+curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
else
-curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBMETALINK_LIBS@ @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
+curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
endif
-curl_LDFLAGS = @LIBMETALINK_LDFLAGS@
-curl_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
-
# if unit tests are enabled, build a static library to link them with
if BUILD_UNITTESTS
noinst_LTLIBRARIES = libcurltool.la
-libcurltool_la_CPPFLAGS = $(LIBMETALINK_CPPFLAGS) $(AM_CPPFLAGS) \
+libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DCURL_STATICLIB -DUNITTESTS
libcurltool_la_CFLAGS =
libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
src/Makefile.inc+1 -3
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al.
+# Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -74,7 +74,6 @@ CURL_CFILES = \
tool_hugehelp.c \
tool_libinfo.c \
tool_main.c \
- tool_metalink.c \
tool_msgs.c \
tool_operate.c \
tool_operhlp.c \
@@ -117,7 +116,6 @@ CURL_HFILES = \
tool_hugehelp.h \
tool_libinfo.h \
tool_main.h \
- tool_metalink.h \
tool_msgs.h \
tool_operate.h \
tool_operhlp.h \
src/Makefile.m32+0 -19
@@ -59,10 +59,6 @@ endif
ifndef LIBRTMP_PATH
LIBRTMP_PATH = ../../librtmp-2.4
endif
-# Edit the path below to point to the base of your libmetalink package.
-ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../libmetalink-0.1.3
-endif
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../expat-2.1.0
@@ -229,9 +225,6 @@ endif
ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
IPV6 = 1
endif
-ifeq ($(findstring -metalink,$(CFG)),-metalink)
-METALINK = 1
-endif
ifeq ($(findstring -winssl,$(CFG)),-winssl)
WINSSL = 1
SSPI = 1
@@ -379,18 +372,6 @@ ifdef WINIDN
curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
endif
endif
-ifdef METALINK
- INCLUDES += -I"$(LIBMETALINK_PATH)/include"
- CFLAGS += -DUSE_METALINK
- curl_LDADD += -L"$(LIBMETALINK_PATH)/lib" -lmetalink
- ifndef DYN
- ifeq ($(findstring libexpat_metalink_parser.o,$(shell $(AR) t "$(LIBMETALINK_PATH)/lib/libmetalink.a")),libexpat_metalink_parser.o)
- curl_LDADD += -L"$(LIBEXPAT_PATH)/lib" -lexpat
- else
- curl_LDADD += -L"$(LIBXML2_PATH)/lib" -lxml2
- endif
- endif
-endif
ifdef SSPI
CFLAGS += -DUSE_WINDOWS_SSPI
endif
src/Makefile.netware+1 -29
@@ -6,7 +6,7 @@
# \___|\___/|_| \_\_____|
#
# Copyright (C) 2004 - 2014, Guenter Knauf
-# Copyright (C) 2001 - 2020, Daniel Stenberg, <[email protected]>, et al.
+# Copyright (C) 2001 - 2021, Daniel Stenberg, <[email protected]>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -69,11 +69,6 @@ ifndef FBOPENSSL_PATH
FBOPENSSL_PATH = ../../fbopenssl-0.4
endif
-# Edit the path below to point to the base of your libmetalink package.
-ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../libmetalink-0.1.2
-endif
-
# Edit the path below to point to the base of your libexpat package.
ifndef LIBEXPAT_PATH
LIBEXPAT_PATH = ../../expat-2.1.0
@@ -243,10 +238,6 @@ endif
ifeq ($(findstring -idn,$(CFG)),-idn)
WITH_IDN = 1
endif
-ifeq ($(findstring -metalink,$(CFG)),-metalink)
-WITH_METALINK = 1
-WITH_SSL = 1
-endif
ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
WITH_NGHTTP2 = 1
endif
@@ -301,25 +292,6 @@ ifdef WITH_NGHTTP2
INCLUDES += -I$(NGHTTP2_PATH)/include
LDLIBS += $(NGHTTP2_PATH)/lib/libnghttp2.$(LIBEXT)
endif
-ifdef WITH_METALINK
- CFLAGS += -DUSE_METALINK
- INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
- INCLUDES += -I$(LIBMETALINK_PATH)/include
- LDLIBS += $(LIBMETALINK_PATH)/lib/libmetalink.$(LIBEXT)
- ifdef WITH_LIBEXPAT
- ifeq ($(LIBARCH),LIBC)
- IMPORTS += @$(LIBEXPAT_PATH)/imports/expatlbc.imp
- MODULES += expatlbc
- else
- IMPORTS += @$(LIBEXPAT_PATH)/imports/expatlib.imp
- MODULES += expatlib
- endif
-else
-ifdef WITH_LIBXML2
- IMPORTS += @$(LIBXML2_PATH)/lib/libxml2.imp
- MODULES += libxml2
-endif
-endif
endif
ifeq ($(LIBARCH),LIBC)
src/tool_cfgable.h+0 -5
@@ -23,7 +23,6 @@
***************************************************************************/
#include "tool_setup.h"
#include "tool_sdecls.h"
-#include "tool_metalink.h"
#include "tool_urlglob.h"
#include "tool_formparse.h"
@@ -270,10 +269,6 @@ struct OperationConfig {
bool ssl_auto_client_cert; /* automatically locate and use a client
certificate for authentication (Schannel) */
bool proxy_ssl_auto_client_cert; /* proxy version of ssl_auto_client_cert */
-
- bool use_metalink; /* process given URLs as metalink XML file */
- struct metalinkfile *metalinkfile_list; /* point to the first node */
- struct metalinkfile *metalinkfile_last; /* point to the last/current node */
char *oauth_bearer; /* OAuth 2.0 bearer token */
bool nonpn; /* enable/disable TLS NPN extension */
bool noalpn; /* enable/disable TLS ALPN extension */
src/tool_getparam.c+2 -24
@@ -36,7 +36,6 @@
#include "tool_getparam.h"
#include "tool_helpers.h"
#include "tool_libinfo.h"
-#include "tool_metalink.h"
#include "tool_msgs.h"
#include "tool_paramhlp.h"
#include "tool_parsecfg.h"
@@ -1140,29 +1139,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
GetStr(&config->mail_auth, nextarg);
break;
case 'J': /* --metalink */
- {
-#ifdef USE_METALINK
- int mlmaj, mlmin, mlpatch;
- metalink_get_version(&mlmaj, &mlmin, &mlpatch);
- if((mlmaj*10000)+(mlmin*100) + mlpatch < CURL_REQ_LIBMETALINK_VERS) {
- warnf(global,
- "--metalink option cannot be used because the version of "
- "the linked libmetalink library is too old. "
- "Required: %d.%d.%d, found %d.%d.%d\n",
- CURL_REQ_LIBMETALINK_MAJOR,
- CURL_REQ_LIBMETALINK_MINOR,
- CURL_REQ_LIBMETALINK_PATCH,
- mlmaj, mlmin, mlpatch);
- return PARAM_BAD_USE;
- }
- else
- config->use_metalink = toggle;
-#else
- warnf(global, "--metalink option is ignored because the binary is "
- "built without the Metalink support.\n");
-#endif
- break;
- }
+ errorf(global, "--metalink is disabled\n");
+ return PARAM_BAD_USE;
case '6': /* --sasl-authzid */
GetStr(&config->sasl_authzid, nextarg);
break;
src/tool_help.c+1 -21
@@ -30,7 +30,6 @@
#include "tool_panykey.h"
#include "tool_help.h"
#include "tool_libinfo.h"
-#include "tool_metalink.h"
#include "tool_version.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -967,27 +966,11 @@ featcomp(const void *p1, const void *p2)
#endif
}
-#ifdef USE_METALINK
-static const char *metalnk_version(void)
-{
- static char version[25];
- int major = 0;
- int minor = 0;
- int patch = 0;
- metalink_get_version(&major, &minor, &patch);
- msnprintf(version, sizeof(version), " libmetalink/%u.%u.%u",
- major, minor, patch);
- return version;
-}
-#else
-#define metalnk_version() ""
-#endif
-
void tool_version_info(void)
{
const char *const *proto;
- printf(CURL_ID "%s%s\n", curl_version(), metalnk_version());
+ printf(CURL_ID "%s\n", curl_version());
#ifdef CURL_PATCHSTAMP
printf("Release-Date: %s, security patched: %s\n",
LIBCURL_TIMESTAMP, CURL_PATCHSTAMP);
@@ -1010,9 +993,6 @@ void tool_version_info(void)
if(curlinfo->features & feats[i].bitmask)
featp[numfeat++] = (char *)feats[i].name;
}
-#ifdef USE_METALINK
- featp[numfeat++] = (char *)"Metalink";
-#endif
qsort(&featp[0], numfeat, sizeof(char *), featcomp);
for(i = 0; i< numfeat; i++)
printf(" %s", featp[i]);
src/tool_main.c+0 -1
@@ -212,7 +212,6 @@ static void main_free(struct GlobalConfig *config)
/* Main cleanup */
curl_global_cleanup();
convert_cleanup();
- metalink_cleanup();
#ifdef USE_NSS
if(PR_Initialized()) {
/* prevent valgrind from reporting still reachable mem from NSRP arenas */
src/tool_metalink.c+0 -873
@@ -1,873 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, 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.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.
- *
- ***************************************************************************/
-#include "tool_setup.h"
-
-#ifdef USE_METALINK
-
-#include <sys/stat.h>
-#include <stdlib.h>
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#undef HAVE_NSS_CONTEXT
-
-#ifdef USE_OPENSSL
-# include <openssl/md5.h>
-# include <openssl/sha.h>
-#elif defined(USE_GNUTLS)
-# include <nettle/md5.h>
-# include <nettle/sha.h>
-# define MD5_CTX struct md5_ctx
-# define SHA_CTX struct sha1_ctx
-# define SHA256_CTX struct sha256_ctx
-#elif defined(USE_NSS)
-# include <nss.h>
-# include <pk11pub.h>
-# define MD5_CTX void *
-# define SHA_CTX void *
-# define SHA256_CTX void *
-# define HAVE_NSS_CONTEXT
- static NSSInitContext *nss_context;
-#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
- (__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
- (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
- (__IPHONE_OS_VERSION_MAX_ALLOWED >= 20000))
-/* For Apple operating systems: CommonCrypto has the functions we need.
- The library's headers are even backward-compatible with OpenSSL's
- headers as long as we define COMMON_DIGEST_FOR_OPENSSL first.
-
- These functions are available on Tiger and later, as well as iOS 2.0
- and later. If you're building for an older cat, well, sorry. */
-# define COMMON_DIGEST_FOR_OPENSSL
-# include <CommonCrypto/CommonDigest.h>
-#elif defined(USE_WIN32_CRYPTO)
-/* For Windows: If no other crypto library is provided, we fallback
- to the hash functions provided within the Microsoft Windows CryptoAPI */
-# include <wincrypt.h>
-/* Custom structure in order to store the required provider and hash handle */
-struct win32_crypto_hash {
- HCRYPTPROV hCryptProv;
- HCRYPTHASH hHash;
-};
-/* Custom Microsoft AES Cryptographic Provider defines required for MinGW */
-# ifndef ALG_SID_SHA_256
-# define ALG_SID_SHA_256 12
-# endif
-# ifndef CALG_SHA_256
-# define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
-# endif
-# define MD5_CTX struct win32_crypto_hash
-# define SHA_CTX struct win32_crypto_hash
-# define SHA256_CTX struct win32_crypto_hash
-#else
-# error "Can't compile METALINK support without a crypto library."
-#endif
-
-#define ENABLE_CURLX_PRINTF
-/* use our own printf() functions */
-#include "curlx.h"
-
-#include "tool_getparam.h"
-#include "tool_paramhlp.h"
-#include "tool_cfgable.h"
-#include "tool_metalink.h"
-#include "tool_operate.h"
-#include "tool_msgs.h"
-
-#include "memdebug.h" /* keep this as LAST include */
-
-/* Copied from tool_getparam.c */
-#define GetStr(str,val) do { \
- if(*(str)) { \
- free(*(str)); \
- *(str) = NULL; \
- } \
- if((val)) \
- *(str) = strdup((val)); \
- if(!(val)) \
- return PARAM_NO_MEM; \
-} while(0)
-
-#if defined(USE_OPENSSL)
-/* Functions are already defined */
-#elif defined(USE_GNUTLS)
-
-static int MD5_Init(MD5_CTX *ctx)
-{
- md5_init(ctx);
- return 1;
-}
-
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- md5_update(ctx, inputLen, input);
-}
-
-static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
-{
- md5_digest(ctx, 16, digest);
-}
-
-static int SHA1_Init(SHA_CTX *ctx)
-{
- sha1_init(ctx);
- return 1;
-}
-
-static void SHA1_Update(SHA_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- sha1_update(ctx, inputLen, input);
-}
-
-static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
-{
- sha1_digest(ctx, 20, digest);
-}
-
-static int SHA256_Init(SHA256_CTX *ctx)
-{
- sha256_init(ctx);
- return 1;
-}
-
-static void SHA256_Update(SHA256_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- sha256_update(ctx, inputLen, input);
-}
-
-static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
-{
- sha256_digest(ctx, 32, digest);
-}
-
-#elif defined(USE_NSS)
-
-static int nss_hash_init(void **pctx, SECOidTag hash_alg)
-{
- PK11Context *ctx;
-
- /* we have to initialize NSS if not initialized already */
- if(!NSS_IsInitialized() && !nss_context) {
- static NSSInitParameters params;
- params.length = sizeof(params);
- nss_context = NSS_InitContext("", "", "", "", &params, NSS_INIT_READONLY
- | NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | NSS_INIT_FORCEOPEN
- | NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE | NSS_INIT_PK11RELOAD);
- }
-
- ctx = PK11_CreateDigestContext(hash_alg);
- if(!ctx)
- return /* failure */ 0;
-
- if(PK11_DigestBegin(ctx) != SECSuccess) {
- PK11_DestroyContext(ctx, PR_TRUE);
- return /* failure */ 0;
- }
-
- *pctx = ctx;
- return /* success */ 1;
-}
-
-static void nss_hash_final(void **pctx, unsigned char *out, unsigned int len)
-{
- PK11Context *ctx = *pctx;
- unsigned int outlen;
- PK11_DigestFinal(ctx, out, &outlen, len);
- PK11_DestroyContext(ctx, PR_TRUE);
-}
-
-static int MD5_Init(MD5_CTX *pctx)
-{
- return nss_hash_init(pctx, SEC_OID_MD5);
-}
-
-static void MD5_Update(MD5_CTX *pctx,
- const unsigned char *input,
- unsigned int input_len)
-{
- PK11_DigestOp(*pctx, input, input_len);
-}
-
-static void MD5_Final(unsigned char digest[16], MD5_CTX *pctx)
-{
- nss_hash_final(pctx, digest, 16);
-}
-
-static int SHA1_Init(SHA_CTX *pctx)
-{
- return nss_hash_init(pctx, SEC_OID_SHA1);
-}
-
-static void SHA1_Update(SHA_CTX *pctx,
- const unsigned char *input,
- unsigned int input_len)
-{
- PK11_DigestOp(*pctx, input, input_len);
-}
-
-static void SHA1_Final(unsigned char digest[20], SHA_CTX *pctx)
-{
- nss_hash_final(pctx, digest, 20);
-}
-
-static int SHA256_Init(SHA256_CTX *pctx)
-{
- return nss_hash_init(pctx, SEC_OID_SHA256);
-}
-
-static void SHA256_Update(SHA256_CTX *pctx,
- const unsigned char *input,
- unsigned int input_len)
-{
- PK11_DigestOp(*pctx, input, input_len);
-}
-
-static void SHA256_Final(unsigned char digest[32], SHA256_CTX *pctx)
-{
- nss_hash_final(pctx, digest, 32);
-}
-
-#elif defined(USE_WIN32_CRYPTO)
-
-static void win32_crypto_final(struct win32_crypto_hash *ctx,
- unsigned char *digest,
- unsigned int digestLen)
-{
- unsigned long length;
- CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
- if(length == digestLen)
- CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
- if(ctx->hHash)
- CryptDestroyHash(ctx->hHash);
- if(ctx->hCryptProv)
- CryptReleaseContext(ctx->hCryptProv, 0);
-}
-
-static int MD5_Init(MD5_CTX *ctx)
-{
- if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
- CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
- }
- return 1;
-}
-
-static void MD5_Update(MD5_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
-}
-
-static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
-{
- win32_crypto_final(ctx, digest, 16);
-}
-
-static int SHA1_Init(SHA_CTX *ctx)
-{
- if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
- CryptCreateHash(ctx->hCryptProv, CALG_SHA1, 0, 0, &ctx->hHash);
- }
- return 1;
-}
-
-static void SHA1_Update(SHA_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
-}
-
-static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
-{
- win32_crypto_final(ctx, digest, 20);
-}
-
-static int SHA256_Init(SHA256_CTX *ctx)
-{
- if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_AES,
- CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
- CryptCreateHash(ctx->hCryptProv, CALG_SHA_256, 0, 0, &ctx->hHash);
- }
- return 1;
-}
-
-static void SHA256_Update(SHA256_CTX *ctx,
- const unsigned char *input,
- unsigned int inputLen)
-{
- CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
-}
-
-static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
-{
- win32_crypto_final(ctx, digest, 32);
-}
-
-#endif /* CRYPTO LIBS */
-
-const struct digest_params MD5_DIGEST_PARAMS[] = {
- {
- CURLX_FUNCTION_CAST(digest_init_func, MD5_Init),
- CURLX_FUNCTION_CAST(digest_update_func, MD5_Update),
- CURLX_FUNCTION_CAST(digest_final_func, MD5_Final),
- sizeof(MD5_CTX),
- 16
- }
-};
-
-const struct digest_params SHA1_DIGEST_PARAMS[] = {
- {
- CURLX_FUNCTION_CAST(digest_init_func, SHA1_Init),
- CURLX_FUNCTION_CAST(digest_update_func, SHA1_Update),
- CURLX_FUNCTION_CAST(digest_final_func, SHA1_Final),
- sizeof(SHA_CTX),
- 20
- }
-};
-
-const struct digest_params SHA256_DIGEST_PARAMS[] = {
- {
- CURLX_FUNCTION_CAST(digest_init_func, SHA256_Init),
- CURLX_FUNCTION_CAST(digest_update_func, SHA256_Update),
- CURLX_FUNCTION_CAST(digest_final_func, SHA256_Final),
- sizeof(SHA256_CTX),
- 32
- }
-};
-
-static const struct metalink_digest_def SHA256_DIGEST_DEF[] = {
- {"sha-256", SHA256_DIGEST_PARAMS}
-};
-
-static const struct metalink_digest_def SHA1_DIGEST_DEF[] = {
- {"sha-1", SHA1_DIGEST_PARAMS}
-};
-
-static const struct metalink_digest_def MD5_DIGEST_DEF[] = {
- {"md5", MD5_DIGEST_PARAMS}
-};
-
-/*
- * The alias of supported hash functions in the order by preference
- * (basically stronger hash comes first). We included "sha-256" and
- * "sha256". The former is the name defined in the IANA registry named
- * "Hash Function Textual Names". The latter is widely (and
- * historically) used in Metalink version 3.
- */
-static const struct metalink_digest_alias digest_aliases[] = {
- {"sha-256", SHA256_DIGEST_DEF},
- {"sha256", SHA256_DIGEST_DEF},
- {"sha-1", SHA1_DIGEST_DEF},
- {"sha1", SHA1_DIGEST_DEF},
- {"md5", MD5_DIGEST_DEF},
- {NULL, NULL}
-};
-
-static struct digest_context *digest_init(const struct digest_params *dparams)
-{
- struct digest_context *ctxt = malloc(sizeof(*ctxt));
- if(!ctxt)
- return ctxt;
-
- ctxt->digest_hashctx = malloc(dparams->digest_ctxtsize);
-
- if(!ctxt->digest_hashctx) {
- free(ctxt);
- return NULL;
- }
-
- ctxt->digest_hash = dparams;
-
- if(dparams->digest_init(ctxt->digest_hashctx) != 1) {
- free(ctxt->digest_hashctx);
- free(ctxt);
- return NULL;
- }
-
- return ctxt;
-}
-
-static int digest_update(struct digest_context *context,
- const unsigned char *data,
- unsigned int len)
-{
- (*context->digest_hash->digest_update)(context->digest_hashctx, data, len);
-
- return 0;
-}
-
-static int digest_final(struct digest_context *context, unsigned char *result)
-{
- if(result)
- (*context->digest_hash->digest_final)(result, context->digest_hashctx);
-
- free(context->digest_hashctx);
- free(context);
-
- return 0;
-}
-
-static unsigned char hex_to_uint(const char *s)
-{
- char buf[3];
- unsigned long val;
- buf[0] = s[0];
- buf[1] = s[1];
- buf[2] = 0;
- val = strtoul(buf, NULL, 16);
- return (unsigned char)(val&0xff);
-}
-
-/*
- * Check checksum of file denoted by filename. The expected hash value
- * is given in hex_hash which is hex-encoded string.
- *
- * This function returns 1 if it succeeds or one of the following
- * integers:
- *
- * 0:
- * Checksum didn't match.
- * -1:
- * Could not open file; or could not read data from file.
- * -2:
- * Hash algorithm not available.
- */
-static int check_hash(const char *filename,
- const struct metalink_digest_def *digest_def,
- const unsigned char *digest, FILE *error)
-{
- unsigned char *result;
- struct digest_context *dctx;
- int check_ok, flags, fd;
-
- flags = O_RDONLY;
-#ifdef O_BINARY
- /* O_BINARY is required in order to avoid binary EOF in text mode */
- flags |= O_BINARY;
-#endif
-
- fd = open(filename, flags);
- if(fd == -1) {
- fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
- digest_def->hash_name, strerror(errno));
- return -1;
- }
-
- dctx = digest_init(digest_def->dparams);
- if(!dctx) {
- fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
- digest_def->hash_name, "failed to initialize hash algorithm");
- close(fd);
- return -2;
- }
-
- result = malloc(digest_def->dparams->digest_resultlen);
- if(!result) {
- close(fd);
- digest_final(dctx, NULL);
- return -1;
- }
- while(1) {
- unsigned char buf[4096];
- ssize_t len = read(fd, buf, sizeof(buf));
- if(len == 0) {
- break;
- }
- else if(len == -1) {
- fprintf(error, "Metalink: validating (%s) [%s] FAILED (%s)\n", filename,
- digest_def->hash_name, strerror(errno));
- digest_final(dctx, result);
- close(fd);
- return -1;
- }
- digest_update(dctx, buf, (unsigned int)len);
- }
- digest_final(dctx, result);
- check_ok = memcmp(result, digest,
- digest_def->dparams->digest_resultlen) == 0;
- /* sha*sum style verdict output */
- if(check_ok)
- fprintf(error, "Metalink: validating (%s) [%s] OK\n", filename,
- digest_def->hash_name);
- else
- fprintf(error, "Metalink: validating (%s) [%s] FAILED (digest mismatch)\n",
- filename, digest_def->hash_name);
-
- free(result);
- close(fd);
- return check_ok;
-}
-
-int metalink_check_hash(struct GlobalConfig *config,
- struct metalinkfile *mlfile,
- const char *filename)
-{
- int rv;
- fprintf(config->errors, "Metalink: validating (%s)...\n", filename);
- if(!mlfile->checksum) {
- fprintf(config->errors,
- "Metalink: validating (%s) FAILED (digest missing)\n", filename);
- return -2;
- }
- rv = check_hash(filename, mlfile->checksum->digest_def,
- mlfile->checksum->digest, config->errors);
- return rv;
-}
-
-static struct metalink_checksum *
-checksum_from_hex_digest(const struct metalink_digest_def *digest_def,
- const char *hex_digest)
-{
- struct metalink_checksum *chksum;
- unsigned char *digest;
- size_t i;
- size_t len = strlen(hex_digest);
- digest = malloc(len/2);
- if(!digest)
- return 0;
-
- for(i = 0; i < len; i += 2) {
- digest[i/2] = hex_to_uint(hex_digest + i);
- }
- chksum = malloc(sizeof(struct metalink_checksum));
- if(chksum) {
- chksum->digest_def = digest_def;
- chksum->digest = digest;
- }
- else
- free(digest);
- return chksum;
-}
-
-static struct metalink_resource *new_metalink_resource(const char *url)
-{
- struct metalink_resource *res = malloc(sizeof(struct metalink_resource));
- if(res) {
- res->next = NULL;
- res->url = strdup(url);
- if(!res->url) {
- free(res);
- return NULL;
- }
- }
- return res;
-}
-
-/* Returns nonzero if hex_digest is properly formatted; that is each
- letter is in [0-9A-Za-z] and the length of the string equals to the
- result length of digest * 2. */
-static int check_hex_digest(const char *hex_digest,
- const struct metalink_digest_def *digest_def)
-{
- size_t i;
- for(i = 0; hex_digest[i]; ++i) {
- char c = hex_digest[i];
- if(!(('0' <= c && c <= '9') || ('a' <= c && c <= 'z') ||
- ('A' <= c && c <= 'Z'))) {
- return 0;
- }
- }
- return digest_def->dparams->digest_resultlen * 2 == i;
-}
-
-static struct metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
-{
- struct metalinkfile *f = malloc(sizeof(struct metalinkfile));
- if(!f)
- return NULL;
-
- f->next = NULL;
- f->filename = strdup(fileinfo->name);
- if(!f->filename) {
- free(f);
- return NULL;
- }
- f->checksum = NULL;
- f->resource = NULL;
- if(fileinfo->checksums) {
- const struct metalink_digest_alias *digest_alias;
- for(digest_alias = digest_aliases; digest_alias->alias_name;
- ++digest_alias) {
- metalink_checksum_t **p;
- for(p = fileinfo->checksums; *p; ++p) {
- if(curl_strequal(digest_alias->alias_name, (*p)->type) &&
- check_hex_digest((*p)->hash, digest_alias->digest_def)) {
- f->checksum =
- checksum_from_hex_digest(digest_alias->digest_def,
- (*p)->hash);
- break;
- }
- }
- if(f->checksum) {
- break;
- }
- }
- }
- if(fileinfo->resources) {
- metalink_resource_t **p;
- struct metalink_resource root, *tail;
- root.next = NULL;
- tail = &root;
- for(p = fileinfo->resources; *p; ++p) {
- struct metalink_resource *res;
- /* Filter by type if it is non-NULL. In Metalink v3, type
- includes the type of the resource. In curl, we are only
- interested in HTTP, HTTPS and FTP. In addition to them,
- Metalink v3 file may contain bittorrent type URL, which
- points to the BitTorrent metainfo file. We ignore it here.
- In Metalink v4, type was deprecated and all
- fileinfo->resources point to the target file. BitTorrent
- metainfo file URL may be appeared in fileinfo->metaurls.
- */
- if(!(*p)->type ||
- curl_strequal((*p)->type, "http") ||
- curl_strequal((*p)->type, "https") ||
- curl_strequal((*p)->type, "ftp") ||
- curl_strequal((*p)->type, "ftps")) {
- res = new_metalink_resource((*p)->url);
- if(res) {
- tail->next = res;
- tail = res;
- }
- else {
- tail = root.next;
-
- /* clean up the linked list */
- while(tail) {
- res = tail->next;
- free(tail->url);
- free(tail);
- tail = res;
- }
- free(f->filename);
- free(f);
- return NULL;
- }
- }
- }
- f->resource = root.next;
- }
- return f;
-}
-
-int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
- const char *metalink_url)
-{
- metalink_error_t r;
- metalink_t* metalink;
- metalink_file_t **files;
- bool warnings = FALSE;
-
- /* metlaink_parse_final deletes outs->metalink_parser */
- r = metalink_parse_final(outs->metalink_parser, NULL, 0, &metalink);
- outs->metalink_parser = NULL;
- if(r) {
- return -1;
- }
- if(!metalink->files) {
- fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
- "(missing or invalid file name)\n",
- metalink_url);
- metalink_delete(metalink);
- return -1;
- }
- for(files = metalink->files; *files; ++files) {
- struct getout *url;
- /* Skip an entry which has no resource. */
- if(!(*files)->resources) {
- fprintf(config->global->errors, "Metalink: parsing (%s) WARNING "
- "(missing or invalid resource)\n",
- metalink_url);
- continue;
- }
- if(config->url_get ||
- ((config->url_get = config->url_list) != NULL)) {
- /* there's a node here, if it already is filled-in continue to
- find an "empty" node */
- while(config->url_get && (config->url_get->flags & GETOUT_URL))
- config->url_get = config->url_get->next;
- }
-
- /* now there might or might not be an available node to fill in! */
-
- if(config->url_get)
- /* existing node */
- url = config->url_get;
- else
- /* there was no free node, create one! */
- url = new_getout(config);
-
- if(url) {
- struct metalinkfile *mlfile = new_metalinkfile(*files);
- if(!mlfile)
- break;
-
- if(!mlfile->checksum) {
- warnings = TRUE;
- fprintf(config->global->errors,
- "Metalink: parsing (%s) WARNING (digest missing)\n",
- metalink_url);
- }
- /* Set name as url */
- GetStr(&url->url, mlfile->filename);
-
- /* set flag metalink here */
- url->flags |= GETOUT_URL | GETOUT_METALINK;
-
- if(config->metalinkfile_list) {
- config->metalinkfile_last->next = mlfile;
- config->metalinkfile_last = mlfile;
- }
- else {
- config->metalinkfile_list = config->metalinkfile_last = mlfile;
- }
- }
- }
- metalink_delete(metalink);
- return (warnings) ? -2 : 0;
-}
-
-size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
- void *userdata)
-{
- struct per_transfer *per = userdata;
- struct OutStruct *outs = &per->outs;
- struct OperationConfig *config = per->config;
- int rv;
-
- /*
- * Once that libcurl has called back tool_write_cb() the returned value
- * is checked against the amount that was intended to be written, if
- * it does not match then it fails with CURLE_WRITE_ERROR. So at this
- * point returning a value different from sz*nmemb indicates failure.
- */
- const size_t failure = (sz && nmemb) ? 0 : 1;
-
- if(!config)
- return failure;
-
- rv = metalink_parse_update(outs->metalink_parser, buffer, sz * nmemb);
- if(rv == 0)
- return sz * nmemb;
- else {
- fprintf(config->global->errors, "Metalink: parsing FAILED\n");
- return failure;
- }
-}
-
-/*
- * Returns nonzero if content_type includes mediatype.
- */
-static int check_content_type(const char *content_type, const char *media_type)
-{
- const char *ptr = content_type;
- size_t media_type_len = strlen(media_type);
- for(; *ptr && (*ptr == ' ' || *ptr == '\t'); ++ptr);
- if(!*ptr) {
- return 0;
- }
- return curl_strnequal(ptr, media_type, media_type_len) &&
- (*(ptr + media_type_len) == '\0' || *(ptr + media_type_len) == ' ' ||
- *(ptr + media_type_len) == '\t' || *(ptr + media_type_len) == ';');
-}
-
-int check_metalink_content_type(const char *content_type)
-{
- return check_content_type(content_type, "application/metalink+xml");
-}
-
-int count_next_metalink_resource(struct metalinkfile *mlfile)
-{
- int count = 0;
- struct metalink_resource *res;
- for(res = mlfile->resource; res; res = res->next, ++count);
- return count;
-}
-
-static void delete_metalink_checksum(struct metalink_checksum *chksum)
-{
- if(!chksum)
- return;
- Curl_safefree(chksum->digest);
- Curl_safefree(chksum);
-}
-
-static void delete_metalink_resource(struct metalink_resource *res)
-{
- if(!res) {
- return;
- }
- Curl_safefree(res->url);
- Curl_safefree(res);
-}
-
-void delete_metalinkfile(struct metalinkfile *mlfile)
-{
- struct metalink_resource *res;
- if(!mlfile) {
- return;
- }
- Curl_safefree(mlfile->filename);
- delete_metalink_checksum(mlfile->checksum);
- for(res = mlfile->resource; res;) {
- struct metalink_resource *next;
- next = res->next;
- delete_metalink_resource(res);
- res = next;
- }
- Curl_safefree(mlfile);
-}
-
-void clean_metalink(struct OperationConfig *config)
-{
- if(config) {
- while(config->metalinkfile_list) {
- struct metalinkfile *mlfile = config->metalinkfile_list;
- config->metalinkfile_list = config->metalinkfile_list->next;
- delete_metalinkfile(mlfile);
- }
- config->metalinkfile_last = 0;
- }
-}
-
-void metalink_cleanup(void)
-{
-#ifdef HAVE_NSS_CONTEXT
- if(nss_context) {
- NSS_ShutdownContext(nss_context);
- nss_context = NULL;
- }
-#endif
-}
-
-#endif /* USE_METALINK */
src/tool_metalink.h+0 -165
@@ -1,165 +0,0 @@
-#ifndef HEADER_CURL_TOOL_METALINK_H
-#define HEADER_CURL_TOOL_METALINK_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, 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.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.
- *
- ***************************************************************************/
-#include "tool_setup.h"
-#include "tool_sdecls.h"
-
-struct GlobalConfig;
-struct OperationConfig;
-
-/* returns 1 for success, 0 otherwise (we use OpenSSL *_Init fncs directly) */
-typedef int (*digest_init_func)(void *context);
-
-typedef void (*digest_update_func)(void *context,
- const unsigned char *data,
- unsigned int len);
-typedef void (*digest_final_func)(unsigned char *result, void *context);
-
-struct digest_params {
- digest_init_func digest_init; /* Initialize context procedure */
- digest_update_func digest_update; /* Update context with data */
- digest_final_func digest_final; /* Get final result procedure */
- unsigned int digest_ctxtsize; /* Context structure size */
- unsigned int digest_resultlen; /* Result length (bytes) */
-};
-
-struct digest_context {
- const struct digest_params *digest_hash; /* Hash function definition */
- void *digest_hashctx; /* Hash function context */
-};
-
-struct metalink_digest_def {
- const char *hash_name;
- const struct digest_params *dparams;
-};
-
-struct metalink_digest_alias {
- const char *alias_name;
- const struct metalink_digest_def *digest_def;
-};
-
-struct metalink_checksum {
- const struct metalink_digest_def *digest_def;
- /* raw digest value, not ascii hex digest */
- unsigned char *digest;
-};
-
-struct metalink_resource {
- struct metalink_resource *next;
- char *url;
-};
-
-struct metalinkfile {
- struct metalinkfile *next;
- char *filename;
- struct metalink_checksum *checksum;
- struct metalink_resource *resource;
-};
-
-#ifdef USE_METALINK
-
-/*
- * curl requires libmetalink 0.1.0 or newer
- */
-#define CURL_REQ_LIBMETALINK_MAJOR 0
-#define CURL_REQ_LIBMETALINK_MINOR 1
-#define CURL_REQ_LIBMETALINK_PATCH 0
-
-#define CURL_REQ_LIBMETALINK_VERS ((CURL_REQ_LIBMETALINK_MAJOR * 10000) + \
- (CURL_REQ_LIBMETALINK_MINOR * 100) + \
- CURL_REQ_LIBMETALINK_PATCH)
-
-extern const struct digest_params MD5_DIGEST_PARAMS[1];
-extern const struct digest_params SHA1_DIGEST_PARAMS[1];
-extern const struct digest_params SHA256_DIGEST_PARAMS[1];
-
-#include <metalink/metalink.h>
-
-/*
- * Counts the resource in the metalinkfile.
- */
-int count_next_metalink_resource(struct metalinkfile *mlfile);
-
-void delete_metalinkfile(struct metalinkfile *mlfile);
-void clean_metalink(struct OperationConfig *config);
-
-/*
- * Performs final parse operation and extracts information from
- * Metalink and creates metalinkfile structs.
- *
- * This function returns 0 if it succeeds without warnings, or one of
- * the following negative error codes:
- *
- * -1: Parsing failed; or no file is found
- * -2: Parsing succeeded with some warnings.
- */
-int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
- const char *metalink_url);
-
-/*
- * Callback function for CURLOPT_WRITEFUNCTION
- */
-size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
- void *userdata);
-
-/*
- * Returns nonzero if content_type includes "application/metalink+xml"
- * media-type. The check is done in case-insensitive manner.
- */
-int check_metalink_content_type(const char *content_type);
-
-/*
- * Check checksum of file denoted by filename.
- *
- * This function returns 1 if the checksum matches or one of the
- * following integers:
- *
- * 0:
- * Checksum didn't match.
- * -1:
- * Could not open file; or could not read data from file.
- * -2:
- * No checksum in Metalink supported, hash algorithm not available, or
- * Metalink does not contain checksum.
- */
-int metalink_check_hash(struct GlobalConfig *config,
- struct metalinkfile *mlfile,
- const char *filename);
-
-/*
- * Release resources allocated at global scope.
- */
-void metalink_cleanup(void);
-
-#else /* USE_METALINK */
-
-#define count_next_metalink_resource(x) 0
-#define delete_metalinkfile(x) (void)x
-#define clean_metalink(x) (void)x
-
-/* metalink_cleanup() takes no arguments */
-#define metalink_cleanup() Curl_nop_stmt
-
-#endif /* USE_METALINK */
-
-#endif /* HEADER_CURL_TOOL_METALINK_H */
src/tool_operate.c+20 -150
@@ -66,7 +66,6 @@
#include "tool_homedir.h"
#include "tool_libinfo.h"
#include "tool_main.h"
-#include "tool_metalink.h"
#include "tool_msgs.h"
#include "tool_operate.h"
#include "tool_operhlp.h"
@@ -413,35 +412,6 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
}
}
-#ifdef USE_METALINK
- if(per->metalink && !per->metalink_next_res)
- fprintf(global->errors, "Metalink: fetching (%s) from (%s) OK\n",
- per->mlfile->filename, per->this_url);
-
- if(!per->metalink && config->use_metalink && result == CURLE_OK) {
- int rv = parse_metalink(config, outs, per->this_url);
- if(!rv) {
- fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
- per->this_url);
- }
- else if(rv == -1)
- fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
- per->this_url);
- }
- else if(per->metalink && result == CURLE_OK && !per->metalink_next_res) {
- int rv;
- (void)fflush(outs->stream);
- rv = metalink_check_hash(global, per->mlfile, outs->filename);
- if(!rv)
- per->metalink_next_res = 1;
- }
-#endif /* USE_METALINK */
-
-#ifdef USE_METALINK
- if(outs->metalink_parser)
- metalink_parser_context_delete(outs->metalink_parser);
-#endif /* USE_METALINK */
-
/* if retry-max-time is non-zero, make sure we haven't exceeded the
time */
if(per->retry_numretries &&
@@ -600,36 +570,6 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
return CURLE_OK;
}
} /* if retry_numretries */
- else if(per->metalink) {
- /* Metalink: Decide to try the next resource or not. Try the next resource
- if download was not successful. */
- long response = 0;
- if(CURLE_OK == result) {
- /* TODO We want to try next resource when download was
- not successful. How to know that? */
- char *effective_url = NULL;
- curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
- if(effective_url &&
- curl_strnequal(effective_url, "http", 4)) {
- /* This was HTTP(S) */
- curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
- if(response != 200 && response != 206) {
- per->metalink_next_res = 1;
- fprintf(global->errors,
- "Metalink: fetching (%s) from (%s) FAILED "
- "(HTTP status code %ld)\n",
- per->mlfile->filename, per->this_url, response);
- }
- }
- }
- else {
- per->metalink_next_res = 1;
- fprintf(global->errors,
- "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
- per->mlfile->filename, per->this_url,
- curl_easy_strerror(result));
- }
- }
if((global->progressmode == CURL_PROGRESS_BAR) &&
per->progressbar.calls)
@@ -715,7 +655,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
{
CURLcode result = CURLE_OK;
struct getout *urlnode;
- struct metalinkfile *mlfile_last = NULL;
bool orig_noprogress = global->noprogress;
bool orig_isatty = global->isatty;
struct State *state = &config->state;
@@ -757,24 +696,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
while(config->state.urlnode) {
char *infiles; /* might be a glob pattern */
struct URLGlob *inglob = state->inglob;
- bool metalink = FALSE; /* metalink download? */
- struct metalinkfile *mlfile;
- struct metalink_resource *mlres;
-
urlnode = config->state.urlnode;
- if(urlnode->flags & GETOUT_METALINK) {
- metalink = 1;
- if(!mlfile_last) {
- mlfile_last = config->metalinkfile_list;
- }
- mlfile = mlfile_last;
- mlfile_last = mlfile_last->next;
- mlres = mlfile->resource;
- }
- else {
- mlfile = NULL;
- mlres = NULL;
- }
/* urlnode->url is the full URL (it might be NULL) */
@@ -836,12 +758,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
}
if(!state->urlnum) {
- if(metalink) {
- /* For Metalink download, we don't use glob. Instead we use
- the number of resources as urlnum. */
- urlnum = count_next_metalink_resource(mlfile);
- }
- else if(!config->globoff) {
+ if(!config->globoff) {
/* Unless explicitly shut off, we expand '{...}' and '[...]'
expressions and return total number of URLs in pattern set */
result = glob_url(&state->urls, urlnode->url, &state->urlnum,
@@ -997,51 +914,33 @@ static CURLcode single_transfer(struct GlobalConfig *global,
}
}
- if(metalink) {
- /* For Metalink download, use name in Metalink file as
- filename. */
- per->outfile = strdup(mlfile->filename);
- if(!per->outfile) {
- result = CURLE_OUT_OF_MEMORY;
+ if(state->urls) {
+ result = glob_next_url(&per->this_url, state->urls);
+ if(result)
break;
- }
- per->this_url = strdup(mlres->url);
+ }
+ else if(!state->li) {
+ per->this_url = strdup(urlnode->url);
if(!per->this_url) {
result = CURLE_OUT_OF_MEMORY;
break;
}
- per->mlfile = mlfile;
}
- else {
- if(state->urls) {
- result = glob_next_url(&per->this_url, state->urls);
- if(result)
- break;
- }
- else if(!state->li) {
- per->this_url = strdup(urlnode->url);
- if(!per->this_url) {
- result = CURLE_OUT_OF_MEMORY;
- break;
- }
- }
- else
- per->this_url = NULL;
- if(!per->this_url)
- break;
+ else
+ per->this_url = NULL;
+ if(!per->this_url)
+ break;
- if(state->outfiles) {
- per->outfile = strdup(state->outfiles);
- if(!per->outfile) {
- result = CURLE_OUT_OF_MEMORY;
- break;
- }
+ if(state->outfiles) {
+ per->outfile = strdup(state->outfiles);
+ if(!per->outfile) {
+ result = CURLE_OUT_OF_MEMORY;
+ break;
}
}
if(((urlnode->flags&GETOUT_USEREMOTE) ||
- (per->outfile && strcmp("-", per->outfile))) &&
- (metalink || !config->use_metalink)) {
+ (per->outfile && strcmp("-", per->outfile)))) {
/*
* We have specified a file name to store the result in, or we have
@@ -1083,7 +982,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
/* Create the directory hierarchy, if not pre-existent to a multiple
file output call */
- if(config->create_dirs || metalink) {
+ if(config->create_dirs) {
result = create_dir_hierarchy(per->outfile, global->errors);
/* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
if(result)
@@ -1275,15 +1174,8 @@ static CURLcode single_transfer(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_WRITEDATA, per);
my_setopt(curl, CURLOPT_INTERLEAVEDATA, per);
- if(metalink || !config->use_metalink)
- /* what call to write */
- my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb);
-#ifdef USE_METALINK
- else
- /* Set Metalink specific write callback function to parse
- XML data progressively. */
- my_setopt(curl, CURLOPT_WRITEFUNCTION, metalink_write_cb);
-#endif /* USE_METALINK */
+ /* what call to write */
+ my_setopt(curl, CURLOPT_WRITEFUNCTION, tool_write_cb);
/* for uploads */
input->config = config;
@@ -2136,23 +2028,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
if(config->hsts)
my_setopt_str(curl, CURLOPT_HSTS, config->hsts);
-#ifdef USE_METALINK
- if(!metalink && config->use_metalink) {
- outs->metalink_parser = metalink_parser_context_new();
- if(!outs->metalink_parser) {
- result = CURLE_OUT_OF_MEMORY;
- break;
- }
- fprintf(global->errors,
- "Metalink: parsing (%s) metalink/XML...\n", per->this_url);
- }
- else if(metalink)
- fprintf(global->errors,
- "Metalink: fetching (%s) from (%s)...\n",
- mlfile->filename, per->this_url);
-#endif /* USE_METALINK */
-
- per->metalink = metalink;
/* initialize retry vars for loop below */
per->retry_sleep_default = (config->retry_delay) ?
config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
@@ -2410,9 +2285,6 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
bailout = TRUE;
}
- /* Release metalink related resources here */
- delete_metalinkfile(per->mlfile);
-
per = del_per_transfer(per);
if(bailout)
@@ -2581,8 +2453,6 @@ static CURLcode run_all_transfers(struct GlobalConfig *global,
/* Free list of given URLs */
clean_getout(per->config);
- /* Release metalink related resources here */
- clean_metalink(per->config);
per = del_per_transfer(per);
}
src/tool_operate.h+1 -5
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al.
+ * Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -36,10 +36,6 @@ struct per_transfer {
long retry_sleep_default;
long retry_sleep;
struct timeval retrystart;
- bool metalink; /* nonzero for metalink download. */
- bool metalink_next_res;
- struct metalinkfile *mlfile;
- struct metalink_resource *mlres;
char *this_url;
unsigned int urlnum; /* the index of the given URL */
char *outfile;
src/tool_operhlp.c+1 -2
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al.
+ * Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -31,7 +31,6 @@
#include "tool_convert.h"
#include "tool_doswin.h"
#include "tool_operhlp.h"
-#include "tool_metalink.h"
#include "memdebug.h" /* keep this as LAST include */
src/tool_sdecls.h+1 -10
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <[email protected]>, et al.
+ * Copyright (C) 1998 - 2021, Daniel Stenberg, <[email protected]>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,9 +22,6 @@
*
***************************************************************************/
#include "tool_setup.h"
-#ifdef USE_METALINK
-# include <metalink/metalink.h>
-#endif /* USE_METALINK */
/*
* OutStruct variables keep track of information relative to curl's
@@ -58,8 +55,6 @@
* 'init' member holds original file size or offset at which truncation is
* taking place. Always zero unless appending to a non-empty regular file.
*
- * 'metalink_parser' member is a pointer to Metalink XML parser
- * context.
*/
struct OutStruct {
@@ -71,9 +66,6 @@ struct OutStruct {
FILE *stream;
curl_off_t bytes;
curl_off_t init;
-#ifdef USE_METALINK
- metalink_parser_context_t *metalink_parser;
-#endif /* USE_METALINK */
};
@@ -113,7 +105,6 @@ struct getout {
#define GETOUT_USEREMOTE (1<<2) /* use remote file name locally */
#define GETOUT_UPLOAD (1<<3) /* if set, -T has been used */
#define GETOUT_NOUPLOAD (1<<4) /* if set, -T "" has been used */
-#define GETOUT_METALINK (1<<5) /* set when Metalink download */
/*
* 'trace' enumeration represents curl's output look'n feel possibilities.
tests/FILEFORMAT.md+0 -1
@@ -388,7 +388,6 @@ Features testable here are:
- `ld_preload`
- `libz`
- `manual`
-- `Metalink`
- `Mime`
- `netrc`
- `NSS`
tests/data/Makefile.inc+3 -3
@@ -215,9 +215,9 @@ test1916 test1917 test1918 \
\
test1933 test1934 test1935 test1936 \
\
-test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
-test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
-test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
+test2000 test2001 test2002 test2003 test2004 \
+\
+ test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
test2032 test2034 test2035 test2036 test2037 test2038 test2039 \
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
tests/data/test2005+0 -91
@@ -1,91 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 37
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, HTTP resource
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="sha256">a430d26389c69b7a245a9ad692cf20b4dc026fb7c2ff8a2c164c49a77130d6d9</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Data delivered from an HTTP resource
-</file1>
-<file2 name="log/stdout%TESTNUMBER">
-</file2>
-<file3 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file3>
-<stripfile3>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile3>
-</verify>
-</testcase>
tests/data/test2006+0 -122
@@ -1,122 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-FILE
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 14:49:01 GMT
-Server: test-server/fake
-Content-Length: 42
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Some data delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-# This relies on the debug feature to allow us to set directory to store the
-# -O output in, using the CURL_TESTDIR variable. This test might use it upon
-# failure only, successful execution won't actually use it.
-<features>
-debug
-file
-Metalink
-</features>
-<server>
-http
-</server>
- <name>
-Metalink local XML file, HTTP resource, using -O -D file
- </name>
-<setenv>
-CURL_TESTDIR=%PWD/log
-</setenv>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink -O -D log/heads%TESTNUMBER
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
- <hash type="sha256">319cb6be756734b7ff689628ca3265580cdae6a0e38f42d4ac612ff4fba143b0</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Some data delivered from an HTTP resource
-</file1>
-
-# The Content-Length replace here is to handle with 4/5 digit port number in
-# the content
-<stripfile2>
-s/Last-Modified:.*//
-s/Content-Length: 49[67]/Content-Length: yeps/
-</stripfile2>
-<file2 name="log/heads%TESTNUMBER">
-Content-Length: yeps
-Accept-ranges: bytes
-
-
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 14:49:01 GMT
-Server: test-server/fake
-Content-Length: 42
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-</file2>
-<file3 name="log/stdout%TESTNUMBER">
-</file3>
-<file4 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file4>
-<stripfile4>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile4>
-</verify>
-</testcase>
tests/data/test2007+0 -122
@@ -1,122 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
--J
-FILE
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 14:50:02 GMT
-Server: test-server/fake
-Content-Length: 42
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Something delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-# This relies on the debug feature to allow us to set directory to store the
-# -O and -J output in, using the CURL_TESTDIR variable. This test might use
-# it upon failure only, successful execution won't actually use it.
-<features>
-debug
-file
-Metalink
-</features>
-<server>
-http
-</server>
- <name>
-Metalink local XML file, HTTP resource, using -O -J -D file
- </name>
-<setenv>
-CURL_TESTDIR=%PWD/log
-</setenv>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink -J -O -D log/heads%TESTNUMBER
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
- <hash type="sha256">52899e30f80e3490632d505653204e1fb5b02bda141048704ce9a0ed00b8a3f5</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Something delivered from an HTTP resource
-</file1>
-# The Content-Length replace here is to handle with 4/5 digit port number in
-# the content
-<stripfile2>
-s/Last-Modified:.*//
-s/Content-Length: 49[67]/Content-Length: yeps/
-</stripfile2>
-<file2 name="log/heads%TESTNUMBER">
-Content-Length: yeps
-Accept-ranges: bytes
-
-
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 14:50:02 GMT
-Server: test-server/fake
-Content-Length: 42
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-</file2>
-<file3 name="log/stdout%TESTNUMBER">
-</file3>
-<file4 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file4>
-<stripfile4>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile4>
-</verify>
-</testcase>
tests/data/test2008+0 -114
@@ -1,114 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-FILE
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 15:23:48 GMT
-Server: test-server/fake
-Content-Length: 43
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Some stuff delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<features>
-file
-Metalink
-</features>
-<server>
-http
-</server>
- <name>
-Metalink local XML file, HTTP resource, using -o fname -D file
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
- <hash type="sha256">711b1b566b536c5baae9b36f2f5c1830a7c8ff126d1afa2febc5b59f8d0aab54</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Some stuff delivered from an HTTP resource
-</file1>
-# The Content-Length replace here is to handle with 4/5 digit port number in
-# the content
-<stripfile2>
-s/Last-Modified:.*//
-s/Content-Length: 49[67]/Content-Length: yeps/
-</stripfile2>
-<file2 name="log/heads%TESTNUMBER">
-Content-Length: yeps
-Accept-ranges: bytes
-
-
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 15:23:48 GMT
-Server: test-server/fake
-Content-Length: 43
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-</file2>
-<file3 name="log/stdout%TESTNUMBER">
-</file3>
-<file4 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file4>
-<stripfile4>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile4>
-</verify>
-</testcase>
tests/data/test2009+0 -115
@@ -1,115 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
--J
-FILE
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 16:27:17 GMT
-Server: test-server/fake
-Content-Length: 46
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Some contents delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<features>
-file
-Metalink
-</features>
-<server>
-http
-</server>
- <name>
-Metalink local XML file, HTTP resource, using -o fname -J -D file
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink -J -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
- <hash type="sha256">e4c5b83384ba7d5f8e201d61747a14f29baacd7dfadce0fbd56661db4bba72b2</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Some contents delivered from an HTTP resource
-</file1>
-# The Content-Length replace here is to handle with 4/5 digit port number in
-# the content
-<stripfile2>
-s/Last-Modified:.*//
-s/Content-Length: 49[67]/Content-Length: yeps/
-</stripfile2>
-<file2 name="log/heads%TESTNUMBER">
-Content-Length: yeps
-Accept-ranges: bytes
-
-
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 16:27:17 GMT
-Server: test-server/fake
-Content-Length: 46
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-</file2>
-<file3 name="log/stdout%TESTNUMBER">
-</file3>
-<file4 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file4>
-<stripfile4>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile4>
-</verify>
-</testcase>
tests/data/test2010+0 -114
@@ -1,114 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-FILE
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 17:37:27 GMT
-Server: test-server/fake
-Content-Length: 41
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Contents delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<features>
-file
-Metalink
-</features>
-<server>
-http
-</server>
- <name>
-Metalink local XML file, HTTP resource, using -o fname -D file
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink -o log/outfile%TESTNUMBER -D log/heads%TESTNUMBER
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="md5">we-only-check-the-strongest-hash-provided</hash>
- <hash type="sha256">19dcb4e2a99b9cd02c30b1ed6c55869b7ef8cda9f985648909c48a6dbb54356c</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/outfile%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Contents delivered from an HTTP resource
-</file1>
-# The Content-Length replace here is to handle with 4/5 digit port number in
-# the content
-<stripfile2>
-s/Last-Modified:.*//
-s/Content-Length: 49[67]/Content-Length: yeps/
-</stripfile2>
-<file2 name="log/heads%TESTNUMBER">
-Content-Length: yeps
-Accept-ranges: bytes
-
-
-HTTP/1.1 200 OK
-Date: Thu, 21 Jun 2012 17:37:27 GMT
-Server: test-server/fake
-Content-Length: 41
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-</file2>
-<file3 name="log/stdout%TESTNUMBER">
-</file3>
-<file4 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] OK
-</file4>
-<stripfile4>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile4>
-</verify>
-</testcase>
tests/data/test2011+0 -91
@@ -1,91 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 37
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, HTTP resource, hash mismatch
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- <hash type="sha256">badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadb</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Data delivered from an HTTP resource
-</file1>
-<file2 name="log/stdout%TESTNUMBER">
-</file2>
-<file3 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) OK
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) [sha-256] FAILED (digest mismatch)
-</file3>
-<stripfile3>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile3>
-</verify>
-</testcase>
tests/data/test2012+0 -90
@@ -1,90 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun %TESTNUMBER 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 46
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Some contents delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, HTTP resource, without hash
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER">
- <verification>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /%TESTNUMBER HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-User-Agent: curl/%VERSION
-Accept: */*
-
-</protocol>
-<file1 name="log/download%TESTNUMBER">
-Some contents delivered from an HTTP resource
-</file1>
-<file2 name="log/stdout%TESTNUMBER">
-</file2>
-<file3 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (digest missing)
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER)...
-Metalink: fetching (log/download%TESTNUMBER) from (http://%HOSTIP:%HTTPPORT/%TESTNUMBER) OK
-Metalink: validating (log/download%TESTNUMBER)...
-Metalink: validating (log/download%TESTNUMBER) FAILED (digest missing)
-</file3>
-<stripfile3>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile3>
-</verify>
-</testcase>
tests/data/test2013+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix absolute path
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="/tmp/download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER /tmp/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2014+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix path relative to current
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="./log/download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2015+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix path relative to upper
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="../tests/log/download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2016+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix path traversal
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/../log/download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2017+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix home path traversal
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="~/download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2018+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix questionable file name I
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/.download%TESTNUMBER">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/.download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2019+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix questionable file name II
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name=".">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2020+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix questionable file name III
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="..">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2021+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix questionable file name IV
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER >/dev/null">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/data/test2022+0 -78
@@ -1,78 +0,0 @@
-<testcase>
-<info>
-<keywords>
-Metalink
-HTTP
-HTTP GET
-</keywords>
-</info>
-
-#
-# Server-side
-<reply>
-<data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Wed, 20 Jun 2012 14:49:00 GMT
-Server: test-server/fake
-Content-Length: 56
-Connection: close
-Content-Type: text/html
-Content-Disposition: filename=name%TESTNUMBER; charset=funny; option=strange
-Funny-head: yesyes
-
-Data that should not be delivered from an HTTP resource
-</data>
-</reply>
-
-#
-# Client-side
-<client>
-<server>
-http
-</server>
-<features>
-file
-Metalink
-</features>
- <name>
-Metalink local XML file, attempt Unix questionable file name V
- </name>
-<command option="no-output,no-include">
---metalink file://%PWD/log/test%TESTNUMBER.metalink
-</command>
-# local metalink file written before test command runs
-<file name="log/test%TESTNUMBER.metalink">
-<?xml version="1.0" encoding="utf-8"?>
-<metalink version="3.0" xmlns="http://www.metalinker.org/">
- <files>
- <file name="log/download%TESTNUMBER |/dev/null">
- <verification>
- <hash type="sha256">c7d03debe90ca29492203ea921d76941fa98640cf3b744f2a16c9b58465eab82</hash>
- </verification>
- <resources maxconnections="1">
- <url type="http" preference="90">http://%HOSTIP:%HTTPPORT/%TESTNUMBER</url>
- </resources>
- </file>
- </files>
-</metalink>
-</file>
-<postcheck>
-perl %SRCDIR/libtest/notexists.pl log/%TESTNUMBER log/name%TESTNUMBER log/download%TESTNUMBER
-</postcheck>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<file1 name="log/stdout%TESTNUMBER">
-</file1>
-<file2 name="log/stderr%TESTNUMBER" mode="text">
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) metalink/XML...
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) WARNING (missing or invalid file name)
-Metalink: parsing (file://%PWD/log/test%TESTNUMBER.metalink) FAILED
-</file2>
-<stripfile2>
-$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
-</stripfile2>
-</verify>
-</testcase>
tests/libtest/test1013.pl+1 -1
@@ -44,7 +44,7 @@ $curl_protocols =~ /\w+: (.*)$/;
@curl = split / /,$1;
# These features are not supported by curl-config
-@curl = grep(!/^(Debug|TrackMemory|Metalink|CharConv)$/i, @curl);
+@curl = grep(!/^(Debug|TrackMemory|CharConv)$/i, @curl);
@curl = sort @curl;
# Read the output of curl-config
tests/runtests.pl+0 -6
@@ -253,7 +253,6 @@ my $has_kerberos; # set if libcurl is built with Kerberos support
my $has_spnego; # set if libcurl is built with SPNEGO support
my $has_charconv; # set if libcurl is built with CharConv support
my $has_tls_srp; # set if libcurl is built with TLS-SRP support
-my $has_metalink; # set if curl is built with Metalink support
my $has_http2; # set if libcurl is built with HTTP2 support
my $has_httpsproxy; # set if libcurl is built with HTTPS-proxy support
my $has_crypto; # set if libcurl is built with cryptographic support
@@ -2852,7 +2851,6 @@ sub setupfeatures {
$feature{"ld_preload"} = ($has_ldpreload && !$debug_build);
$feature{"libz"} = $has_libz;
$feature{"manual"} = $has_manual;
- $feature{"Metalink"} = $has_metalink;
$feature{"MinGW"} = $has_mingw;
$feature{"MultiSSL"} = $has_multissl;
$feature{"NSS"} = $has_nss;
@@ -3103,10 +3101,6 @@ sub checksystem {
# TLS-SRP enabled
$has_tls_srp=1;
}
- if($feat =~ /Metalink/i) {
- # Metalink enabled
- $has_metalink=1;
- }
if($feat =~ /PSL/i) {
# PSL enabled
$has_psl=1;
tests/unit/Makefile.inc+4 -4
@@ -71,9 +71,9 @@ unit1330_SOURCES = unit1330.c $(UNITFILES)
unit1330_CPPFLAGS = $(AM_CPPFLAGS)
unit1394_SOURCES = unit1394.c $(UNITFILES)
-unit1394_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
-unit1394_LDADD = @LIBMETALINK_LIBS@ $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
-unit1394_LDFLAGS = @LIBMETALINK_LDFLAGS@ $(top_builddir)/src/libcurltool.la
+unit1394_CPPFLAGS = $(AM_CPPFLAGS)
+unit1394_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
+unit1394_LDFLAGS = $(top_builddir)/src/libcurltool.la
unit1394_LIBS =
unit1395_SOURCES = unit1395.c $(UNITFILES)
@@ -104,7 +104,7 @@ unit1603_SOURCES = unit1603.c $(UNITFILES)
unit1603_CPPFLAGS = $(AM_CPPFLAGS)
unit1604_SOURCES = unit1604.c $(UNITFILES)
-unit1604_CPPFLAGS = $(AM_CPPFLAGS) $(LIBMETALINK_CPPFLAGS)
+unit1604_CPPFLAGS = $(AM_CPPFLAGS)
unit1605_SOURCES = unit1605.c $(UNITFILES)
unit1605_CPPFLAGS = $(AM_CPPFLAGS)