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  mul-
       tiple calls have	the same effect	as one call.

       The  flags option is a bit pattern that tells libcurl exactly what fea-
       tures to	init, as described below. Set the desired bits	by  ORing  the
       values	 together.     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 internal operations of libcurl.

       This   function	is  thread-safe	 on  most  platforms.  Then  curl_ver-
       sion_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  just  mean
       no  other  thread  that	is  using libcurl. Because curl_global_init(3)
       calls functions of other	libraries 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  ini-
       tialize	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  ini-
	      tialization of the SSL layer needs to be done by the application
	      or  at  least  outside of	libcurl. The exact procedure how to do
	      SSL initialization depends on the	TLS backend libcurl uses.

	      Doing TLS	based transfers	without	having the TLS layer  initial-
	      ized 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 ini-
	      tialization of 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_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
	      condition	when connecting	or when	waiting	for  data.  Otherwise,
	      curl waits until full timeout elapses. (Added in 7.30.0)

PROTOCOLS
       This functionality affects all supported	protocols

EXAMPLE
       int main(void)
       {
	 curl_global_init(CURL_GLOBAL_DEFAULT);

	 /* 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				  2025-06-03		   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+14.3.quarterly>

home | help