Annotation of embedaddon/curl/docs/libcurl/curl_global_init.3, revision 1.1
1.1 ! misho 1: .\" **************************************************************************
! 2: .\" * _ _ ____ _
! 3: .\" * Project ___| | | | _ \| |
! 4: .\" * / __| | | | |_) | |
! 5: .\" * | (__| |_| | _ <| |___
! 6: .\" * \___|\___/|_| \_\_____|
! 7: .\" *
! 8: .\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: .\" *
! 10: .\" * This software is licensed as described in the file COPYING, which
! 11: .\" * you should have received as part of this distribution. The terms
! 12: .\" * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: .\" *
! 14: .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: .\" * copies of the Software, and permit persons to whom the Software is
! 16: .\" * furnished to do so, under the terms of the COPYING file.
! 17: .\" *
! 18: .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: .\" * KIND, either express or implied.
! 20: .\" *
! 21: .\" **************************************************************************
! 22: .TH curl_global_init 3 "January 23, 2020" "libcurl 7.70.0" "libcurl Manual"
! 23:
! 24: .SH NAME
! 25: curl_global_init - Global libcurl initialisation
! 26: .SH SYNOPSIS
! 27: .B #include <curl/curl.h>
! 28: .sp
! 29: .BI "CURLcode curl_global_init(long " flags ");"
! 30: .ad
! 31: .SH DESCRIPTION
! 32: This function sets up the program environment that libcurl needs. Think of it
! 33: as an extension of the library loader.
! 34:
! 35: This function must be called at least once within a program (a program is all
! 36: the code that shares a memory space) before the program calls any other
! 37: function in libcurl. The environment it sets up is constant for the life of
! 38: the program and is the same for every program, so multiple calls have the same
! 39: effect as one call.
! 40:
! 41: The flags option is a bit pattern that tells libcurl exactly what features to
! 42: init, as described below. Set the desired bits by ORing the values together.
! 43: In normal operation, you must specify CURL_GLOBAL_ALL. Don't use any other
! 44: value unless you are familiar with it and mean to control internal operations of
! 45: libcurl.
! 46:
! 47: \fBThis function is not thread safe.\fP You must not call it when any other
! 48: thread in the program (i.e. a thread sharing the same memory) is running.
! 49: This doesn't just mean no other thread that is using libcurl. Because
! 50: \fIcurl_global_init(3)\fP calls functions of other libraries that are
! 51: similarly thread unsafe, it could conflict with any other thread that uses
! 52: these other libraries.
! 53:
! 54: If you are initializing libcurl from a Windows DLL you should not initialize it
! 55: from DllMain or a static initializer because Windows holds the loader lock
! 56: during that time and it could cause a deadlock.
! 57:
! 58: See the description in \fIlibcurl(3)\fP of global environment requirements for
! 59: details of how to use this function.
! 60: .SH FLAGS
! 61: .IP CURL_GLOBAL_ALL
! 62: Initialize everything possible. This sets all known bits except
! 63: \fBCURL_GLOBAL_ACK_EINTR\fP.
! 64:
! 65: .IP CURL_GLOBAL_SSL
! 66: (This flag's presence or absence serves no meaning since 7.57.0. The
! 67: description below is for older libcurl versions.)
! 68:
! 69: Initialize SSL.
! 70:
! 71: The implication here is that if this bit is not set, the initialization of the
! 72: SSL layer needs to be done by the application or at least outside of
! 73: libcurl. The exact procedure how to do SSL initialization depends on the TLS
! 74: backend libcurl uses.
! 75:
! 76: Doing TLS based transfers without having the TLS layer initialized may lead to
! 77: unexpected behaviors.
! 78: .IP CURL_GLOBAL_WIN32
! 79: Initialize the Win32 socket libraries.
! 80:
! 81: The implication here is that if this bit is not set, the initialization of
! 82: winsock has to be done by the application or you risk getting undefined
! 83: behaviors. This option exists for when the initialization is handled outside
! 84: of libcurl so there's no need for libcurl to do it again.
! 85: .IP CURL_GLOBAL_NOTHING
! 86: Initialise nothing extra. This sets no bit.
! 87: .IP CURL_GLOBAL_DEFAULT
! 88: A sensible default. It will init both SSL and Win32. Right now, this equals
! 89: the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
! 90: .IP CURL_GLOBAL_ACK_EINTR
! 91: This bit has no point since 7.69.0 but its behavior is instead the default.
! 92:
! 93: Before 7.69.0: when this flag is set, curl will acknowledge EINTR condition
! 94: when connecting or when waiting for data. Otherwise, curl waits until full
! 95: timeout elapses. (Added in 7.30.0)
! 96: .SH RETURN VALUE
! 97: If this function returns non-zero, something went wrong and you cannot use the
! 98: other curl functions.
! 99: .SH "SEE ALSO"
! 100: .BR curl_global_init_mem "(3), "
! 101: .BR curl_global_cleanup "(3), "
! 102: .BR curl_global_sslset "(3), "
! 103: .BR curl_easy_init "(3) "
! 104: .BR libcurl "(3) "
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>