"Fossies" - the Fresh Open Source Software Archive

Member "curl-7.66.0/include/curl/urlapi.h" (9 Sep 2019, 4352 Bytes) of package /linux/www/curl-7.66.0.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "urlapi.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 7.65.3_vs_7.66.0.

    1 #ifndef CURLINC_URLAPI_H
    2 #define CURLINC_URLAPI_H
    3 /***************************************************************************
    4  *                                  _   _ ____  _
    5  *  Project                     ___| | | |  _ \| |
    6  *                             / __| | | | |_) | |
    7  *                            | (__| |_| |  _ <| |___
    8  *                             \___|\___/|_| \_\_____|
    9  *
   10  * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
   11  *
   12  * This software is licensed as described in the file COPYING, which
   13  * you should have received as part of this distribution. The terms
   14  * are also available at https://curl.haxx.se/docs/copyright.html.
   15  *
   16  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
   17  * copies of the Software, and permit persons to whom the Software is
   18  * furnished to do so, under the terms of the COPYING file.
   19  *
   20  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
   21  * KIND, either express or implied.
   22  *
   23  ***************************************************************************/
   24 
   25 #include "curl.h"
   26 
   27 #ifdef  __cplusplus
   28 extern "C" {
   29 #endif
   30 
   31 /* the error codes for the URL API */
   32 typedef enum {
   33   CURLUE_OK,
   34   CURLUE_BAD_HANDLE,          /* 1 */
   35   CURLUE_BAD_PARTPOINTER,     /* 2 */
   36   CURLUE_MALFORMED_INPUT,     /* 3 */
   37   CURLUE_BAD_PORT_NUMBER,     /* 4 */
   38   CURLUE_UNSUPPORTED_SCHEME,  /* 5 */
   39   CURLUE_URLDECODE,           /* 6 */
   40   CURLUE_OUT_OF_MEMORY,       /* 7 */
   41   CURLUE_USER_NOT_ALLOWED,    /* 8 */
   42   CURLUE_UNKNOWN_PART,        /* 9 */
   43   CURLUE_NO_SCHEME,           /* 10 */
   44   CURLUE_NO_USER,             /* 11 */
   45   CURLUE_NO_PASSWORD,         /* 12 */
   46   CURLUE_NO_OPTIONS,          /* 13 */
   47   CURLUE_NO_HOST,             /* 14 */
   48   CURLUE_NO_PORT,             /* 15 */
   49   CURLUE_NO_QUERY,            /* 16 */
   50   CURLUE_NO_FRAGMENT          /* 17 */
   51 } CURLUcode;
   52 
   53 typedef enum {
   54   CURLUPART_URL,
   55   CURLUPART_SCHEME,
   56   CURLUPART_USER,
   57   CURLUPART_PASSWORD,
   58   CURLUPART_OPTIONS,
   59   CURLUPART_HOST,
   60   CURLUPART_PORT,
   61   CURLUPART_PATH,
   62   CURLUPART_QUERY,
   63   CURLUPART_FRAGMENT,
   64   CURLUPART_ZONEID /* added in 7.65.0 */
   65 } CURLUPart;
   66 
   67 #define CURLU_DEFAULT_PORT (1<<0)       /* return default port number */
   68 #define CURLU_NO_DEFAULT_PORT (1<<1)    /* act as if no port number was set,
   69                                            if the port number matches the
   70                                            default for the scheme */
   71 #define CURLU_DEFAULT_SCHEME (1<<2)     /* return default scheme if
   72                                            missing */
   73 #define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
   74 #define CURLU_PATH_AS_IS (1<<4)         /* leave dot sequences */
   75 #define CURLU_DISALLOW_USER (1<<5)      /* no user+password allowed */
   76 #define CURLU_URLDECODE (1<<6)          /* URL decode on get */
   77 #define CURLU_URLENCODE (1<<7)          /* URL encode on set */
   78 #define CURLU_APPENDQUERY (1<<8)        /* append a form style part */
   79 #define CURLU_GUESS_SCHEME (1<<9)       /* legacy curl-style guessing */
   80 
   81 typedef struct Curl_URL CURLU;
   82 
   83 /*
   84  * curl_url() creates a new CURLU handle and returns a pointer to it.
   85  * Must be freed with curl_url_cleanup().
   86  */
   87 CURL_EXTERN CURLU *curl_url(void);
   88 
   89 /*
   90  * curl_url_cleanup() frees the CURLU handle and related resources used for
   91  * the URL parsing. It will not free strings previously returned with the URL
   92  * API.
   93  */
   94 CURL_EXTERN void curl_url_cleanup(CURLU *handle);
   95 
   96 /*
   97  * curl_url_dup() duplicates a CURLU handle and returns a new copy. The new
   98  * handle must also be freed with curl_url_cleanup().
   99  */
  100 CURL_EXTERN CURLU *curl_url_dup(CURLU *in);
  101 
  102 /*
  103  * curl_url_get() extracts a specific part of the URL from a CURLU
  104  * handle. Returns error code. The returned pointer MUST be freed with
  105  * curl_free() afterwards.
  106  */
  107 CURL_EXTERN CURLUcode curl_url_get(CURLU *handle, CURLUPart what,
  108                                    char **part, unsigned int flags);
  109 
  110 /*
  111  * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns
  112  * error code. The passed in string will be copied. Passing a NULL instead of
  113  * a part string, clears that part.
  114  */
  115 CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
  116                                    const char *part, unsigned int flags);
  117 
  118 
  119 #ifdef __cplusplus
  120 } /* end of extern "C" */
  121 #endif
  122 
  123 #endif /* CURLINC_URLAPI_H */