quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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).