blob: 1cdb170c7b008146ba79a26170764e5664a1e375 [file] [log] [blame]
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -07001.\" **************************************************************************
2.\" * _ _ ____ _
3.\" * Project ___| | | | _ \| |
4.\" * / __| | | | |_) | |
5.\" * | (__| |_| | _ <| |___
6.\" * \___|\___/|_| \_\_____|
7.\" *
Alex Deymo8f1a2142016-06-28 14:49:26 -07008.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -07009.\" *
10.\" * This software is licensed as described in the file COPYING, which
11.\" * you should have received as part of this distribution. The terms
Alex Deymo8f1a2142016-06-28 14:49:26 -070012.\" * are also available at https://curl.haxx.se/docs/copyright.html.
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -070013.\" *
14.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15.\" * copies of the Software, and permit persons to whom the Software is
16.\" * furnished to do so, under the terms of the COPYING file.
17.\" *
18.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19.\" * KIND, either express or implied.
20.\" *
21.\" **************************************************************************
22.\"
Elliott Hughescac39802018-04-27 16:19:43 -070023.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.59.0" "curl_easy_setopt options"
Elliott Hughes82be86d2017-09-20 17:00:17 -070024
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -070025.SH NAME
26CURLOPT_RANGE \- set byte range to request
27.SH SYNOPSIS
28#include <curl/curl.h>
29
30CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);
31.SH DESCRIPTION
32Pass a char * as parameter, which should contain the specified range you want
33to retrieve. It should be in the format "X-Y", where either X or Y may be left
34out and X and Y are byte indexes.
35
36HTTP transfers also support several intervals, separated with commas as in
37\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
38server to send the response document in pieces (using standard MIME separation
Alex Deymo8f1a2142016-06-28 14:49:26 -070039techniques). Unfortunately, the HTTP standard (RFC 7233 section 3.1) allows
40servers to ignore range requests so even when you set \fICURLOPT_RANGE(3)\fP
41for a request, you may end up getting the full response sent back.
42
43For RTSP, the formatting of a range should follow RFC2326 Section 12.29. For
44RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should be given in
45npt, utc, or smpte formats.
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -070046
47Pass a NULL to this option to disable the use of ranges.
Elliott Hughes82be86d2017-09-20 17:00:17 -070048
49The application does not have to keep the string around after setting this
50option.
Bertrand SIMONNETe6cd7382015-07-01 15:39:44 -070051.SH DEFAULT
52NULL
53.SH PROTOCOLS
54HTTP, FTP, FILE, RTSP and SFTP.
55.SH EXAMPLE
56.nf
57CURL *curl = curl_easy_init();
58if(curl) {
59 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
60
61 /* get the first 200 bytes */
62 curl_easy_setopt(curl, CURLOPT_RANGE, "0-199");
63
64 /* Perform the request */
65 curl_easy_perform(curl);
66}
67.fi
68.SH AVAILABILITY
69FILE since 7.18.0, RTSP since 7.20.0
70.SH RETURN VALUE
71Returns CURLE_OK on success or
72CURLE_OUT_OF_MEMORY if there was insufficient heap space.
73.SH "SEE ALSO"
74.BR CURLOPT_RESUME_FROM "(3), "