Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
curl_global_init(3)	    Library Functions Manual	     curl_global_init(3)

NAME
     curl_global_init - global libcurl initialization

SYNOPSIS
     #include <curl/curl.h>

     CURLcode curl_global_init(long flags);

DESCRIPTION
     This  function sets up the program environment that libcurl needs. Think of
     it as an extension of the library loader.

     This function must be called at least once within a program (a  program  is
     all the code that shares a memory space) before the program calls any other
     function in libcurl. The environment it sets up is constant for the life of
     the  program  and is the same for every program, so multiple calls have the
     same effect as one call.

     The flags option is a bit pattern that tells libcurl exactly what	features
     to  init,	as described below. Set the desired bits by ORing the values to-
     gether.  In normal operation, you must specify CURL_GLOBAL_ALL. Do not  use
     any  other value unless you are familiar with it and mean to control inter-
     nal operations of libcurl.

     This function is thread-safe on most platforms.  Then  curl_version_info(3)
     has the threadsafe feature set (added in 7.84.0).

     If  this  is not thread-safe (the bit mentioned above is not set), you must
     not call this function when any other thread in the program (i.e. a  thread
     sharing  the same memory) is running. This does not only mean other threads
     that use libcurl. Because curl_global_init(3) calls functions of other  li-
     braries  that are similarly thread-unsafe, it could conflict with any other
     thread that uses these other libraries.

     If you are initializing libcurl from a Windows DLL you should not	initial-
     ize  it  from  DllMain  or  a  static initializer because Windows holds the
     loader lock during that time and it could cause a deadlock.

     See the description in libcurl(3) of global  environment  requirements  for
     details of how to use this function.

FLAGS
     CURL_GLOBAL_ALL
	    Initialize	everything  possible.  This  sets  all known bits except
	    CURL_GLOBAL_ACK_EINTR.

     CURL_GLOBAL_SSL
	    (This flag's presence or absence serves no meaning since 7.57.0. The
	    description below is for older libcurl versions.)

	    Initialize SSL.

	    The implication here is that if this bit is not set, the initializa-
	    tion of the SSL layer needs to be done  by	the  application  or  at
	    least outside of libcurl. The exact procedure how to do SSL initial-
	    ization depends on the TLS backend libcurl uses.

	    Doing  TLS	based transfers without having the TLS layer initialized
	    may lead to unexpected behaviors.

     CURL_GLOBAL_WIN32
	    Initialize the Win32 socket libraries.

	    The implication here is that if this bit is not set, the initializa-
	    tion of Winsock has to be done by the application or you  risk  get-
	    ting  undefined  behaviors. This option exists for when the initial-
	    ization is handled outside of  libcurl  so	there  is  no  need  for
	    libcurl to do it again.

     CURL_GLOBAL_NOTHING
	    Initialize nothing extra. This sets no bit.

     CURL_GLOBAL_DEFAULT
	    A  sensible  default.  It initializes both SSL and Win32. Right now,
	    this equals the functionality of the CURL_GLOBAL_ALL mask.

     CURL_GLOBAL_ACK_EINTR
	    This bit has no point since 7.69.0 but its behavior is  instead  the
	    default.

	    Before 7.69.0: when this flag is set, curl acknowledges EINTR condi-
	    tion when connecting or when waiting for data. Otherwise, curl waits
	    until full timeout elapses.

PROTOCOLS
     This functionality affects all supported protocols

EXAMPLE
     int main(void)
     {
       CURLcode result;

       result = curl_global_init(CURL_GLOBAL_DEFAULT);

       if(result == CURLE_OK) {

	 /* use libcurl, then before exiting... */

	 curl_global_cleanup();
       }
     }

AVAILABILITY
     Added in curl 7.8

RETURN VALUE
     If  this function returns non-zero, something went wrong and you cannot use
     the other curl functions.

SEE ALSO
     curl_easy_init(3),     curl_global_cleanup(3),	curl_global_init_mem(3),
     curl_global_sslset(3), curl_global_trace(3), libcurl(3)

libcurl 			   2026-06-11		     curl_global_init(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_global_init&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help