1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- .\" **************************************************************************
- .\" * _ _ ____ _
- .\" * Project ___| | | | _ \| |
- .\" * / __| | | | |_) | |
- .\" * | (__| |_| | _ <| |___
- .\" * \___|\___/|_| \_\_____|
- .\" *
- .\" * Copyright (C) 1998 - 2020, 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.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_SEEKFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
- .SH NAME
- CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
- .SH SYNOPSIS
- .nf
- #include <curl/curl.h>
- /* These are the return codes for the seek callbacks */
- #define CURL_SEEKFUNC_OK 0
- #define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */
- #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking cannot be done, so
- libcurl might try other means instead */
- int seek_callback(void *userp, curl_off_t offset, int origin);
- CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_callback);
- .SH DESCRIPTION
- Pass a pointer to your callback function, which should match the prototype
- shown above.
- This function gets called by libcurl to seek to a certain position in the
- input stream and can be used to fast forward a file in a resumed upload
- (instead of reading all uploaded bytes with the normal read
- function/callback). It is also called to rewind a stream when data has already
- been sent to the server and needs to be sent again. This may happen when doing
- an HTTP PUT or POST with a multi-pass authentication method, or when an
- existing HTTP connection is reused too late and the server closes the
- connection. The function shall work like fseek(3) or lseek(3) and it gets
- SEEK_SET, SEEK_CUR or SEEK_END as argument for \fIorigin\fP, although libcurl
- currently only passes SEEK_SET.
- \fIuserp\fP is the pointer you set with \fICURLOPT_SEEKDATA(3)\fP.
- The callback function must return \fICURL_SEEKFUNC_OK\fP on success,
- \fICURL_SEEKFUNC_FAIL\fP to cause the upload operation to fail or
- \fICURL_SEEKFUNC_CANTSEEK\fP to indicate that while the seek failed, libcurl
- is free to work around the problem if possible. The latter can sometimes be
- done by instead reading from the input or similar.
- If you forward the input arguments directly to fseek(3) or lseek(3), note that
- the data type for \fIoffset\fP is not the same as defined for curl_off_t on
- many systems!
- .SH DEFAULT
- By default, this is NULL and unused.
- .SH PROTOCOLS
- HTTP, FTP, SFTP
- .SH EXAMPLE
- .nf
- static int seek_cb(void *userp, curl_off_t offset, int origin)
- {
- struct data *d = (struct data *)userp;
- lseek(our_fd, offset, origin);
- return CURL_SEEKFUNC_OK;
- }
- {
- struct data seek_data;
- curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_cb);
- curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, &seek_data);
- }
- .fi
- .SH AVAILABILITY
- Added in 7.18.0
- .SH RETURN VALUE
- Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
- .SH "SEE ALSO"
- .BR CURLOPT_SEEKDATA "(3), " CURLOPT_IOCTLFUNCTION "(3), "
|