CURLOPT_CONV_FROM_NETWORK_FUNCTION.md (2959B)
1 --- 2 c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 3 SPDX-License-Identifier: curl 4 Title: CURLOPT_CONV_FROM_NETWORK_FUNCTION 5 Section: 3 6 Source: libcurl 7 See-also: 8 - CURLOPT_CONV_FROM_UTF8_FUNCTION (3) 9 - CURLOPT_CONV_TO_NETWORK_FUNCTION (3) 10 Protocol: 11 - All 12 Added-in: 7.15.4 13 --- 14 15 # NAME 16 17 CURLOPT_CONV_FROM_NETWORK_FUNCTION - convert data from network to host encoding 18 19 # SYNOPSIS 20 21 ~~~c 22 #include <curl/curl.h> 23 24 CURLcode conv_callback(char *ptr, size_t length); 25 26 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONV_FROM_NETWORK_FUNCTION, 27 conv_callback); 28 ~~~ 29 30 # DESCRIPTION 31 32 Pass a pointer to your callback function, which should match the prototype 33 shown above. 34 35 Applies to non-ASCII platforms. curl_version_info(3) returns the 36 **CURL_VERSION_CONV** feature bit set if this option is provided. 37 38 The data to be converted is in a buffer pointed to by the *ptr* parameter. 39 The amount of data to convert is indicated by the *length* parameter. The 40 converted data overlays the input data in the buffer pointed to by the ptr 41 parameter. *CURLE_OK* must be returned upon successful conversion. A 42 CURLcode return value defined by curl.h, such as *CURLE_CONV_FAILED*, 43 should be returned if an error was encountered. 44 45 CURLOPT_CONV_FROM_NETWORK_FUNCTION(3) converts to host encoding from the 46 network encoding. It is used when commands or ASCII data are received over the 47 network. 48 49 If you set a callback pointer to NULL, or do not set it at all, the built-in 50 libcurl iconv functions are used. If HAVE_ICONV was not defined when libcurl 51 was built, and no callback has been established, the conversion returns the 52 **CURLE_CONV_REQD** error code. 53 54 If **HAVE_ICONV** is defined, **CURL_ICONV_CODESET_OF_HOST** must also be 55 defined. For example: 56 57 ~~~c 58 #define CURL_ICONV_CODESET_OF_HOST "IBM-1047" 59 ~~~ 60 61 The iconv code in libcurl defaults the network and UTF8 codeset names as 62 follows: 63 64 ~~~ 65 #define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1" 66 67 #define CURL_ICONV_CODESET_FOR_UTF8 "UTF-8" 68 ~~~ 69 70 You need to override these definitions if they are different on your system. 71 72 # DEFAULT 73 74 NULL 75 76 # %PROTOCOLS% 77 78 # EXAMPLE 79 80 ~~~c 81 static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length) 82 { 83 int rc = 0; 84 85 /* in-place convert 'buffer' from ASCII to EBCDIC */ 86 87 if(rc == 0) { 88 /* success */ 89 return CURLE_OK; 90 } 91 else { 92 return CURLE_CONV_FAILED; 93 } 94 } 95 96 int main(void) 97 { 98 CURL *curl = curl_easy_init(); 99 100 /* use platform-specific functions for codeset conversions */ 101 curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION, 102 my_conv_from_ascii_to_ebcdic); 103 } 104 ~~~ 105 106 # DEPRECATED 107 108 Not available and deprecated since 7.82.0. 109 110 Available only if **CURL_DOES_CONVERSIONS** was defined when libcurl was 111 built. 112 113 # %AVAILABILITY% 114 115 # RETURN VALUE 116 117 curl_easy_setopt(3) returns a CURLcode indicating success or error. 118 119 CURLE_OK (0) means everything was OK, non-zero means an error occurred, see 120 libcurl-errors(3).