CURLOPT_FNMATCH_FUNCTION(3)
π NAME π
CURLOPT_FNMATCH_FUNCTION(3) β from the Library Functions Manual, bestie β is literally the wildcard match callback. That's the name, and it's giving very specific callback energy. π
β¨
β¨ SYNOPSIS β¨
okay so here's the exact signature, no edits:
#include <curl/curl.h>
int fnmatch_callback(void *ptr,
const char *pattern,
const char *string);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
fnmatch_callback);
πΈ DESCRIPTION πΈ
You pass a pointer to your callback function, and it should match the prototype shown above. Simple? Slay. π«Ά
This callback is used for wildcard matching. π
Return these values, okay?
CURL_FNMATCHFUNC_MATCHβ ifpatternmatches thestring.CURL_FNMATCHFUNC_NOMATCHβ if it does not match.CURL_FNMATCHFUNC_FAILβ if an error occurred.
bestie reminder: those are the return values for this callback. Keep the vibe accurate. π
π DEFAULT π
NULL == an internal function for wildcard matching. That's the default, no cap. π
π PROTOCOLS π
This functionality affects ftp only. Like, ftp only, bestie. π¦
π₯ EXAMPLE π₯
Here's the example from the page, exactly as it appears β icon behavior, zero rewrites:
extern int string_match(const char *s1, const char *s2);
struct local_stuff {
void *custom;
};
static int my_fnmatch(void *clientp,
const char *pattern, const char *string)
{
struct local_stuff *data = clientp;
printf("my pointer: %p\n", data->custom);
if(string_match(pattern, string))
return CURL_FNMATCHFUNC_MATCH;
else
return CURL_FNMATCHFUNC_NOMATCH;
}
int main(void)
{
struct local_stuff local_data;
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/file*");
curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L);
curl_easy_setopt(curl, CURLOPT_FNMATCH_FUNCTION, my_fnmatch);
curl_easy_setopt(curl, CURLOPT_FNMATCH_DATA, &local_data);
curl_easy_perform(curl);
}
}
π AVAILABILITY π
Added in curl 7.21.0. Vintage but still iconic. β
π RETURN VALUE π
curl_easy_setopt(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3). Periodt. π
π¦ SEE ALSO π¦
mwah π β source/version libcurl, date 2026-10-12. Now go match those wildcards like the main character you are! π«Ά
π¦ where this page comes from
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms