Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 .\" ************************************************************************** | |
| 2 .\" * _ _ ____ _ | |
| 3 .\" * Project ___| | | | _ \| | | |
| 4 .\" * / __| | | | |_) | | | |
| 5 .\" * | (__| |_| | _ <| |___ | |
| 6 .\" * \___|\___/|_| \_\_____| | |
| 7 .\" * | |
| 8 .\" * Copyright (C) 1998 - 2018, 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 .\" | |
| 23 .TH CURLOPT_HEADERFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" | |
| 24 .SH NAME | |
| 25 CURLOPT_HEADERFUNCTION \- callback that receives header data | |
| 26 .SH SYNOPSIS | |
| 27 #include <curl/curl.h> | |
| 28 | |
| 29 size_t header_callback(char *buffer, | |
| 30 size_t size, | |
| 31 size_t nitems, | |
| 32 void *userdata); | |
| 33 | |
| 34 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION, header_callback); | |
| 35 .SH DESCRIPTION | |
| 36 Pass a pointer to your callback function, which should match the prototype | |
| 37 shown above. | |
| 38 | |
| 39 This function gets called by libcurl as soon as it has received header | |
| 40 data. The header callback will be called once for each header and only | |
| 41 complete header lines are passed on to the callback. Parsing headers is very | |
| 42 easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP | |
| 43 multiplied with \fInitems\fP. Do not assume that the header line is zero | |
| 44 terminated! | |
| 45 | |
| 46 The pointer named \fIuserdata\fP is the one you set with the | |
| 47 \fICURLOPT_HEADERDATA(3)\fP option. | |
| 48 | |
| 49 This callback function must return the number of bytes actually taken care of. | |
| 50 If that amount differs from the amount passed in to your function, it'll signal | |
| 51 an error to the library. This will cause the transfer to get aborted and the | |
| 52 libcurl function in progress will return \fICURLE_WRITE_ERROR\fP. | |
| 53 | |
| 54 A complete HTTP header that is passed to this function can be up to | |
| 55 \fICURL_MAX_HTTP_HEADER\fP (100K) bytes and includes the final line terminator. | |
| 56 | |
| 57 If this option is not set, or if it is set to NULL, but | |
| 58 \fICURLOPT_HEADERDATA(3)\fP is set to anything but NULL, the function used to | |
| 59 accept response data will be used instead. That is, it will be the function | |
| 60 specified with \fICURLOPT_WRITEFUNCTION(3)\fP, or if it is not specified or | |
| 61 NULL - the default, stream-writing function. | |
| 62 | |
| 63 It's important to note that the callback will be invoked for the headers of | |
| 64 all responses received after initiating a request and not just the final | |
| 65 response. This includes all responses which occur during authentication | |
| 66 negotiation. If you need to operate on only the headers from the final | |
| 67 response, you will need to collect headers in the callback yourself and use | |
| 68 HTTP status lines, for example, to delimit response boundaries. | |
| 69 | |
| 70 For an HTTP transfer, the status line and the blank line preceding the response | |
| 71 body are both included as headers and passed to this function. | |
| 72 | |
| 73 When a server sends a chunked encoded transfer, it may contain a trailer. That | |
| 74 trailer is identical to an HTTP header and if such a trailer is received it is | |
| 75 passed to the application using this callback as well. There are several ways | |
| 76 to detect it being a trailer and not an ordinary header: 1) it comes after the | |
| 77 response-body. 2) it comes after the final header line (CR LF) 3) a Trailer: | |
| 78 header among the regular response-headers mention what header(s) to expect in | |
| 79 the trailer. | |
| 80 | |
| 81 For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get | |
| 82 called with the server responses to the commands that libcurl sends. | |
| 83 .SH LIMITATIONS | |
| 84 libcurl does not unfold HTTP "folded headers" (deprecated since RFC 7230). A | |
| 85 folded header is a header that continues on a subsequent line and starts with | |
| 86 a whitespace. Such folds will be passed to the header callback as a separate | |
| 87 one, although strictly it is just a continuation of the previous line. | |
| 88 .SH DEFAULT | |
| 89 Nothing. | |
| 90 .SH PROTOCOLS | |
| 91 Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3, | |
| 92 IMAP, SMTP and more. | |
| 93 .SH EXAMPLE | |
| 94 .nf | |
| 95 static size_t header_callback(char *buffer, size_t size, | |
| 96 size_t nitems, void *userdata) | |
| 97 { | |
| 98 /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */ | |
| 99 /* 'userdata' is set with CURLOPT_HEADERDATA */ | |
| 100 return nitems * size; | |
| 101 } | |
| 102 | |
| 103 CURL *curl = curl_easy_init(); | |
| 104 if(curl) { | |
| 105 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); | |
| 106 | |
| 107 curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); | |
| 108 | |
| 109 curl_easy_perform(curl); | |
| 110 } | |
| 111 .fi | |
| 112 .SH AVAILABILITY | |
| 113 Always | |
| 114 .SH RETURN VALUE | |
| 115 Returns CURLE_OK | |
| 116 .SH "SEE ALSO" | |
| 117 .BR CURLOPT_HEADERDATA "(3), " CURLOPT_WRITEFUNCTION "(3), " |
