mirror of
https://github.com/curl/curl.git
synced 2026-07-24 12:27:16 +03:00
setopt: add CURLOPT_CURLU
Allows an application to pass in a pre-parsed URL via a URL handle. Closes #3227
This commit is contained in:
parent
073332b525
commit
5c4fe0d826
16 changed files with 310 additions and 9 deletions
|
|
@ -34,7 +34,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
|
|||
imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
|
||||
http2-upload http2-serverpush getredirect ftpuploadfrommem \
|
||||
ftpuploadresume sslbackend postit2-formadd multi-formadd \
|
||||
shared-connection-cache sftpuploadresume http2-pushinmemory parseurl
|
||||
shared-connection-cache sftpuploadresume http2-pushinmemory parseurl \
|
||||
urlapi
|
||||
|
||||
# These examples require external dependencies that may not be commonly
|
||||
# available on POSIX systems, so don't bother attempting to compile them here.
|
||||
|
|
|
|||
72
docs/examples/urlapi.c
Normal file
72
docs/examples/urlapi.c
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
***************************************************************************/
|
||||
/* <DESC>
|
||||
* Set working URL with CURLU *.
|
||||
* </DESC>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
#if !CURL_AT_LEAST_VERSION(7, 62, 0)
|
||||
#error "this example requires curl 7.62.0 or later"
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
|
||||
CURLU *urlp;
|
||||
CURLUcode uc;
|
||||
|
||||
/* get a curl handle */
|
||||
curl = curl_easy_init();
|
||||
|
||||
/* init Curl URL */
|
||||
urlp = curl_url();
|
||||
uc = curl_url_set(urlp, CURLUPART_URL,
|
||||
"http://example.com/path/index.html", 0);
|
||||
|
||||
if(uc) {
|
||||
fprintf(stderr, "curl_url_set() failed: %in", uc);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if(curl) {
|
||||
/* set urlp to use as working URL */
|
||||
curl_easy_setopt(curl, CURLOPT_CURLU, urlp);
|
||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
/* Check for errors */
|
||||
if(res != CURLE_OK)
|
||||
fprintf(stderr, "curl_easy_perform() failed: %s\n",
|
||||
curl_easy_strerror(res));
|
||||
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
curl_url_cleanup(urlp);
|
||||
curl_easy_cleanup(curl);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -407,6 +407,8 @@ Range requests. See \fICURLOPT_RANGE(3)\fP
|
|||
Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
|
||||
.IP CURLOPT_RESUME_FROM_LARGE
|
||||
Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
|
||||
.IP CURLOPT_CURLU
|
||||
Set URL to work on with CURLU *. See \fICURLOPT_CURLU(3)\fP
|
||||
.IP CURLOPT_CUSTOMREQUEST
|
||||
Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
|
||||
.IP CURLOPT_FILETIME
|
||||
|
|
|
|||
61
docs/libcurl/opts/CURLOPT_CURLU.3
Normal file
61
docs/libcurl/opts/CURLOPT_CURLU.3
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_CURLU 3 "28 Oct 2018" "libcurl 7.63.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_CURLU \- set URL with CURLU *
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
|
||||
.SH DESCRIPTION
|
||||
Pass in a pointer to the \fIURL\fP to work with. The parameter should be a
|
||||
CURLU *. Setting \fICURLOPT_CURLU(3)\fP will explicitly override \fICURLOPT_URL(3)\fP.
|
||||
|
||||
.SH DEFAULT
|
||||
The default value of this parameter is NULL.
|
||||
.SH PROTOCOLS
|
||||
All
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *handle = curl_easy_init();
|
||||
CURLU *urlp = curl_url();
|
||||
int res = 0;
|
||||
if(curl) {
|
||||
|
||||
res = curl_url_set(urlp, CURLUPART_URL, "http://example.com", 0);
|
||||
|
||||
curl_easy_setopt(handle, CURLOPT_CURLU, urlp);
|
||||
|
||||
ret = curl_easy_perform(handle);
|
||||
|
||||
curl_url_cleanup(urlp);
|
||||
curl_easy_cleanup(handle);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in 7.63.0.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_URL "(3), "
|
||||
.BR curl_url "(3), " curl_url_get "(3), " curl_url_set "(3), "
|
||||
|
|
@ -111,6 +111,7 @@ man_MANS = \
|
|||
CURLOPT_CRLF.3 \
|
||||
CURLOPT_CRLFILE.3 \
|
||||
CURLOPT_CUSTOMREQUEST.3 \
|
||||
CURLOPT_CURLU.3 \
|
||||
CURLOPT_DEBUGDATA.3 \
|
||||
CURLOPT_DEBUGFUNCTION.3 \
|
||||
CURLOPT_DEFAULT_PROTOCOL.3 \
|
||||
|
|
|
|||
|
|
@ -371,6 +371,7 @@ CURLOPT_COOKIESESSION 7.9.7
|
|||
CURLOPT_COPYPOSTFIELDS 7.17.1
|
||||
CURLOPT_CRLF 7.1
|
||||
CURLOPT_CRLFILE 7.19.0
|
||||
CURLOPT_CURLU 7.63.0
|
||||
CURLOPT_CUSTOMREQUEST 7.1
|
||||
CURLOPT_DEBUGDATA 7.9.6
|
||||
CURLOPT_DEBUGFUNCTION 7.9.6
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue