Provided by: libcurl4-doc_7.58.0-2ubuntu3.24_all bug


       curl_global_init - Global libcurl initialisation


       #include <curl/curl.h>

       CURLcode curl_global_init(long flags);


       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 together.  In normal  operation,
       you  must specify CURL_GLOBAL_ALL.  Don't use any other value unless you are familiar with
       it and mean to control internal operations of libcurl.

       This function is not thread safe. You must not call  it  when  any  other  thread  in  the
       program  (i.e.  a  thread  sharing the same memory) is running.  This doesn't 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  initialize  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.


              Initialize    everything    possible.    This    sets   all   known   bits   except

              (This flag's presence or absense 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 initialization of the SSL
              layer needs to be done by the application or at least outside of libcurl. The exact
              procedure how to do SSL initializtion depends on the TLS backend libcurl uses.

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

              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 behaviors. This
              option exists for when the initialization is handled outside of libcurl so  there's
              no need for libcurl to do it again.

              Initialise nothing extra. This sets no bit.

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

              When this flag is set, curl will acknowledge EINTR  condition  when  connecting  or
              when waiting for data.  Otherwise, curl waits until full timeout elapses. (Added in


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


       curl_global_init_mem(3),  curl_global_cleanup(3), curl_global_sslset(3), curl_easy_init(3)