curldown is this new file format for libcurl man pages. It is markdown inspired with differences: - Each file has a set of leading headers with meta-data - Supports a small subset of markdown - Uses .md file extensions for editors/IDE/GitHub to treat them nicely - Generates man pages very similar to the previous ones - Generates man pages that still convert nicely to HTML on the website - Detects and highlights mentions of curl symbols automatically (when their man page section is specified) tools: - cd2nroff: converts from curldown to nroff man page - nroff2cd: convert an (old) nroff man page to curldown - cdall: convert many nroff pages to curldown versions - cd2cd: verifies and updates a curldown to latest curldown This setup generates .3 versions of all the curldown versions at build time. CI: Since the documentation is now technically markdown in the eyes of many things, the CI runs many more tests and checks on this documentation, including proselint, link checkers and tests that make sure we capitalize the first letter after a period... Closes #12730
2.4 KiB
| c | SPDX-License-Identifier | Title | Section | Source | See-also | ||||
|---|---|---|---|---|---|---|---|---|---|
| Copyright (C) Daniel Stenberg, <daniel.se>, et al. | curl | CURLOPT_HSTSREADFUNCTION | 3 | libcurl |
|
NAME
CURLOPT_HSTSREADFUNCTION - read callback for HSTS hosts
SYNOPSIS
#include <curl/curl.h>
struct curl_hstsentry {
char *name;
size_t namelen;
unsigned int includeSubDomains:1;
char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */
};
CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *clientp);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADFUNCTION, hstsread);
DESCRIPTION
Pass a pointer to your callback function, as the prototype shows above.
This callback function gets called by libcurl repeatedly when it populates the in-memory HSTS cache.
Set the clientp argument with the CURLOPT_HSTSREADDATA(3) option or it is NULL.
When this callback is invoked, the sts pointer points to a populated struct: Copy the host name to name (no longer than namelen bytes). Make it null-terminated. Set includeSubDomains to TRUE or FALSE. Set expire to a date stamp or a zero length string for forever (wrong date stamp format might cause the name to not get accepted)
The callback should return CURLSTS_OK if it returns a name and is prepared to be called again (for another host) or CURLSTS_DONE if it has no entry to return. It can also return CURLSTS_FAIL to signal error. Returning CURLSTS_FAIL stops the transfer from being performed and make CURLE_ABORTED_BY_CALLBACK get returned.
This option does not enable HSTS, you need to use CURLOPT_HSTS_CTRL(3) to do that.
DEFAULT
NULL - no callback.
PROTOCOLS
This feature is only used for HTTP(S) transfer.
EXAMPLE
struct priv {
void *custom;
};
static CURLSTScode hsts_cb(CURL *easy, struct curl_hstsentry *sts,
void *clientp)
{
/* populate the struct as documented */
return CURLSTS_OK;
}
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
struct priv my_stuff;
CURLcode res;
/* set HSTS read callback */
curl_easy_setopt(curl, CURLOPT_HSTSREADFUNCTION, hsts_cb);
/* pass in suitable argument to the callback */
curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &my_stuff);
res = curl_easy_perform(curl);
}
}
AVAILABILITY
Added in 7.74.0
RETURN VALUE
This returns CURLE_OK.