Unglobbed
Unicode
UNICOS
-unix
UnixSockets
UnixWare
unlink
whitespace
Whitespaces
winbind
-WinBind
winbuild
winidn
WinIDN
WinLDAP
-WinSock
winsock
-WinSSL
winssl
Wireshark
wolfSSH
endif()
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
list(APPEND WPICKY_ENABLE
- -Wno-pedantic-ms-format # gcc 4.5 (mingw-only)
+ -Wno-pedantic-ms-format # gcc 4.5 (MinGW-only)
)
endif()
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
cd $(srcdir)/packages/Solaris && $(MAKE) package
#
-# Build a cygwin binary tarball installation file
+# Build a Cygwin binary tarball installation file
# resulting .tar.bz2 file will end up at packages/Win32/cygwin
cygwinbin:
$(MAKE) -C packages/Win32/cygwin cygwinbin
dnl CURL_CHECK_WIN32_LARGEFILE
dnl -------------------------------------------------
-dnl Check if curl's WIN32 large file will be used
+dnl Check if curl's Win32 large file will be used
AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
- AC_MSG_CHECKING([whether build target supports WIN32 file API])
+ AC_MSG_CHECKING([whether build target supports Win32 file API])
curl_win32_file_api="no"
if test "$curl_cv_native_windows" = "yes"; then
if test x"$enable_largefile" != "xno"; then
#if !defined(_WIN32_WCE) && (defined(__MINGW32__) || defined(_MSC_VER))
int dummy=1;
#else
- WIN32 large file API not supported.
+ Win32 large file API not supported.
#endif
]])
],[
#if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER)
int dummy=1;
#else
- WIN32 small file API not supported.
+ Win32 small file API not supported.
#endif
]])
],[
dnl CURL_CHECK_WIN32_CRYPTO
dnl -------------------------------------------------
-dnl Check if curl's WIN32 crypto lib can be used
+dnl Check if curl's Win32 crypto lib can be used
AC_DEFUN([CURL_CHECK_WIN32_CRYPTO], [
AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
- AC_MSG_CHECKING([whether build target supports WIN32 crypto API])
+ AC_MSG_CHECKING([whether build target supports Win32 crypto API])
curl_win32_crypto_api="no"
if test "$curl_cv_native_windows" = "yes"; then
AC_COMPILE_IFELSE([
if test "$HAVE_GETHOSTBYNAME" != "1"
then
- dnl This is for winsock systems
+ dnl This is for Winsock systems
if test "$curl_cv_native_windows" = "yes"; then
winsock_LIB="-lws2_32"
if test ! -z "$winsock_LIB"; then
esac
if test "$want_winidn" = "yes"; then
- dnl winidn library support has been requested
+ dnl WinIDN library support has been requested
clean_CFLAGS="$CFLAGS"
clean_CPPFLAGS="$CPPFLAGS"
clean_LDFLAGS="$LDFLAGS"
[OPT_IDN=$withval])
if test "x$tst_links_winidn" = "xyes"; then
want_idn="no"
- AC_MSG_RESULT([no (using winidn instead)])
+ AC_MSG_RESULT([no (using WinIDN instead)])
else
case "$OPT_IDN" in
no)
AC_CHECK_TYPE(sa_family_t,
AC_DEFINE(CURL_SA_FAMILY_T, sa_family_t, [IP address type in sockaddr]),
[
- # The windows name?
+ # The Windows name?
AC_CHECK_TYPE(ADDRESS_FAMILY,
AC_DEFINE(CURL_SA_FAMILY_T, ADDRESS_FAMILY, [IP address type in sockaddr]),
AC_DEFINE(CURL_SA_FAMILY_T, unsigned short, [IP address type in sockaddr]),
AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
LIBS="$save_LIBS"
- dnl on HPUX, life is more complicated...
+ dnl on HP-UX, life is more complicated...
case $host in
*-hp-hpux*)
dnl it doesn't actually work without -lpthread
Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for
particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE
-shall be generated by the configure script for unix-like systems and they are
+shall be generated by the configure script for Unix-like systems and they are
hard-coded in the `config-[system].h` files for the others.
We also encourage use of macros/functions that possibly are empty or defined
- Support for systems without 64-bit data types
- NSS
- gskit
- - mingw v1
+ - MinGW v1
- NTLM_WB
- space-separated `NOPROXY` patterns
5.1 Is libcurl thread-safe?
5.2 How can I receive all data into a large memory chunk?
5.3 How do I fetch multiple files with libcurl?
- 5.4 Does libcurl do Winsock initialization on win32 systems?
- 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
+ 5.4 Does libcurl do Winsock initialization on Win32 systems?
+ 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on Win32 ?
5.6 What about Keep-Alive or persistent connections?
5.7 Link errors when building libcurl on Windows
5.8 libcurl.so.X: open failed: No such file or directory
curl can be built to use one of the following SSL alternatives: OpenSSL,
LibreSSL, BoringSSL, AWS-LC, GnuTLS, wolfSSL, mbedTLS, Secure Transport
- (native iOS/OS X), Schannel (native Windows), BearSSL or Rustls. They all
+ (native iOS/macOS), Schannel (native Windows), BearSSL or Rustls. They all
have their pros and cons, and we try to maintain a comparison of them here:
https://curl.se/docs/ssl-compared.html
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
curl adheres to the HTTP spec, which basically means you can play with *any*
- protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and
+ protocol that is built on top of HTTP. Protocols such as SOAP, WebDAV and
XML-RPC are all such ones. You can use -X to set custom requests and -H to
set custom headers (or replace internally generated ones).
curl -d ' with spaces ' example.com
Exactly what kind of quotes and how to do this is entirely up to the shell
- or command line interpreter that you are using. For most unix shells, you
+ or command line interpreter that you are using. For most Unix shells, you
can more or less pick either single (') or double (") quotes. For
Windows/DOS command prompts you must use double (") quotes, and if the
option string contains inner double quotes you can escape them with a
only reusable, but you are even encouraged to reuse it if you can, as that
will enable libcurl to use persistent connections.
- 5.4 Does libcurl do Winsock initialization on win32 systems?
+ 5.4 Does libcurl do Winsock initialization on Win32 systems?
Yes, if told to in the curl_global_init() call.
- 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
+ 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on Win32 ?
Yes, but you cannot open a FILE * and pass the pointer to a DLL and have
that DLL use the FILE * (as the DLL and the client application cannot access
then you have to work with what you are given. The LIST output format is
entirely at the server's own liking and the NLST output does not reveal any
types and in many cases does not even include all the directory entries.
- Also, both LIST and NLST tend to hide unix-style hidden files (those that
+ Also, both LIST and NLST tend to hide Unix-style hidden files (those that
start with a dot) by default so you need to do "LIST -a" or similar to see
them.
- TCP Fast Open
- DNS cache (that can be shared between transfers)
- non-blocking single-threaded parallel transfers
- - unix domain sockets to server or proxy
+ - Unix domain sockets to server or proxy
- DNS-over-HTTPS
- uses non-blocking name resolves
- selectable name resolver backend
under "Project -> Properties -> Configuration Properties -> C/C++ ->
Preprocessor".
-## Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds
+## Using BSD-style lwIP instead of Winsock TCP/IP stack in Windows builds
In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is
necessary to make the definition of the preprocessor symbol `USE_LWIPSOCK`
- `--disable-mime` (MIME API)
- `--disable-netrc` (.netrc file)
- `--disable-ntlm` (NTLM authentication)
- - `--disable-ntlm-wb` (NTLM WinBind)
+ - `--disable-ntlm-wb` (NTLM winbind)
- `--disable-progress-meter` (graphical progress meter in library)
- `--disable-proxy` (HTTP and SOCKS proxies)
- `--disable-pthreads` (multi-threading)
- `--disable-socketpair` (socketpair for asynchronous name resolving)
- `--disable-threaded-resolver` (threaded name resolver)
- `--disable-tls-srp` (Secure Remote Password authentication for TLS)
- - `--disable-unix-sockets` (UNIX sockets)
+ - `--disable-unix-sockets` (Unix sockets)
- `--disable-verbose` (eliminates debugging strings and error code strings)
- `--disable-versioned-symbols` (versioned symbols)
- `--enable-symbol-hiding` (eliminates unneeded symbols in the shared library)
- MIT Kerberos 1.2.4
- Heimdal ?
- nghttp2 1.15.0
- - WinSock 2.2 (on Windows 95+ and Windows CE .NET 4.1+)
+ - Winsock 2.2 (on Windows 95+ and Windows CE .NET 4.1+)
## Build tools
5.2 curl-config --libs contains private details
5.3 building for old macOS fails with gcc
5.5 cannot handle Unicode arguments in non-Unicode builds on Windows
- 5.6 cygwin: make install installs curl-config.1 twice
+ 5.6 Cygwin: make install installs curl-config.1 twice
5.11 configure --with-gssapi with Heimdal is ignored on macOS
5.12 flaky CI builds
5.13 long paths are not fully supported on Windows
5.15 Unicode on Windows
6. Authentication
- 6.1 NTLM authentication and unicode
+ 6.1 NTLM authentication and Unicode
6.2 MIT Kerberos for Windows build
6.3 NTLM in system context uses wrong name
6.5 NTLM does not support password with § character
9.2 wolfssh: publickey auth does not work
9.3 Remote recursive folder creation with SFTP
9.4 libssh blocking and infinite loop problem
- 9.5 cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
+ 9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
10. SOCKS
10.3 FTPS over SOCKS
https://curl.se/bug/?i=731
https://curl.se/bug/?i=3747
-5.6 cygwin: make install installs curl-config.1 twice
+5.6 Cygwin: make install installs curl-config.1 twice
https://github.com/curl/curl/issues/8839
5.15 Unicode on Windows
- Passing in a unicode filename with -o:
+ Passing in a Unicode filename with -o:
https://github.com/curl/curl/issues/11461
- Passing in unicode character with -d:
+ Passing in Unicode character with -d:
https://github.com/curl/curl/issues/12231
6. Authentication
-6.1 NTLM authentication and unicode
+6.1 NTLM authentication and Unicode
- NTLM authentication involving unicode username or password only works
+ NTLM authentication involving Unicode username or password only works
properly if built with UNICODE defined together with the Schannel
backend. The original problem was mentioned in:
https://curl.se/mail/lib-2009-10/0024.html
https://github.com/curl/curl/issues/8632
-9.5 cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
+9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
- Running SCP and SFTP tests on cygwin makes this warning message appear.
+ Running SCP and SFTP tests on Cygwin makes this warning message appear.
https://github.com/curl/curl/issues/11244
----------
If libcurl was built with Schannel or Secure Transport support (the native SSL
-libraries included in Windows and Mac OS X), then this does not apply to
+libraries included in Windows and macOS), then this does not apply to
you. Scroll down for details on how the OS-native engines handle SSL
certificates. If you are not sure, then run "curl -V" and read the results. If
the version string says `Schannel` in it, then it was built with Schannel
peer certificate verification, but instead of using a CA cert bundle, it uses
the certificates that are built into the OS. These are the same certificates
that appear in the Internet Options control panel (under Windows) or Keychain
-Access application (under OS X). Any custom security rules for certificates
+Access application (under macOS). Any custom security rules for certificates
are honored.
Schannel runs CRL checks on certificates unless peer verification is disabled.
Secure Transport on iOS runs OCSP checks on certificates unless peer
-verification is disabled. Secure Transport on OS X runs either OCSP or CRL
+verification is disabled. Secure Transport on macOS runs either OCSP or CRL
checks on certificates if those features are enabled, and this behavior can be
adjusted in the preferences of Keychain Access.
18.6 Option to make -Z merge lined based outputs on stdout
18.7 specify which response codes that make -f/--fail return error
18.9 Choose the name of file in braces for complex URLs
- 18.10 improve how curl works in a windows console window
+ 18.10 improve how curl works in a Windows console window
18.11 Windows: set attribute 'archive' for completed downloads
18.12 keep running, read instructions from pipe/socket
18.13 Acknowledge Ratelimit headers
1.1 TFO support on Windows
libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and
- Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
+ macOS. Windows supports TCP Fast Open starting with Windows 10, version 1607
and we should add support for it.
TCP Fast Open is supported on several platforms but not on Windows. Work on
Make sure we do not ever loop because of non-blocking sockets returning
EWOULDBLOCK or similar. Blocking cases include:
- - Name resolves on non-windows unless c-ares or the threaded resolver is used.
+ - Name resolves on non-Windows unless c-ares or the threaded resolver is used.
- The threaded resolver may block on cleanup:
https://github.com/curl/curl/issues/4852
10.4 Certificate-Based Authentication
- LDAPS not possible with MAC and Windows with Certificate-Based Authentication
+ LDAPS not possible with macOS and Windows with Certificate-Based Authentication
https://github.com/curl/curl/issues/9641
See https://github.com/curl/curl/issues/221
-18.10 improve how curl works in a windows console window
+18.10 improve how curl works in a Windows console window
If you pull the scrollbar when transferring with curl in a Windows console
window, the transfer is interrupted and can get disconnected. This can
20.4 more platforms supported
- Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
+ Make the test suite work on more platforms. OpenBSD and macOS. Remove
fork()s and it should become even more portable.
20.6 Use the RFC 6265 test suite
slightly, perhaps most famously in how they deal with the German "double s"
(`ß`).
-When winidn is used, curl uses IDNA 2003 Transitional Processing, like the rest
+When WinIDN is used, curl uses IDNA 2003 Transitional Processing, like the rest
of Windows.
## Port number
files can become rather large. Works with the ngtcp2 and quiche QUIC backends.
## `SHELL`
-Used on VMS when trying to detect if using a **DCL** or a **unix** shell.
+Used on VMS when trying to detect if using a **DCL** or a **Unix** shell.
## `SSL_CERT_DIR` <dir>
If set, it is used as the --capath value. This environment variable is ignored
and the TLS backend is not Schannel, and uses the given path as a path to a CA
cert bundle. This option overrides that variable.
-The windows version of curl automatically looks for a CA certs file named
+The Windows version of curl automatically looks for a CA certs file named
'curl-ca-bundle.crt', either in the same directory as curl.exe, or in the
Current Working Directory, or in any folder along your PATH.
--output-dir. If the combined output filename uses no directory, or if the
directories it mentions already exist, no directories are created.
-Created directories are made with mode 0750 on unix style file systems.
+Created directories are made with mode 0750 on Unix-style file systems.
To create remote directories when using FTP or SFTP, try --ftp-create-dirs.
message, thus saving a round trip when performing a full handshake.
This functionality is currently only implemented in the Secure Transport (on
-iOS 7.0 or later, or OS X 10.9 or later) backend.
+iOS 7.0 or later, or macOS 10.9 or later) backend.
assumed at port 1080. Using this socket type make curl resolve the hostname
and passing the address on to the proxy.
-To specify proxy on a unix domain socket, use localhost for host, e.g.
+To specify proxy on a Unix domain socket, use localhost for host, e.g.
`socks4://localhost/path/to/socket.sock`
This option overrides any previous use of --proxy, as they are mutually
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080. This asks the proxy to resolve the hostname.
-To specify proxy on a unix domain socket, use localhost for host, e.g.
+To specify proxy on a Unix domain socket, use localhost for host, e.g.
`socks4a://localhost/path/to/socket.sock`
This option overrides any previous use of --proxy, as they are mutually
Use the specified SOCKS5 proxy (and let the proxy resolve the hostname). If
the port number is not specified, it is assumed at port 1080.
-To specify proxy on a unix domain socket, use localhost for host, e.g.
+To specify proxy on a Unix domain socket, use localhost for host, e.g.
`socks5h://localhost/path/to/socket.sock`
This option overrides any previous use of --proxy, as they are mutually
Use the specified SOCKS5 proxy - but resolve the hostname locally. If the
port number is not specified, it is assumed at port 1080.
-To specify proxy on a unix domain socket, use localhost for host, e.g.
+To specify proxy on a Unix domain socket, use localhost for host, e.g.
`socks5://localhost/path/to/socket.sock`
This option overrides any previous use of --proxy, as they are mutually
Enable ASCII transfer mode. For FTP, this can also be enforced by using a URL
that ends with `;type=A`. This option causes data sent to stdout to be in text
-mode for win32 systems.
+mode for Win32 systems.
fp = fopen(file, "rb");
fstat(FILENO(fp), &file_info);
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
*
* Written by Jeff Pohlmeyer, converted to use epoll by Josh Bialkowski
-Requires a linux system with epoll
+Requires a Linux system with epoll
When running, the program creates the named pipe "hiper.fifo"
FILE *respfile;
/* local filename to store the file as */
- ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */
+ ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on Windows */
/* local filename to store the FTP server's response lines in */
- respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */
+ respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on Windows */
curl = curl_easy_init();
if(curl) {
/* Get a file listing from sunet */
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
- /* If you intend to use this on windows with a libcurl DLL, you must use
+ /* If you intend to use this on Windows with a libcurl DLL, you must use
CURLOPT_WRITEFUNCTION as well */
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile);
/* get a FILE * of the same file */
hd_src = fopen(LOCAL_FILE, "rb");
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
upload.readptr = data;
upload.sizeleft = strlen(data);
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
res = curl_global_init(CURL_GLOBAL_DEFAULT);
/* Check for errors */
if(res != CURLE_OK) {
CURL *curl;
CURLcode res;
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
#include <sys/stat.h>
#include <errno.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#ifndef _MSC_VER
#include <sys/time.h>
#include <unistd.h>
url = argv[1];
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
an example! */
hd_src = fopen(file, "rb");
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
curl_global_init(CURL_GLOBAL_ALL);
/* get a curl handle */
#include <stdio.h>
#include <string.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#ifndef _WIN32
#include <sys/time.h>
#include <unistd.h>
wt.readptr = data;
wt.sizeleft = strlen(data);
- /* In windows, this inits the winsock stuff */
+ /* In Windows, this inits the Winsock stuff */
res = curl_global_init(CURL_GLOBAL_DEFAULT);
/* Check for errors */
if(res != CURLE_OK) {
*
***************************************************************************/
/* <DESC>
- * Access HTTP server over unix domain socket
+ * Access HTTP server over Unix domain socket
* </DESC>
*/
#include <stdio.h>
curl_getenv() is a portable wrapper for the getenv() function, meant to
emulate its behavior and provide an identical interface for all operating
-systems libcurl builds on (including win32).
+systems libcurl builds on (including Windows).
You must curl_free(3) the returned string when you are done with it.
# NOTE
-Under unix operating systems, there is no point in returning an allocated
+Under Unix operating systems, there is no point in returning an allocated
memory, although other systems does not work properly if this is not done. The
-unix implementation thus suffers slightly from the drawbacks of other systems.
+Unix implementation thus suffers slightly from the drawbacks of other systems.
Initialize the Win32 socket libraries.
The implication here is that if this bit is not set, the initialization of
-winsock has to be done by the application or you risk getting undefined
+Winsock has to be done by the application or you risk getting undefined
behaviors. This option exists for when the initialization is handled outside
of libcurl so there is no need for libcurl to do it again.
## CURL_TIME
-Fake unix timestamp to use for AltSvc, HSTS and CURLINFO variables that are
+Fake Unix timestamp to use for AltSvc, HSTS and CURLINFO variables that are
time related.
This variable can also be used to fake the data returned by some CURLINFO
## CURL_GLOBAL_WIN32
which only does anything on Windows machines. When used on a Windows machine,
-it makes libcurl initialize the win32 socket stuff. Without having that
+it makes libcurl initialize the Win32 socket stuff. Without having that
initialized properly, your program cannot use sockets properly. You should
only do this once for each application, so if your program already does this
or of another library in use does it, you should not tell libcurl to do this
(CURLOPT_WRITEDATA(3) was formerly known as *CURLOPT_FILE*. Both names still
work and do the same thing).
-If you are using libcurl as a win32 DLL, you MUST use the
+If you are using libcurl as a Windows DLL, you MUST use the
CURLOPT_WRITEFUNCTION(3) if you set CURLOPT_WRITEDATA(3) - or experience
crashes.
# LINKING WITH LIBCURL
-On unix-like machines, there is a tool named curl-config that gets installed
+On Unix-like machines, there is a tool named curl-config that gets installed
with the rest of the curl stuff when 'make install' is performed.
curl-config is added to make it easier for applications to link with libcurl
connection phase.
This option may cause libcurl to use the SIGALRM signal to timeout system
-calls on builds not using asynch DNS. In unix-like systems, this might cause
+calls on builds not using asynch DNS. In Unix-like systems, this might cause
signals to be used unless CURLOPT_NOSIGNAL(3) is set.
# DEFAULT
the connection phase.
This option may cause libcurl to use the SIGALRM signal to timeout system
-calls on builds not using asynch DNS. In unix-like systems, this might cause
+calls on builds not using asynch DNS. In Unix-like systems, this might cause
signals to be used unless CURLOPT_NOSIGNAL(3) is set.
# DEFAULT
If neither of those options are set, *pointer* must be a valid FILE * and
it is used by a plain fwrite() to write headers to.
-If you are using libcurl as a win32 DLL, you **MUST** use a
+If you are using libcurl as a Windows DLL, you **MUST** use a
CURLOPT_WRITEFUNCTION(3) or CURLOPT_HEADERFUNCTION(3) if you set
this option or you might experience crashes.
If *onoff* is 1, libcurl uses no functions that install signal handlers or
any functions that cause signals to be sent to the process. This option is
-here to allow multi-threaded unix applications to still set/use all timeout
+here to allow multi-threaded Unix applications to still set/use all timeout
options etc, without risking getting signals.
If this option is set and libcurl has been built with the standard name
Supported formats are "PEM" and "DER", except with Secure Transport or
Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
-later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+later, or macOS 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
files.
The application does not have to keep the string around after setting this
default format is "PEM" and can be changed with
CURLOPT_PROXY_SSLKEYTYPE(3).
-(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+(Windows, iOS and macOS) This option is ignored by Secure Transport and
Schannel SSL backends because they expect the private key to be already
present in the key chain or PKCS#12 file containing the certificate.
Supported formats are "PEM" and "DER", except with Secure Transport or
Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
-later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+later, or macOS 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
files.
The application does not have to keep the string around after setting this
the filename of your private key. The default format is "PEM" and can be
changed with CURLOPT_SSLKEYTYPE(3).
-(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+(Windows, iOS and macOS) This option is ignored by Secure Transport and
Schannel SSL backends because they expect the private key to be already present
in the key-chain or PKCS#12 file containing the certificate.
to 2, the operation can never last longer than 2 seconds.
This option may cause libcurl to use the SIGALRM signal to timeout system
-calls on builds not using asynch DNS. In unix-like systems, this might cause
+calls on builds not using asynch DNS. In Unix-like systems, this might cause
signals to be used unless CURLOPT_NOSIGNAL(3) is set.
# DEFAULT
# DESCRIPTION
A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
-instead of the default binary transfer. For win32 systems it does not set the
+instead of the default binary transfer. For Win32 systems it does not set the
stdout to binary mode. This option can be usable when transferring text data
between systems with different views on certain characters, such as newlines
or similar.
If libcurl is built with IDN support, the server name part of the URL can use
an "international name" by using the current encoding (according to locale) or
-UTF-8 (when winidn is used; or a Windows Unicode build using libidn2).
+UTF-8 (when WinIDN is used; or a Windows Unicode build using libidn2).
If libcurl is built without IDN support, the server name is used exactly as
specified when passed to the name resolver functions.
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
-/* The check above prevents the winsock2 inclusion if winsock.h already was
+/* The check above prevents the winsock2.h inclusion if winsock.h already was
included, since they cannot co-exist without problems */
#include <winsock2.h>
#include <ws2tcpip.h>
}
#ifdef SO_NOSIGPIPE
-/* The preferred method on Mac OS X (10.2 and later) to prevent SIGPIPEs when
+/* The preferred method on macOS (10.2 and later) to prevent SIGPIPEs when
sending data to a dead peer (instead of relying on the 4th argument to send
being MSG_NOSIGNAL). Possibly also existing and in use on other BSD
systems? */
sockfd, SOCKERRNO);
}
#elif defined(TCP_KEEPALIVE)
- /* Mac OS X style */
+ /* macOS style */
optval = curlx_sltosi(data->set.tcp_keepidle);
KEEPALIVE_FACTOR(optval);
if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE,
else {
/*
* provided dev was no interface (or interfaces are not supported
- * e.g. solaris) no ip address and no domain we fail here
+ * e.g. Solaris) no ip address and no domain we fail here
*/
done = -1;
}
if(0 != getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (void *)&err, &errSize))
err = SOCKERRNO;
#ifdef _WIN32_WCE
- /* Old WinCE versions do not support SO_ERROR */
+ /* Old Windows CE versions do not support SO_ERROR */
if(WSAENOPROTOOPT == err) {
SET_SOCKERRNO(0);
err = 0;
/* =================================================================== */
/* Hand crafted config file for Mac OS 9 */
/* =================================================================== */
-/* On Mac OS X you must run configure to generate curl_config.h file */
+/* On macOS you must run configure to generate curl_config.h file */
/* =================================================================== */
#ifndef OS
***************************************************************************/
/* ================================================================ */
-/* lib/config-win32ce.h - Hand crafted config file for windows ce */
+/* lib/config-win32ce.h - Hand crafted config file for Windows CE */
/* ================================================================ */
/* ---------------------------------------------------------------- */
#define PACKAGE "curl"
/* ---------------------------------------------------------------- */
-/* WinCE */
+/* Windows CE */
/* ---------------------------------------------------------------- */
#ifndef UNICODE
#if defined(HAVE_GETADDRINFO) && defined(USE_RESOLVE_ON_IPS)
/*
- * Work-arounds the sin6_port is always zero bug on iOS 9.3.2 and Mac OS X
+ * Work-arounds the sin6_port is always zero bug on iOS 9.3.2 and macOS
* 10.11.5.
*/
void Curl_addrinfo_set_port(struct Curl_addrinfo *addrinfo, int port)
/* Define if you want to enable POSIX threaded DNS lookup */
#cmakedefine USE_THREADS_POSIX 1
-/* Define if you want to enable WIN32 threaded DNS lookup */
+/* Define if you want to enable Win32 threaded DNS lookup */
#cmakedefine USE_THREADS_WIN32 1
/* if GnuTLS is enabled */
/* default pattern matching function
* =================================
* Implemented with recursive backtracking, if you want to use Curl_fnmatch,
- * please note that there is not implemented UTF/UNICODE support.
+ * please note that there is not implemented UTF/Unicode support.
*
* Implemented features:
* '?' notation, does not match UTF characters
* Macros curlx_convert_UTF8_to_tchar(), curlx_convert_tchar_to_UTF8()
* and curlx_unicodefree() main purpose is to minimize the number of
* preprocessor conditional directives needed by code using these
- * to differentiate UNICODE from non-UNICODE builds.
+ * to differentiate Unicode from non-Unicode builds.
*
- * In the case of a non-UNICODE build the tchar strings are char strings that
+ * In the case of a non-Unicode build the tchar strings are char strings that
* are duplicated via strdup and remain in whatever the passed in encoding is,
* which is assumed to be UTF-8 but may be other encoding. Therefore the
- * significance of the conversion functions is primarily for UNICODE builds.
+ * significance of the conversion functions is primarily for Unicode builds.
*
* Allocated memory should be free'd with curlx_unicodefree().
*
/*
* Curl_ntlm_core_mk_ntlmv2_resp()
*
- * This creates the NTLMv2 response as set in the ntlm type-3 message.
+ * This creates the NTLMv2 response as set in the NTLM type-3 message.
*
* Parameters:
*
- * ntlmv2hash [in] - The ntlmv2 hash (16 bytes)
+ * ntlmv2hash [in] - The NTLMv2 hash (16 bytes)
* challenge_client [in] - The client nonce (8 bytes)
- * ntlm [in] - The ntlm data struct being used to read TargetInfo
+ * ntlm [in] - The NTLM data struct being used to read TargetInfo
and Server challenge received in the type-2 message
* ntresp [out] - The address where a pointer to newly allocated
* memory holding the NTLMv2 response.
/*
* Curl_ntlm_core_mk_lmv2_resp()
*
- * This creates the LMv2 response as used in the ntlm type-3 message.
+ * This creates the LMv2 response as used in the NTLM type-3 message.
*
* Parameters:
*
- * ntlmv2hash [in] - The ntlmv2 hash (16 bytes)
+ * ntlmv2hash [in] - The NTLMv2 hash (16 bytes)
* challenge_client [in] - The client nonce (8 bytes)
* challenge_client [in] - The server challenge (8 bytes)
* lmresp [out] - The LMv2 response (24 bytes)
if(result)
return result;
- /* Concatenate the HMAC MD5 output with the client nonce */
+ /* Concatenate the HMAC MD5 output with the client nonce */
memcpy(lmresp, hmac_output, 16);
memcpy(lmresp + 16, challenge_client, 8);
/* curl uses its own printf() function internally. It understands the GNU
* format. Use this format, so that is matches the GNU format attribute we
- * use with the mingw compiler, allowing it to verify them at compile-time.
+ * use with the MinGW compiler, allowing it to verify them at compile-time.
*/
#ifdef __MINGW32__
# undef CURL_FORMAT_CURL_OFF_T
#endif
/*
- * Large file (>2Gb) support using WIN32 functions.
+ * Large file (>2Gb) support using Win32 functions.
*/
#ifdef USE_WIN32_LARGE_FILES
#endif
/*
- * Small file (<2Gb) support using WIN32 functions.
+ * Small file (<2Gb) support using Win32 functions.
*/
#ifdef USE_WIN32_SMALL_FILES
#if defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)
# if defined(SOCKET) || defined(USE_WINSOCK)
-# error "WinSock and lwIP TCP/IP stack definitions shall not coexist!"
+# error "Winsock and lwIP TCP/IP stack definitions shall not coexist!"
# endif
#endif
#define FOPEN_WRITETEXT "wt"
#define FOPEN_APPENDTEXT "at"
#elif defined(__CYGWIN__)
-/* Cygwin has specific behavior we need to address when WIN32 is not defined.
+/* Cygwin has specific behavior we need to address when _WIN32 is not defined.
https://cygwin.com/cygwin-ug-net/using-textbinary.html
For write we want our output to have line endings of LF and be compatible with
other Cygwin utilities. For read we want to handle input that may have line
#define HTTPS_RR_CODE_IPV6 0x06
/*
- * These may need escaping when found within an alpn string
+ * These may need escaping when found within an ALPN string
* value.
*/
#define COMMA_CHAR ','
* A leading slash in an AmigaDOS path denotes the parent
* directory, and hence we block this as it is relative.
* Absolute paths start with 'volumename:', so we check for
- * this first. Failing that, we treat the path as a real unix
+ * this first. Failing that, we treat the path as a real Unix
* path, but only if the application was compiled with -lunix.
*/
fd = -1;
keep_copysig = TRUE; /* yes, we have a copy */
sigact.sa_handler = alarmfunc;
#ifdef SA_RESTART
- /* HPUX does not have SA_RESTART but defaults to that behavior! */
+ /* HP-UX does not have SA_RESTART but defaults to that behavior! */
sigact.sa_flags &= ~SA_RESTART;
#endif
/* now set the new struct */
size_t refcount;
/* hostname port number that resolved to addr. */
int hostport;
- /* hostname that resolved to addr. may be NULL (unix domain sockets). */
+ /* hostname that resolved to addr. may be NULL (Unix domain sockets). */
char hostname[1];
};
* detect which one this platform supports in the configure script and set up
* the HAVE_GETHOSTBYNAME_R_3, HAVE_GETHOSTBYNAME_R_5 or
* HAVE_GETHOSTBYNAME_R_6 defines accordingly. Note that HAVE_GETADDRBYNAME
- * has the corresponding rules. This is primarily on *nix. Note that some unix
+ * has the corresponding rules. This is primarily on *nix. Note that some Unix
* flavours have thread-safe versions of the plain gethostbyname() etc.
*
*/
if(!h) /* failure */
#elif defined(HAVE_GETHOSTBYNAME_R_3)
- /* AIX, Digital Unix/Tru64, HPUX 10, more? */
+ /* AIX, Digital UNIX/Tru64, HP-UX 10, more? */
/* For AIX 4.3 or later, we do not use gethostbyname_r() at all, because of
* the plain fact that it does not return unique full buffers on each
#ifndef USE_RESOLVE_ON_IPS
/*
* The AI_NUMERICHOST must not be set to get synthesized IPv6 address from
- * an IPv4 address on iOS and Mac OS X.
+ * an IPv4 address on iOS and macOS.
*/
if((1 == Curl_inet_pton(AF_INET, hostname, addrbuf)) ||
(1 == Curl_inet_pton(AF_INET6, hostname, addrbuf))) {
}
/*
- * This is for creating ntlm header output
+ * This is for creating NTLM header output
*/
CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
{
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM)
-/* this is for ntlm header input */
+/* this is for NTLM header input */
CURLcode Curl_input_ntlm(struct Curl_easy *data, bool proxy,
const char *header);
-/* this is for creating ntlm header output */
+/* this is for creating NTLM header output */
CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy);
void Curl_http_auth_cleanup_ntlm(struct connectdata *conn);
* Returns NULL on error and errno set with the specific
* error, EAFNOSUPPORT or ENOSPC.
*
- * On Windows we store the error in the thread errno, not in the winsock error
- * code. This is to avoid losing the actual last winsock error. When this
+ * On Windows we store the error in the thread errno, not in the Winsock error
+ * code. This is to avoid losing the actual last Winsock error. When this
* function returns NULL, check errno not SOCKERRNO.
*/
char *Curl_inet_ntop(int af, const void *src, char *buf, size_t size)
* -1 if some other error occurred (`dst' is untouched in this case, too)
* notice:
* On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid losing the
- * actual last winsock error. When this function returns
+ * in the Winsock error code. This is to avoid losing the
+ * actual last Winsock error. When this function returns
* -1, check errno not SOCKERRNO.
* author:
* Paul Vixie, 1996.
#endif
#if defined(USE_WIN32_LDAP) && defined(ldap_err2string)
-/* Use ansi error strings in UNICODE builds */
+/* Use ANSI error strings in Unicode builds */
#undef ldap_err2string
#define ldap_err2string ldap_err2stringA
#endif
#endif
int pollrc;
#ifdef USE_WINSOCK
- if(cpfds.n) /* just pre-check with WinSock */
+ if(cpfds.n) /* just pre-check with Winsock */
pollrc = Curl_poll(cpfds.pfds, cpfds.n, 0);
else
pollrc = 0;
WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, (DWORD)timeout_ms,
FALSE);
}
- /* With WinSock, we have to run the following section unconditionally
+ /* With Winsock, we have to run the following section unconditionally
to call WSAEventSelect(fd, event, 0) on all the sockets */
{
#endif
curl_multi_timer_callback timer_cb;
void *timer_userp;
struct curltime timer_lastcall; /* the fixed time for the timeout for the
- previous callback */
+ previous callback */
#ifdef USE_WINSOCK
- WSAEVENT wsa_event; /* winsock event used for waits */
+ WSAEVENT wsa_event; /* Winsock event used for waits */
#else
#ifdef ENABLE_WAKEUP
curl_socket_t wakeup_pair[2]; /* eventfd()/pipe()/socketpair() used for
int nonblock /* TRUE or FALSE */)
{
#if defined(HAVE_FCNTL_O_NONBLOCK)
- /* most recent unix versions */
+ /* most recent Unix versions */
int flags;
flags = sfcntl(sockfd, F_GETFL, 0);
if(flags < 0)
#elif defined(HAVE_IOCTL_FIONBIO)
- /* older unix versions */
+ /* older Unix versions */
int flags = nonblock ? 1 : 0;
return ioctl(sockfd, FIONBIO, &flags);
* Internal function used for waiting a specific amount of ms
* in Curl_socket_check() and Curl_poll() when no file descriptor
* is provided to wait on, just being used to delay execution.
- * WinSock select() and poll() timeout mechanisms need a valid
+ * Winsock select() and poll() timeout mechanisms need a valid
* socket descriptor in a not null file descriptor set to work.
* Waiting indefinitely with this function is not allowed, a
* zero or negative timeout value will return immediately.
struct timeval *ptimeout;
#ifdef USE_WINSOCK
- /* WinSock select() cannot handle zero events. See the comment below. */
+ /* Winsock select() cannot handle zero events. See the comment below. */
if((!fds_read || fds_read->fd_count == 0) &&
(!fds_write || fds_write->fd_count == 0) &&
(!fds_err || fds_err->fd_count == 0)) {
ptimeout = curlx_mstotv(&pending_tv, timeout_ms);
#ifdef USE_WINSOCK
- /* WinSock select() must not be called with an fd_set that contains zero
+ /* Winsock select() must not be called with an fd_set that contains zero
fd flags, or it will return WSAEINVAL. But, it also cannot be called
with no fd_sets at all! From the documentation:
given as null. At least one must be non-null, and any non-null
descriptor set must contain at least one handle to a socket.
- It is unclear why WinSock does not just handle this for us instead of
- calling this an error. Luckily, with WinSock, we can _also_ ask how
+ It is unclear why Winsock does not just handle this for us instead of
+ calling this an error. Luckily, with Winsock, we can _also_ ask how
many bits are set on an fd_set. So, let's just check it beforehand.
*/
return select((int)maxfd + 1,
}
/*
- Note also that WinSock ignores the first argument, so we do not worry
- about the fact that maxfd is computed incorrectly with WinSock (since
+ Note also that Winsock ignores the first argument, so we do not worry
+ about the fact that maxfd is computed incorrectly with Winsock (since
curl_socket_t is unsigned in such cases and thus -1 is the largest
value).
*/
*/
#ifdef USE_SSL
if(Curl_ssl_supports(data, SSLSUPP_CA_PATH))
- /* This does not work on windows. */
+ /* This does not work on Windows. */
result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH],
va_arg(param, char *));
else
*/
#ifdef USE_SSL
if(Curl_ssl_supports(data, SSLSUPP_CA_PATH))
- /* This does not work on windows. */
+ /* This does not work on Windows. */
result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_PROXY],
va_arg(param, char *));
else
#endif
/*
- * Include header files for windows builds before redefining anything.
+ * Include header files for Windows builds before redefining anything.
* Use this preprocessor block only to include or exclude windows.h,
- * winsock2.h or ws2tcpip.h. Any other windows thing belongs
+ * winsock2.h or ws2tcpip.h. Any other Windows thing belongs
* to any other further and independent block. Under Cygwin things work
- * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
+ * just as under Linux (e.g. <sys/socket.h>) and the Winsock headers should
* never be included when __CYGWIN__ is defined.
*/
/*
* Convert a timestamp from the Windows world (100 nsec units from 1 Jan 1601)
- * to Posix time. Cap the output to fit within a time_t.
+ * to POSIX time. Cap the output to fit within a time_t.
*/
static void get_posix_time(time_t *out, curl_off_t timestamp)
{
#elif !defined(HAVE_SOCKETPAIR)
#define SOCKETPAIR_FAMILY 0 /* not used */
#else
-#error "unsupported unix domain and socketpair build combo"
+#error "unsupported Unix domain and socketpair build combo"
#endif
#ifdef SOCK_CLOEXEC
GETADDRINFOEXCANCEL_FN Curl_GetAddrInfoExCancel = NULL;
GETADDRINFOEXW_FN Curl_GetAddrInfoExW = NULL;
-/* Curl_win32_init() performs win32 global initialization */
+/* Curl_win32_init() performs Win32 global initialization */
CURLcode Curl_win32_init(long flags)
{
#ifdef USE_WINSOCK
HMODULE ws2_32Dll;
#endif
/* CURL_GLOBAL_WIN32 controls the *optional* part of the initialization which
- is just for Winsock at the moment. Any required win32 initialization
+ is just for Winsock at the moment. Any required Win32 initialization
should take place after this block. */
if(flags & CURL_GLOBAL_WIN32) {
#ifdef USE_WINSOCK
#ifdef USE_WINSOCK
/* We want to wait for both stdin and the socket. Since
- ** the select() function in winsock only works on sockets
+ ** the select() function in Winsock only works on sockets
** we have to use the WaitForMultipleObjects() call.
*/
return CURLE_FAILED_INIT;
}
- /* Tell winsock what events we want to listen to */
+ /* Tell Winsock what events we want to listen to */
if(WSAEventSelect(sockfd, event_handle, FD_READ|FD_CLOSE) == SOCKET_ERROR) {
WSACloseEvent(event_handle);
return CURLE_OK;
struct curltime Curl_now(void)
{
/*
- ** Monotonic timer on Mac OS is provided by mach_absolute_time(), which
+ ** Monotonic timer on macOS is provided by mach_absolute_time(), which
** returns time in Mach "absolute time units," which are platform-dependent.
** To convert to nanoseconds, one must use conversion factors specified by
** mach_timebase_info().
return result;
}
-/* create_conn helper to parse and init proxy values. to be called after unix
+/* create_conn helper to parse and init proxy values. to be called after Unix
socket init but before any proxy vars are evaluated. */
static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
struct connectdata *conn)
Curl_safefree(no_proxy);
#ifdef USE_UNIX_SOCKETS
- /* For the time being do not mix proxy and unix domain sockets. See #1274 */
+ /* For the time being do not mix proxy and Unix domain sockets. See #1274 */
if(proxy && conn->unix_domain_socket) {
free(proxy);
proxy = NULL;
}
#endif
- /* After the unix socket init but before the proxy vars are used, parse and
+ /* After the Unix socket init but before the proxy vars are used, parse and
initialize the proxy vars */
#ifndef CURL_DISABLE_PROXY
result = create_conn_helper_init_proxy(data, conn);
#include "curl_memory.h"
#include "memdebug.h"
- /* MSDOS/Windows style drive prefix, eg c: in c:foo */
+ /* MS-DOS/Windows style drive prefix, eg c: in c:foo */
#define STARTS_WITH_DRIVE_PREFIX(str) \
((('a' <= str[0] && str[0] <= 'z') || \
('A' <= str[0] && str[0] <= 'Z')) && \
(str[1] == ':'))
- /* MSDOS/Windows style drive prefix, optionally with
+ /* MS-DOS/Windows style drive prefix, optionally with
* a '|' instead of ':', followed by a slash or NUL */
#define STARTS_WITH_URL_DRIVE_PREFIX(str) \
((('a' <= (str)[0] && (str)[0] <= 'z') || \
* This catches both "file:/c:" and "file:c:" */
if(('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) ||
STARTS_WITH_URL_DRIVE_PREFIX(path)) {
- /* File drive letters are only accepted in MSDOS/Windows */
+ /* File drive letters are only accepted in MS-DOS/Windows */
result = CURLUE_BAD_FILE_URL;
goto fail;
}
};
struct ssl_primary_config {
- char *CApath; /* certificate dir (does not work on windows) */
+ char *CApath; /* certificate dir (does not work on Windows) */
char *CAfile; /* certificate to verify peer against */
char *issuercert; /* optional issuer certificate filename */
char *clientcert;
unsigned int flags;
unsigned char nonce[8];
unsigned int target_info_len;
- void *target_info; /* TargetInfo received in the ntlm type-2 message */
+ void *target_info; /* TargetInfo received in the NTLM type-2 message */
#endif
};
#endif
STRING_KEY, /* private key filename */
STRING_KEY_PASSWD, /* plain text private key password */
STRING_KEY_TYPE, /* format for private key (default: PEM) */
- STRING_SSL_CAPATH, /* CA directory name (does not work on windows) */
+ STRING_SSL_CAPATH, /* CA directory name (does not work on Windows) */
STRING_SSL_CAFILE, /* certificate file to verify peer against */
STRING_SSL_PINNEDPUBLICKEY, /* public key file to verify peer against */
STRING_SSL_CIPHER_LIST, /* list of ciphers to use */
STRING_KEY_PROXY, /* private key filename */
STRING_KEY_PASSWD_PROXY, /* plain text private key password */
STRING_KEY_TYPE_PROXY, /* format for private key (default: PEM) */
- STRING_SSL_CAPATH_PROXY, /* CA directory name (does not work on windows) */
+ STRING_SSL_CAPATH_PROXY, /* CA directory name (does not work on Windows) */
STRING_SSL_CAFILE_PROXY, /* certificate file to verify peer against */
STRING_SSL_PINNEDPUBLICKEY_PROXY, /* public key file to verify proxy */
STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
/*
* curlx_verify_windows_version()
*
- * This is used to verify if we are running on a specific windows version.
+ * This is used to verify if we are running on a specific Windows version.
*
* Parameters:
*
PLATFORM_WINNT
} PlatformIdentifier;
-/* This is used to verify if we are running on a specific windows version */
+/* This is used to verify if we are running on a specific Windows version */
bool curlx_verify_windows_version(const unsigned int majorVersion,
const unsigned int minorVersion,
const unsigned int buildVersion,
*
***************************************************************************/
-/* WIP, experimental: use recvmmsg() on linux
+/* WIP, experimental: use recvmmsg() on Linux
* we have no configure check, yet
* and also it is only available for _GNU_SOURCE, which
* we do not use otherwise.
const struct connectdata *conn)
{
if(conn->transport == TRNSPRT_UNIX) {
- /* cannot do QUIC over a unix domain socket */
+ /* cannot do QUIC over a Unix domain socket */
return CURLE_QUIC_CONNECT_ERROR;
}
if(!(conn->handler->flags & PROTOPT_SSL)) {
}
#if SIZEOF_TIME_T > SIZEOF_LONG
if(date > 0xffffffff) {
- /* if 'long' cannot old >32bit, this date cannot be sent */
+ /* if 'long' cannot old >32-bit, this date cannot be sent */
failf(data, "date overflow");
fail = TRUE;
}
#ifdef HAS_ALPN
/* ALPN is only supported on Windows 8.1 / Server 2012 R2 and above.
- Also it does not seem to be supported for Wine, see curl bug #983. */
+ Also it does not seem to be supported for WINE, see curl bug #983. */
backend->use_alpn = connssl->alpn &&
!GetProcAddress(GetModuleHandle(TEXT("ntdll")),
"wine_get_version") &&
* do it following a more manual process. */
backend->use_manual_cred_validation = true;
#else
-#error "compiler too old to support requisite manual cert verify for Win CE"
+#error "compiler too old to support Windows CE requisite manual cert verify"
#endif
#else
#ifdef HAS_MANUAL_VERIFY_API
https://msdn.microsoft.com/en-us/library/windows/desktop/aa375924.aspx
At the moment we do not pass inbuf unless we are using ALPN since we only
- use it for that, and Wine (for which we currently disable ALPN) is giving
+ use it for that, and WINE (for which we currently disable ALPN) is giving
us problems with inbuf regardless. https://github.com/curl/curl/issues/983
*/
sspi_status = s_pSecFn->InitializeSecurityContext(
/* Search the substring needle,needlelen into string haystack,haystacklen
* Strings do not need to be terminated by a '\0'.
- * Similar of OSX/Linux memmem (not available on Visual Studio).
+ * Similar of macOS/Linux memmem (not available on Visual Studio).
* Return position of beginning of first occurrence or NULL if not found
*/
static const char *c_memmem(const void *haystack, size_t haystacklen,
#define SECTRANSP_PINNEDPUBKEY_V1 1
#endif
-/* version 2 supports MacOSX 10.7+ */
+/* version 2 supports macOS 10.7+ */
#if (!TARGET_OS_IPHONE && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070)
#define SECTRANSP_PINNEDPUBKEY_V2 1
#endif
cPassword, kCFStringEncodingUTF8) : NULL;
CFDataRef pkcs_data = NULL;
- /* We can import P12 files on iOS or OS X 10.7 or later: */
+ /* We can import P12 files on iOS or macOS 10.7 or later: */
/* These constants are documented as having first appeared in 10.6 but they
raise linker errors when used on that cat for some reason. */
#if CURL_BUILD_MAC_10_7 || CURL_BUILD_IOS
/* There is a known bug in early versions of Mountain Lion where ST's ECC
ciphers (cipher suite 0xC001 through 0xC032) simply do not work.
Work around the problem here by disabling those ciphers if we are
- running in an affected version of OS X. */
+ running in an affected version of macOS. */
if(maj == 12 && min <= 3) {
size_t i = 0, j = 0;
for(; i < *len; i++) {
#
INTEL_UNIX_C)
#
- dnl On unix this compiler uses gcc's header files, so
+ dnl On Unix this compiler uses gcc's header files, so
dnl we select ANSI C89 dialect plus GNU extensions.
tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
dnl Change some warnings into errors
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sometimes-uninitialized])
case $host_os in
cygwin* | mingw*)
- dnl skip missing-variable-declarations warnings for cygwin and
- dnl mingw because the libtool wrapper executable causes them
+ dnl skip missing-variable-declarations warnings for Cygwin and
+ dnl MinGW because the libtool wrapper executable causes them
;;
*)
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-variable-declarations])
#
dnl Only gcc 4.5 or later
if test "$compiler_num" -ge "405"; then
- dnl Only windows targets
+ dnl Only Windows targets
if test "$curl_cv_native_windows" = "yes"; then
tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format"
fi
AC_MSG_CHECKING([if getaddrinfo is threadsafe])
case $host_os in
aix[[1234]].* | aix5.[[01]].*)
- dnl aix 5.1 and older
+ dnl AIX 5.1 and older
tst_tsafe_getaddrinfo="no"
;;
aix*)
- dnl aix 5.2 and newer
+ dnl AIX 5.2 and newer
tst_tsafe_getaddrinfo="yes"
;;
darwin[[12345]].*)
- dnl darwin 5.0 and mac os x 10.1.X and older
+ dnl Darwin 5.0 and macOS 10.1.X and older
tst_tsafe_getaddrinfo="no"
;;
darwin*)
- dnl darwin 6.0 and mac os x 10.2.X and newer
+ dnl Darwin 6.0 and macOS 10.2.X and newer
tst_tsafe_getaddrinfo="yes"
;;
freebsd[[1234]].* | freebsd5.[[1234]]*)
- dnl freebsd 5.4 and older
+ dnl FreeBSD 5.4 and older
tst_tsafe_getaddrinfo="no"
;;
freebsd*)
- dnl freebsd 5.5 and newer
+ dnl FreeBSD 5.5 and newer
tst_tsafe_getaddrinfo="yes"
;;
hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
- dnl hpux 11.10 and older
+ dnl HP-UX 11.10 and older
tst_tsafe_getaddrinfo="no"
;;
hpux*)
- dnl hpux 11.11 and newer
+ dnl HP-UX 11.11 and newer
tst_tsafe_getaddrinfo="yes"
;;
midnightbsd*)
tst_tsafe_getaddrinfo="yes"
;;
netbsd[[123]].*)
- dnl netbsd 3.X and older
+ dnl NetBSD 3.X and older
tst_tsafe_getaddrinfo="no"
;;
netbsd*)
- dnl netbsd 4.X and newer
+ dnl NetBSD 4.X and newer
tst_tsafe_getaddrinfo="yes"
;;
*bsd*)
- dnl All other bsd's
+ dnl All other BSD's
tst_tsafe_getaddrinfo="no"
;;
solaris2*)
- dnl solaris which have it
+ dnl Solaris which have it
tst_tsafe_getaddrinfo="yes"
;;
esac
CLEANCPPFLAGS="$CPPFLAGS"
CLEANLIBS="$LIBS"
- dnl This is for Msys/Mingw
+ dnl This is for MSYS/MinGW
case $host in
*-*-msys* | *-*-mingw*)
AC_MSG_CHECKING([for gdi32])
maximum compatibility.
These are the configure options that were used to build wolfSSL v5.1.1 in
-mingw and generate the options in this file:
+MinGW and generate the options in this file:
C_EXTRA_FLAGS="\
-Wno-attributes \
-->
<ForcedIncludeFiles>$(SolutionDir)\wolfssl\options.h;%(ForcedIncludeFiles);</ForcedIncludeFiles>
<!--
- Do not use the Unicode character set since their mingw config doesn't.
+ Do not use the Unicode character set since their MinGW config does not.
Do not use their IDE\WIN\user_settings.h since we have wolfssl_options.h.
-->
<UndefinePreprocessorDefinitions>_UNICODE;UNICODE;WOLFSSL_USER_SETTINGS;CYASSL_USER_SETTINGS;%(UndefinePreprocessorDefinitions);</UndefinePreprocessorDefinitions>
$creates=`git diff-tree --diff-filter=D -r --summary origin/$branch $start 2>/dev/null| wc -l`;
# Time since that tag
-$tagged=`git for-each-ref --format="%(refname:short) | %(taggerdate:unix)" refs/tags/* | grep ^$start | cut "-d|" -f2`; # unix timestamp
+$tagged=`git for-each-ref --format="%(refname:short) | %(taggerdate:unix)" refs/tags/* | grep ^$start | cut "-d|" -f2`; # Unix timestamp
$taggednice=`git for-each-ref --format="%(refname:short) | %(creatordate)" refs/tags/* | grep ^$start | cut '-d|' -f2`; # human readable time
chomp $taggednice;
$now=`date +%s`;
#if(SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
/* The offset check following here is only interesting if curl_off_t is
- larger than off_t and we are not using the WIN32 large file support
- macros that provide the support to do 64bit seeks correctly */
+ larger than off_t and we are not using the Win32 large file support
+ macros that provide the support to do 64-bit seeks correctly */
if(offset > OUR_MAX_SEEK_O) {
/* Some precaution code to work around problems with different data sizes
- to allow seeking >32bit even if off_t is 32bit. Should be very rare and
- is really valid on weirdo-systems. */
+ to allow seeking >32-bit even if off_t is 32-bit. Should be very rare
+ and is really valid on weirdo-systems. */
curl_off_t left = offset;
if(whence != SEEK_SET)
#ifdef _WIN32
fhnd = _get_osfhandle(fileno(outs->stream));
- /* if windows console then UTF-8 must be converted to UTF-16 */
+ /* if Windows console then UTF-8 must be converted to UTF-16 */
if(isatty(fileno(outs->stream)) &&
GetConsoleScreenBufferInfo((HANDLE)fhnd, &console_info)) {
wchar_t *wc_buf;
*/
/*
-Extra sanitization MSDOS for file_name.
+Extra sanitization MS-DOS for file_name.
This is a supporting function for sanitize_file_name.
-Warning: This is an MSDOS legacy function and was purposely written in a way
+Warning: This is an MS-DOS legacy function and was purposely written in a way
that some path information may pass through. For example drive letter names
(C:, D:, etc) are allowed to pass through. For sanitizing a filename use
sanitize_file_name.
This is a supporting function for sanitize_file_name.
-Warning: This is an MSDOS legacy function and was purposely written in a way
+Warning: This is an MS-DOS legacy function and was purposely written in a way
that some path information may pass through. For example drive letter names
(C:, D:, etc) are allowed to pass through. For sanitizing a filename use
sanitize_file_name.
}
/* This is the legacy portion from rename_if_dos_device_name that checks for
- reserved device names. It only works on MSDOS. On Windows XP the stat
+ reserved device names. It only works on MS-DOS. On Windows XP the stat
check errors with EINVAL if the device name is reserved. On Windows
Vista/7/8 it sets mode S_IFREG (regular file or device). According to
MSDN stat doc the latter behavior is correct, but that does not help us
/*
* Function to find CACert bundle on a Win32 platform using SearchPath.
* (SearchPath is already declared via inclusions done in setup header file)
- * (Use the ASCII version instead of the unicode one!)
+ * (Use the ASCII version instead of the Unicode one!)
* The order of the directories it searches is:
* 1. application's directory
* 2. current working directory
{
int rc = 1;
-/* Windows stat() may attempt to adjust the unix GMT file time by a daylight
+/* Windows stat() may attempt to adjust the Unix GMT file time by a daylight
saving time offset and since it is GMT that is bad behavior. When we have
access to a 64-bit type we can bypass stat and get the times directly. */
#if defined(_WIN32) && !defined(CURL_WINDOWS_APP)
struct GlobalConfig *global)
{
if(filetime >= 0) {
-/* Windows utime() may attempt to adjust the unix GMT file time by a daylight
+/* Windows utime() may attempt to adjust the Unix GMT file time by a daylight
saving time offset and since it is GMT that is bad behavior. When we have
access to a 64-bit type we can bypass utime and set the times directly. */
#if defined(_WIN32) && !defined(CURL_WINDOWS_APP)
HANDLE hfile;
TCHAR *tchar_filename = curlx_convert_UTF8_to_tchar((char *)filename);
- /* 910670515199 is the maximum unix filetime that can be used as a
+ /* 910670515199 is the maximum Unix filetime that can be used as a
Windows FILETIME without overflow: 30827-12-31T23:59:59. */
if(filetime > CURL_OFF_T_C(910670515199)) {
warnf(global, "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
*
* 1. Iterate over the environment variables in order, and if set, check for
* the given file to be accessed there, then it is a match.
- * 2. Non-windows: try getpwuid
+ * 2. Non-Windows: try getpwuid
*/
char *findfile(const char *fname, int dotscore)
{
}
break;
case ':':
- /* Since we live in a world of weirdness and confusion, the win32
+ /* Since we live in a world of weirdness and confusion, the Windows
dudes can use : when using drive letters and thus c:\file:password
needs to work. In order not to break compatibility, we still use : as
separator, but we try to detect when it is used for a filename! On
- windows. */
+ Windows. */
#ifdef _WIN32
if((param_place == &cert_parameter[1]) &&
(cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
nextarg);
}
else if(!strncmp("\xe2\x80\x9c", nextarg, 3)) {
- warnf(global, "The argument '%s' starts with a unicode quote where "
+ warnf(global, "The argument '%s' starts with a Unicode quote where "
"maybe an ASCII \" was intended?",
nextarg);
}
return CURLE_FAILED_INIT;
}
- /* On WIN32 we cannot set the path to curl-ca-bundle.crt at compile time. We
- * look for the file in two ways:
+ /* On Windows we cannot set the path to curl-ca-bundle.crt at compile time.
+ * We look for the file in two ways:
* 1: look at the environment variable CURL_CA_BUNDLE for a path
- * 2: if #1 is not found, use the windows API function SearchPath()
+ * 2: if #1 is not found, use the Windows API function SearchPath()
* to find it along the app's path (includes app's dir and CWD)
*
* We support the environment variable thing for non-Windows platforms
{
int vms_code;
- /* The Posix exit mode is only available after VMS 7.0 */
+ /* The POSIX exit mode is only available after VMS 7.0 */
#if __CRTL_VER >= 70000000
if(is_vms_shell() == 0) {
decc$__posix_exit(code);
GitHub Actions runs the following tests:
-- Mac OS tests with a variety of different compilation options
+- macOS tests with a variety of different compilation options
- Fuzz tests ([see the curl-fuzzer repo for more
info](https://github.com/curl/curl-fuzzer)).
- Curl compiled using the Rust TLS backend with Hyper
- `%NOLISTENPORT` - Port number where no service is listening
- `%POP36PORT` - IPv6 port number of the POP3 server
- `%POP3PORT` - Port number of the POP3 server
-- `%POSIX_PWD` - Current directory somewhat mingw friendly
+- `%POSIX_PWD` - Current directory somewhat MinGW friendly
- `%PROXYPORT` - Port number of the HTTP proxy
- `%PWD` - Current directory
- `%RTSP6PORT` - IPv6 port number of the RTSP server
## Requires to run
- - perl (and a unix-style shell)
- - python (and a unix-style shell, for SMB and TELNET tests)
+ - perl (and a Unix-style shell)
+ - python (and a Unix-style shell, for SMB and TELNET tests)
- python-impacket (for SMB tests)
- diff (when a test fails, a diff is shown)
- stunnel (for HTTPS and FTPS tests)
# fnmatch differences are just too common to make testing them sensible
1307
1316
-# test 1510 causes problems on the CI on github
+# test 1510 causes problems on the CI on GitHub
# example: https://travis-ci.org/curl/curl/builds/81633600
1510
1512
-# test 1801 causes problems on Mac OS X and github
+# test 1801 causes problems on macOS and GitHub
# https://github.com/curl/curl/issues/380
1801
# test 2086 causes issues on Windows only
</command>
<file name="%LOGDIR/upload%TESTNUMBER">
file
-with unix newlines
+with Unix newlines
meant to be
converted
with
</protocol>
<upload>
file\r
-with unix newlines\r
+with Unix newlines\r
meant to be\r
converted\r
with\r
socks5unix
</server>
<name>
-HTTP GET via SOCKS5 proxy via unix sockets
+HTTP GET via SOCKS5 proxy via Unix sockets
</name>
<command>
--socks5 localhost%SOCKSUNIXPATH http://%HOSTIP:%HTTPPORT/%TESTNUMBER
socks5unix
</server>
<name>
-HTTP GET with host name using SOCKS5h via unix sockets
+HTTP GET with host name using SOCKS5h via Unix sockets
</name>
<command>
http://this.is.a.host.name:%HTTPPORT/%TESTNUMBER --proxy socks5h://localhost%SOCKSUNIXPATH
socks5unix
</server>
<name>
-HTTPS GET with host name using SOCKS5h via unix sockets
+HTTPS GET with host name using SOCKS5h via Unix sockets
</name>
<command>
https://this.is.a.host.name:%HTTPSPORT/%TESTNUMBER -k --proxy socks5h://localhost%SOCKSUNIXPATH
unittest
</features>
<name>
-Test WIN32/MSDOS filename sanitization
+Test Windows/MS-DOS filename sanitization
</name>
</client>
</testcase>
http
</server>
<name>
-HTTP Negotiate authentication (stub ntlm)
+HTTP Negotiate authentication (stub NTLM)
</name>
<features>
GSS-API
file
</server>
<name>
-file:// with unix path resolution behavior for the case of extra slashes
+file:// with Unix path resolution behavior for the case of extra slashes
</name>
<command option="no-include">
file:////%PWD/%LOGDIR/test%TESTNUMBER.txt
</command>
<precheck>
-perl -e "print 'Test requires a unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'msys');"
+perl -e "print 'Test requires a Unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'msys');"
</precheck>
<file name="%LOGDIR/test%TESTNUMBER.txt">
foo
http
</server>
<name>
-JSON encoding of unicode string
+JSON encoding of Unicode string
</name>
<file name="%LOGDIR/junk" nonewline="yes">
%hex[%e2%80%9c]hex%
<strippart>
s/^(.* 00044d5154540402003c000c6375726c).*/$1/
</strippart>
-# on windows the disconnect is never seen - no idea why
+# on Windows the disconnect is never seen - no idea why
<strip>
^server DISCONNECT 0 e000
</strip>
<strippart>
s/^(.* 00044d5154540402003c000c6375726c).*/$1/
</strippart>
-# on windows the disconnect is never seen - no idea why
+# on Windows the disconnect is never seen - no idea why
<strip>
^server DISCONNECT 0 e000
</strip>
http
</server>
<name>
-warn about unicode quote character
+warn about Unicode quote character
</name>
<command>
-H “host: %HOSTIP:%HTTPPORT/” -s
# Verify data after the test has been "shot"
<verify>
<stderr>
-%hex[Warning: The argument '%e2%80%9chost:' starts with a unicode quote where maybe an ]hex%
+%hex[Warning: The argument '%e2%80%9chost:' starts with a Unicode quote where maybe an ]hex%
Warning: ASCII " was intended?
</stderr>
</verify>
http
</server>
<name>
-warn about unicode quote character read from config file
+warn about Unicode quote character read from config file
</name>
<file name="%LOGDIR/input%TESTNUMBER">
-H “host:fake”
# Verify data after the test has been "shot"
<verify>
<stderr mode="text">
-%hex[Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a unicode quote where ]hex%
+%hex[Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode quote where ]hex%
Warning: maybe an ASCII " was intended?
</stderr>
</verify>
email
headers and body
-with unix newlines
+with Unix newlines
meant to be
converted
with
\r
email\r
headers and body\r
-with unix newlines\r
+with Unix newlines\r
meant to be\r
converted\r
with\r
# use this, open->print->close system only to make the file
# open as little as possible, to make the test suite run
- # better on windows/cygwin
+ # better on Windows/Cygwin
}
#**********************************************************************
# NOTE: this no longer strips off carriage returns from the arrays. Is that
# really necessary? It ruins the testing of newlines. I believe it was once
- # added to enable tests on win32.
+ # added to enable tests on Windows.
if($first ne $second) {
return 1;
my ($filename, $arrayref)=@_;
open(my $temp, ">", "$filename") || die "Failure writing file";
- binmode($temp,":raw"); # cygwin fix by Kevin Roth
+ binmode($temp,":raw"); # Cygwin fix by Kevin Roth
for(@$arrayref) {
print $temp $_;
}
#include <stdlib.h>
#include <string.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
-/* somewhat unix-specific */
+/* somewhat Unix-specific */
#include <sys/time.h>
#include <unistd.h>
yield faker
faker.stop()
- # download http: via unix socket
+ # download http: via Unix socket
def test_11_01_unix_connect_http(self, env: Env, httpd, uds_faker, repeat):
curl = CurlClient(env=env)
url = f'http://{env.domain1}:{env.http_port}/data.json'
])
r.check_response(count=1, http_status=200)
- # download https: via unix socket
+ # download https: via Unix socket
@pytest.mark.skipif(condition=not Env.have_ssl_curl(), reason=f"curl without SSL")
def test_11_02_unix_connect_http(self, env: Env, httpd, uds_faker, repeat):
curl = CurlClient(env=env)
])
r.check_response(exitcode=35, http_status=None)
- # download HTTP/3 via unix socket
+ # download HTTP/3 via Unix socket
@pytest.mark.skipif(condition=not Env.have_h3(), reason='h3 not supported')
def test_11_03_unix_connect_quic(self, env: Env, httpd, uds_faker, repeat):
curl = CurlClient(env=env)
###########################################################################
# This Perl package helps with path transforming when running curl tests on
-# Win32 platform with Msys or Cygwin.
+# Windows platform with MSYS or Cygwin.
# Three main functions 'sys_native_abs_path', 'sys_native_path' and
# 'build_sys_abs_path' autodetect format of given pathnames. Following formats
# are supported:
# (1) /some/path - absolute path in Unix-style
-# (2) D:/some/path - absolute path in Win32-style
+# (2) D:/some/path - absolute path in Windows-style
# (3) some/path - relative path
-# (4) D:some/path - path relative to current directory on Win32 drive (paths
-# like 'D:' are treated as 'D:./') (*)
-# (5) \some/path - path from root directory on current Win32 drive (*)
+# (4) D:some/path - path relative to current directory on Windows drive
+# (paths like 'D:' are treated as 'D:./') (*)
+# (5) \some/path - path from root directory on current Windows drive (*)
# All forward '/' and back '\' slashes are treated identically except leading
# slash in forms (1) and (5).
# Forward slashes are simpler processed in Perl, do not require extra escaping
-# for shell (unlike back slashes) and accepted by Win32 native programs, so
+# for shell (unlike back slashes) and accepted by Windows native programs, so
# all functions return paths with only forward slashes except
# 'sys_native_path' which returns paths with first forward slash for form (5).
# All returned paths don't contain any duplicated slashes, only single slashes
# so all functions can be unconditionally used on all platforms.
#
# (*) CAUTION! Forms (4) and (5) are not recommended to use as they can be
-# interpreted incorrectly in Perl and Msys/Cygwin environment have low
-# control on Win32 current drive and Win32 current path on specific drive.
+# interpreted incorrectly in Perl and MSYS/Cygwin environment have low
+# control on Windows current drive and Windows current path on specific
+# drive.
package pathhelp;
# Cached static variable, Perl 5.0-compatible.
my $cygdrive_present;
- # Returns boolean true if Win32 drives mounted with '/cygdrive/' prefix.
+ # Returns boolean true if Windows drives mounted with '/cygdrive/' prefix.
sub drives_mounted_on_cygdrive {
return $cygdrive_present if defined $cygdrive_present;
$cygdrive_present = ((-e '/cygdrive/') && (-d '/cygdrive/')) ? 1 : 0;
}
}
-my $use_cygpath; # Only for Win32:
+my $use_cygpath; # Only for Windows:
# undef - autodetect
# 0 - do not use cygpath
# 1 - use cygpath
sub normalize_path;
#######################################################################
-# Returns current working directory in Win32 format on Windows.
+# Returns current working directory in Windows format on Windows.
#
sub sys_native_current_path {
return Cwd::getcwd() if !os_is_win();
my $cur_dir;
if($^O eq 'msys') {
- # MSys shell has built-in command.
+ # MSYS shell has built-in command.
chomp($cur_dir = `bash -c 'pwd -W'`);
if($? != 0) {
- warn "Can't determine Win32 current directory.\n";
+ warn "Can't determine Windows current directory.\n";
return undef;
}
# Add final slash if required.
# Do not use 'cygpath' - it falsely succeed on paths like '/cygdrive'.
$cur_dir = `cmd "/c;" echo %__CD__%`;
if($? != 0 || substr($cur_dir, 0, 1) eq '%') {
- warn "Can't determine Win32 current directory.\n";
+ warn "Can't determine Windows current directory.\n";
return undef;
}
# Remove both '\r' and '\n'.
}
#######################################################################
-# Returns Win32 current drive letter with colon.
+# Returns Windows current drive letter with colon.
#
sub get_win32_current_drive {
- # Notice parameter "/c;" - it's required to turn off Msys's
+ # Notice parameter "/c;" - it's required to turn off MSYS's
# transformation of '/c' and compatible with Cygwin.
my $drive_letter = `cmd "/c;" echo %__CD__:~0,2%`;
if($? != 0 || substr($drive_letter, 1, 1) ne ':') {
- warn "Can't determine current Win32 drive letter.\n";
+ warn "Can't determine current Windows drive letter.\n";
return undef;
}
return substr($drive_letter, 0, 2);
}
-# Internal function. Converts path by using Msys's built-in transformation.
+# Internal function. Converts path by using MSYS's built-in transformation.
# Returned path may contain duplicated and back slashes.
sub do_msys_transform;
# Internal function. Gets two parameters: first parameter must be single
# drive letter ('c'), second optional parameter is path relative to drive's
-# current working directory. Returns Win32 absolute normalized path.
+# current working directory. Returns Windows absolute normalized path.
sub get_abs_path_on_win32_drive;
-# Internal function. Tries to find or guess Win32 version of given
+# Internal function. Tries to find or guess Windows version of given
# absolute Unix-style path. Other types of paths are not supported.
# Returned paths contain only single forward slashes (no back and
# duplicated slashes).
sub do_dumb_guessed_transform;
#######################################################################
-# Converts given path to system native format, i.e. to Win32 format on
+# Converts given path to system native format, i.e. to Windows format on
# Windows platform. Relative paths converted to relative, absolute
# paths converted to absolute.
#
return $path;
}
elsif($path =~ m{^\\} || $path =~ m{^[a-zA-Z]:[^/\\]}) {
- # Path is a directory or filename on Win32 current drive or relative
- # path on current directory on specific Win32 drive.
+ # Path is a directory or filename on Windows current drive or relative
+ # path on current directory on specific Windows drive.
# ('\path' or 'D:path')
- # First type of paths is not processed by Msys transformation and
+ # First type of paths is not processed by MSYS transformation and
# resolved to absolute path by 'cygpath'.
- # Second type is not processed by Msys transformation and may be
+ # Second type is not processed by MSYS transformation and may be
# incorrectly processed by 'cygpath' (for paths like 'D:..\../.\')
my $first_char = ucfirst(substr($path, 0, 1));
$path =~ s{[\\/]+}{/}g;
# Convert leading slash back to forward slash to indicate
- # directory on Win32 current drive or capitalize drive letter.
+ # directory on Windows current drive or capitalize drive letter.
substr($path, 0, 1, $first_char);
return $path;
}
my $has_final_slash = ($path =~ m{[/\\]$});
- # Use 'cygpath', '-m' means Win32 path with forward slashes.
+ # Use 'cygpath', '-m' means Windows path with forward slashes.
chomp($path = `cygpath -m '$path'`);
if ($? != 0) {
warn "Can't convert path by \"cygpath\".\n";
return $path;
}
elsif($^O eq 'msys') {
- # Msys transforms automatically path to Windows native form in staring
- # program parameters if program is not Msys-based.
+ # MSYS transforms automatically path to Windows native form in staring
+ # program parameters if program is not MSYS-based.
$path = do_msys_transform($path);
return undef if !defined $path;
- # Capitalize drive letter for Win32 paths.
+ # Capitalize drive letter for Windows paths.
$path =~ s{^([a-z]:)}{\u$1};
# Replace any back and duplicated slashes with single forward slashes.
return $path;
}
elsif($path =~ s{^([a-zA-Z]):[/\\]}{\u$1:/}) {
- # Path is already in Win32 form. ('C:\path')
+ # Path is already in Windows form. ('C:\path')
# Replace any back and duplicated slashes with single forward slashes.
$path =~ s{[\\/]+}{/}g;
return $path;
}
- # OS is Windows, but not Msys, path is absolute, path is not in Win32
+ # OS is Windows, but not MSYS, path is absolute, path is not in Windows
# form and 'cygpath' is not available.
return do_dumb_guessed_transform($path);
}
#######################################################################
-# Converts given path to system native absolute path, i.e. to Win32
+# Converts given path to system native absolute path, i.e. to Windows
# absolute format on Windows platform. Both relative and absolute
# formats are supported for input.
#
}
if($path =~ m{^([a-zA-Z]):($|[^/\\].*$)}) {
- # Path is single drive with colon or relative path on Win32 drive.
+ # Path is single drive with colon or relative path on Windows drive.
# ('C:' or 'C:path')
# This kind of relative path is not processed correctly by 'cygpath'.
# Get specified drive letter
$path =~ s{^([\\/])[\\/]+}{$1}g;
print "Inter result: \"$path\"\n";
- # Use 'cygpath', '-m' means Win32 path with forward slashes,
+ # Use 'cygpath', '-m' means Windows path with forward slashes,
# '-a' means absolute path
chomp($path = `cygpath -m -a '$path'`);
if($? != 0) {
return $path
}
elsif($path =~ s{^([a-zA-Z]):[/\\]}{\u$1:/}) {
- # Path is already in Win32 form. ('C:\path')
+ # Path is already in Windows form. ('C:\path')
# Replace any possible back slashes with forward slashes,
# remove any duplicated slashes, resolve relative dirs.
return normalize_path($path);
}
elsif(substr($path, 0, 1) eq '\\' ) {
- # Path is directory or filename on Win32 current drive. ('\Windows')
+ # Path is directory or filename on Windows current drive. ('\Windows')
my $w32drive = get_win32_current_drive();
return undef if !defined $w32drive;
if(substr($path, 0, 1) ne '/') {
# Path is in relative form. Resolve relative directories in Unix form
- # *BEFORE* converting to Win32 form otherwise paths like
+ # *BEFORE* converting to Windows form otherwise paths like
# '../../../cygdrive/c/windows' will not be resolved.
my $cur_dir;
- # MSys shell has built-in command.
+ # MSYS shell has built-in command.
if($^O eq 'msys') {
$cur_dir = `bash -c 'pwd -L'`;
}
return undef unless defined $path;
if($^O eq 'msys') {
- # Msys transforms automatically path to Windows native form in staring
- # program parameters if program is not Msys-based.
+ # MSYS transforms automatically path to Windows native form in staring
+ # program parameters if program is not MSYS-based.
$path = do_msys_transform($path);
return undef if !defined $path;
$path =~ s{[\\/]+}{/}g;
return $path;
}
- # OS is Windows, but not Msys, path is absolute, path is not in Win32
+ # OS is Windows, but not MSYS, path is absolute, path is not in Windows
# form and 'cygpath' is not available.
return do_dumb_guessed_transform($path);
}
-# Internal function. Converts given Unix-style absolute path to Win32 format.
+# Internal function. Converts given Unix-style absolute path to Windows format.
sub simple_transform_win32_to_unix;
#######################################################################
# Converts given path to build system format absolute path, i.e. to
-# Msys/Cygwin Unix-style absolute format on Windows platform. Both
+# MSYS/Cygwin Unix-style absolute format on Windows platform. Both
# relative and absolute formats are supported for input.
#
sub build_sys_abs_path {
}
if($path =~ m{^([a-zA-Z]):($|[^/\\].*$)}) {
- # Path is single drive with colon or relative path on Win32 drive.
+ # Path is single drive with colon or relative path on Windows drive.
# ('C:' or 'C:path')
# This kind of relative path is not processed correctly by 'cygpath'.
# Get specified drive letter
- # Resolve relative dirs in Win32-style path or paths like 'D:/../c/'
+ # Resolve relative dirs in Windows-style path or paths like 'D:/../c/'
# will be resolved incorrectly.
# Replace any possible back slashes with forward slashes,
# remove any duplicated slashes.
# Path is empty string. Return current directory.
# Empty string processed correctly by 'cygpath'.
- # MSys shell has built-in command.
+ # MSYS shell has built-in command.
if($^O eq 'msys') {
chomp($path = `bash -c 'pwd -L'`);
}
return undef;
}
- # 'cygpath' removes last slash if path is root dir on Win32 drive.
+ # 'cygpath' removes last slash if path is root dir on Windows drive.
# Restore it.
$path .= '/' if($has_final_slash &&
substr($path, length($path) - 1, 1) ne '/');
return $path
}
elsif($path =~ m{^[a-zA-Z]:[/\\]}) {
- # Path is already in Win32 form. ('C:\path')
+ # Path is already in Windows form. ('C:\path')
- # Resolve relative dirs in Win32-style path otherwise paths
+ # Resolve relative dirs in Windows-style path otherwise paths
# like 'D:/../c/' will be resolved incorrectly.
# Replace any possible back slashes with forward slashes,
# remove any duplicated slashes.
return simple_transform_win32_to_unix($path);
}
elsif(substr($path, 0, 1) eq '\\') {
- # Path is directory or filename on Win32 current drive. ('\Windows')
+ # Path is directory or filename on Windows current drive. ('\Windows')
my $w32drive = get_win32_current_drive();
return undef if !defined $w32drive;
# Combine drive and path.
- # Resolve relative dirs in Win32-style path or paths like 'D:/../c/'
+ # Resolve relative dirs in Windows-style path or paths like 'D:/../c/'
# will be resolved incorrectly.
# Replace any possible back slashes with forward slashes,
# remove any duplicated slashes.
return simple_transform_win32_to_unix($path);
}
- # Path is not in any Win32 form.
+ # Path is not in any Windows form.
if(substr($path, 0, 1) ne '/') {
# Path in relative form. Resolve relative directories in Unix form
- # *BEFORE* converting to Win32 form otherwise paths like
+ # *BEFORE* converting to Windows form otherwise paths like
# '../../../cygdrive/c/windows' will not be resolved.
my $cur_dir;
- # MSys shell has built-in command.
+ # MSYS shell has built-in command.
if($^O eq 'msys') {
$cur_dir = `bash -c 'pwd -L'`;
}
my $prefix;
my $have_root = 0;
- # Check whether path starts from Win32 drive. ('C:path' or 'C:\path')
+ # Check whether path starts from Windows drive. ('C:path' or 'C:\path')
if($path =~ m{^([a-zA-Z]:(/|\\)?)(.*$)}) {
$prefix = $1;
$have_root = 1 if defined $2;
return $ret;
}
-# Internal function. Converts path by using Msys's built-in
+# Internal function. Converts path by using MSYS's built-in
# transformation.
sub do_msys_transform {
my ($path) = @_;
return undef if $^O ne 'msys';
return $path if $path eq '';
- # Remove leading double forward slashes, as they turn off Msys
+ # Remove leading double forward slashes, as they turn off MSYS
# transforming.
$path =~ s{^/[/\\]+}{/};
- # Msys transforms automatically path to Windows native form in staring
- # program parameters if program is not Msys-based.
+ # MSYS transforms automatically path to Windows native form in staring
+ # program parameters if program is not MSYS-based.
# Note: already checked that $path is non-empty.
$path = `cmd //c echo '$path'`;
if($? != 0) {
- warn "Can't transform path into Win32 form by using Msys" .
+ warn "Can't transform path into Windows form by using MSYS" .
"internal transformation.\n";
return undef;
}
# Internal function. Gets two parameters: first parameter must be single
# drive letter ('c'), second optional parameter is path relative to drive's
-# current working directory. Returns Win32 absolute normalized path.
+# current working directory. Returns Windows absolute normalized path.
sub get_abs_path_on_win32_drive {
my ($drv, $rel_path) = @_;
my $res;
# Get current directory on specified drive.
- # "/c;" is compatible with both Msys and Cygwin.
+ # "/c;" is compatible with both MSYS and Cygwin.
my $cur_dir_on_drv = `cmd "/c;" echo %=$drv:%`;
if($? != 0) {
- warn "Can't determine Win32 current directory on drive $drv:.\n";
+ warn "Can't determine Windows current directory on drive $drv:.\n";
return undef;
}
return normalize_path($res);
}
-# Internal function. Tries to find or guess Win32 version of given
+# Internal function. Tries to find or guess Windows version of given
# absolute Unix-style path. Other types of paths are not supported.
# Returned paths contain only single forward slashes (no back and
# duplicated slashes).
# Empty path is not valid.
return undef if (length($path) == 0);
- # RE to find Win32 drive letter
+ # RE to find Windows drive letter
my $drv_ltr_re = drives_mounted_on_cygdrive() ?
qr{^/cygdrive/([a-zA-Z])($|/.*$)} :
qr{^/([a-zA-Z])($|/.*$)};
- # Check path whether path is Win32 directly mapped drive and try to
- # transform it assuming that drive letter is matched to Win32 drive letter.
+ # Check path whether path is Windows directly mapped drive and try to
+ # transform it assuming that drive letter is matched to Windows drive letter.
if($path =~ m{$drv_ltr_re}) {
return ucfirst($1) . ':/' if(length($2) == 0);
return ucfirst($1) . ':' . $2;
else {
# Shouldn't happens as root '/' directory should always
# be resolvable.
- warn "Can't determine Win32 directory for path \"$path\".\n";
+ warn "Can't determine Windows directory for path \"$path\".\n";
return undef;
}
}
}
-# Internal function. Converts given Unix-style absolute path to Win32 format.
+# Internal function. Converts given Unix-style absolute path to Windows format.
sub simple_transform_win32_to_unix {
my ($path) = @_;
my $res;
chomp($res = `cygpath -a -u '$path'`);
if($? != 0) {
- warn "Can't determine Unix-style directory for Win32 " .
+ warn "Can't determine Unix-style directory for Windows " .
"directory \"$path\".\n";
return undef;
}
- # 'cygpath' removes last slash if path is root dir on Win32 drive.
+ # 'cygpath' removes last slash if path is root dir on Windows drive.
$res .= '/' if(substr($res, length($res) - 1, 1) ne '/' &&
$path =~ m{[/\\]$});
return $res;
# 'cygpath' is not available, use guessed transformation.
if($path !~ s{^([a-zA-Z]):(?:/|\\)}{/\l$1/}) {
- warn "Can't determine Unix-style directory for Win32 " .
+ warn "Can't determine Unix-style directory for Windows " .
"directory \"$path\".\n";
return undef;
}
no warnings "all";
require Time::HiRes;
};
- # portable sleeping falls back to native Sleep on Win32
+ # portable sleeping falls back to native Sleep on Windows
eval {
no warnings "all";
require Win32;
}
if($curl =~ /win32|Windows|mingw(32|64)/) {
# This is a Windows MinGW build or native build, we need to use
- # Win32-style path.
+ # Windows-style path.
$pwd = sys_native_current_path();
$has_textaware = 1;
$feature{"win32"} = 1;
# 'https-proxy' is used as "server" so consider it a protocol
push @protocols, 'https-proxy';
}
- # UNICODE support
+ # Unicode support
$feature{"Unicode"} = $feat =~ /Unicode/i;
# Thread-safe init
$feature{"threadsafe"} = $feat =~ /threadsafe/i;
# get the mode attribute
my $filemode=$hash{'mode'};
if($filemode && ($filemode eq "text") && $has_textaware) {
- # text mode when running on windows: fix line endings
+ # text mode when running on Windows: fix line endings
s/\r\n/\n/g for @validstdout;
s/\n/\r\n/g for @validstdout;
s/\r\n/\n/g for @actual;
s/\r\n/\n/g for @validstderr;
}
if($filemode && ($filemode eq "text") && $has_textaware) {
- # text mode when running on windows: fix line endings
+ # text mode when running on Windows: fix line endings
s/\r\n/\n/g for @validstderr;
s/\n/\r\n/g for @validstderr;
}
# get the mode attribute
my $filemode=$replycheckpartattr{'mode'};
if($filemode && ($filemode eq "text") && $has_textaware) {
- # text mode when running on windows: fix line endings
+ # text mode when running on Windows: fix line endings
s/\r\n/\n/g for @replycheckpart;
s/\n/\r\n/g for @replycheckpart;
}
# get the mode attribute
my $filemode=$replyattr{'mode'};
if($filemode && ($filemode eq "text") && $has_textaware) {
- # text mode when running on windows: fix line endings
+ # text mode when running on Windows: fix line endings
s/\r\n/\n/g for @reply;
s/\n/\r\n/g for @reply;
}
my $filemode=$hash{'mode'};
if($filemode && ($filemode eq "text") && $has_textaware) {
- # text mode when running on windows: fix line endings
+ # text mode when running on Windows: fix line endings
s/\r\n/\n/g for @outfile;
s/\n/\r\n/g for @outfile;
}
if($stunnel =~ /tstunnel(\.exe)?$/) {
$tstunnel_windows = 1;
- # convert Cygwin/MinGW paths to Win32 format
+ # convert Cygwin/MinGW paths to Windows format
$capath = pathhelp::sys_native_abs_path($capath);
$certfile = pathhelp::sys_native_abs_path($certfile);
}
#include <netinet/in.h>
#endif
#ifdef _XOPEN_SOURCE_EXTENDED
-/* This define is "almost" required to build on HPUX 11 */
+/* This define is "almost" required to build on HP-UX 11 */
#include <arpa/inet.h>
#endif
#ifdef HAVE_NETDB_H
bool auth; /* Authorization header present in the incoming request */
size_t cl; /* Content-Length of the incoming request */
bool digest; /* Authorization digest header found */
- bool ntlm; /* Authorization ntlm header found */
+ bool ntlm; /* Authorization NTLM header found */
int pipe; /* if non-zero, expect this many requests to do a "piped"
request/response */
int skip; /* if non-zero, the server is instructed to not read this
#if defined(USE_WINSOCK) && !defined(CURL_WINDOWS_APP)
/*
- * WinSock select() does not support standard file descriptors,
+ * Winsock select() does not support standard file descriptors,
* it can only check SOCKETs. The following function is an attempt
* to re-create a select() function with support for other handle types.
*
- * select() function with support for WINSOCK2 sockets and all
+ * select() function with support for Winsock2 sockets and all
* other handle types supported by WaitForMultipleObjectsEx() as
* well as disk files, anonymous and names pipes, and character input.
*
/* loop over the handles in the input descriptor sets */
nfd = 0; /* number of handled file descriptors */
nth = 0; /* number of internal waiting threads */
- nws = 0; /* number of handled WINSOCK sockets */
+ nws = 0; /* number of handled Winsock sockets */
for(fd = 0; fd < nfds; fd++) {
wsasock = curlx_sitosk(fd);
wsaevents.lNetworkEvents = 0;
FD_CLR(wsasock, exceptfds);
}
else {
- /* try to handle the event with the WINSOCK2 functions */
+ /* try to handle the event with the Winsock2 functions */
wsaevents.lNetworkEvents = 0;
error = WSAEnumNetworkEvents(wsasock, handle, &wsaevents);
if(error != SOCKET_ERROR) {
#ifdef USE_UNIX_SOCKETS
if(socket_domain == AF_UNIX)
- logmsg("Listening on unix socket %s", unix_socket);
+ logmsg("Listening on Unix socket %s", unix_socket);
else
#endif
logmsg("Listening on port %hu", port);
bool auth; /* Authorization header present in the incoming request */
size_t cl; /* Content-Length of the incoming request */
bool digest; /* Authorization digest header found */
- bool ntlm; /* Authorization ntlm header found */
+ bool ntlm; /* Authorization NTLM header found */
int delay; /* if non-zero, delay this number of msec after connect */
int writedelay; /* if non-zero, delay this number of milliseconds between
writes in the response */
#include <netinet/in.h>
#endif
#ifdef _XOPEN_SOURCE_EXTENDED
-/* This define is "almost" required to build on HPUX 11 */
+/* This define is "almost" required to build on HP-UX 11 */
#include <arpa/inet.h>
#endif
#ifdef HAVE_NETDB_H
return buf;
}
-/* use instead of perror() on generic windows */
+/* use instead of perror() on generic Windows */
void win32_perror(const char *msg)
{
char buf[512];
if(err) {
perror("Winsock init failed");
- logmsg("Error initialising winsock -- aborting");
+ logmsg("Error initialising Winsock -- aborting");
exit(1);
}
_flushall();
}
-/* socket-safe strerror (works on WinSock errors, too */
+/* socket-safe strerror (works on Winsock errors, too */
const char *sstrerror(int err)
{
static char buf[512];
* They are included for ANSI compatibility. Therefore, you can set
* signal handlers for these signals by using signal, and you can also
* explicitly generate these signals by calling raise. Source:
- * https://docs.microsoft.com/de-de/cpp/c-runtime-library/reference/signal
+ * https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/signal
*/
static BOOL WINAPI ctrl_event_handler(DWORD dwCtrlType)
{
void install_signal_handlers(bool keep_sigalrm)
{
#ifdef _WIN32
- /* setup windows exit event before any signal can trigger */
+ /* setup Windows exit event before any signal can trigger */
exit_event = CreateEvent(NULL, TRUE, FALSE, NULL);
if(!exit_event)
logmsg("cannot create exit event");
#***************************************************************************
-# Convert paths for curl's tests running on Windows with Cygwin/Msys OpenSSH
+# Convert paths for curl's tests running on Windows with Cygwin/MSYS OpenSSH
#
my $clipubkeyf_config;
my $hstprvkeyf_config;
$libext = '.la'; # .la since both libcurl and libcares are made with libtool
if ($^O eq 'MSWin32' || $targetos) {
if (!$targetos) {
- # If no target defined on Win32 lets assume vc
+ # If no target defined on Windows, let's assume vc
$targetos = 'vc';
}
if ($targetos =~ /vc/ || $targetos =~ /borland/) {
my $cmd = ($extvercmd ne '' ? $extvercmd.' ' : '')."./src/curl${binext} --version|";
open($f, "<", $cmd);
while(<$f>) {
- # strip CR from output on non-win32 platforms (wine on Linux)
+ # strip CR from output on non-Windows platforms (WINE on Linux)
s/\r// if ($^O ne 'MSWin32');
print;
}
{ "COM56", 0,
"COM56", SANITIZE_ERR_OK
},
- /* At the moment we expect a maximum path length of 259. I assume MSDOS
+ /* At the moment we expect a maximum path length of 259. I assume MS-DOS
has variable max path lengths depending on compiler that are shorter
- so currently these "good" truncate tests won't run on MSDOS */
+ so currently these "good" truncate tests will not run on MS-DOS */
#ifndef MSDOS
{ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
- `ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes/no>`\r
- Enable loading OpenSSL configuration\r
automatically, defaults to yes\r
- - `ENABLE_UNICODE=<yes/no>` - Enable UNICODE support, defaults to no\r
+ - `ENABLE_UNICODE=<yes/no>` - Enable Unicode support, defaults to no\r
- `ENABLE_WEBSOCKETS=<yes/no>` - Enable Web Socket support, defaults to no\r
- `GEN_PDB=<yes/no>` - Generate External Program Database\r
(debug symbols for release build)\r