xref: /aosp_15_r20/external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.md (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker---
2*6236dae4SAndroid Build Coastguard Workerc: Copyright (C) Daniel Stenberg, <[email protected]>, et al.
3*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl
4*6236dae4SAndroid Build Coastguard WorkerTitle: CURLOPT_IOCTLDATA
5*6236dae4SAndroid Build Coastguard WorkerSection: 3
6*6236dae4SAndroid Build Coastguard WorkerSource: libcurl
7*6236dae4SAndroid Build Coastguard WorkerSee-also:
8*6236dae4SAndroid Build Coastguard Worker  - CURLOPT_IOCTLFUNCTION (3)
9*6236dae4SAndroid Build Coastguard Worker  - CURLOPT_SEEKFUNCTION (3)
10*6236dae4SAndroid Build Coastguard WorkerProtocol:
11*6236dae4SAndroid Build Coastguard Worker  - All
12*6236dae4SAndroid Build Coastguard WorkerAdded-in: 7.12.3
13*6236dae4SAndroid Build Coastguard Worker---
14*6236dae4SAndroid Build Coastguard Worker
15*6236dae4SAndroid Build Coastguard Worker# NAME
16*6236dae4SAndroid Build Coastguard Worker
17*6236dae4SAndroid Build Coastguard WorkerCURLOPT_IOCTLDATA - pointer passed to I/O callback
18*6236dae4SAndroid Build Coastguard Worker
19*6236dae4SAndroid Build Coastguard Worker# SYNOPSIS
20*6236dae4SAndroid Build Coastguard Worker
21*6236dae4SAndroid Build Coastguard Worker~~~c
22*6236dae4SAndroid Build Coastguard Worker#include <curl/curl.h>
23*6236dae4SAndroid Build Coastguard Worker
24*6236dae4SAndroid Build Coastguard WorkerCURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);
25*6236dae4SAndroid Build Coastguard Worker~~~
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker# DESCRIPTION
28*6236dae4SAndroid Build Coastguard Worker
29*6236dae4SAndroid Build Coastguard WorkerPass the *pointer* that is untouched by libcurl and passed as the 3rd
30*6236dae4SAndroid Build Coastguard Workerargument in the ioctl callback set with CURLOPT_IOCTLFUNCTION(3).
31*6236dae4SAndroid Build Coastguard Worker
32*6236dae4SAndroid Build Coastguard Worker# DEFAULT
33*6236dae4SAndroid Build Coastguard Worker
34*6236dae4SAndroid Build Coastguard WorkerNULL
35*6236dae4SAndroid Build Coastguard Worker
36*6236dae4SAndroid Build Coastguard Worker# %PROTOCOLS%
37*6236dae4SAndroid Build Coastguard Worker
38*6236dae4SAndroid Build Coastguard Worker# EXAMPLE
39*6236dae4SAndroid Build Coastguard Worker
40*6236dae4SAndroid Build Coastguard Worker~~~c
41*6236dae4SAndroid Build Coastguard Worker#include <unistd.h> /* for lseek */
42*6236dae4SAndroid Build Coastguard Worker
43*6236dae4SAndroid Build Coastguard Workerstruct data {
44*6236dae4SAndroid Build Coastguard Worker  int fd; /* our file descriptor */
45*6236dae4SAndroid Build Coastguard Worker};
46*6236dae4SAndroid Build Coastguard Worker
47*6236dae4SAndroid Build Coastguard Workerstatic curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp)
48*6236dae4SAndroid Build Coastguard Worker{
49*6236dae4SAndroid Build Coastguard Worker  struct data *io = (struct data *)clientp;
50*6236dae4SAndroid Build Coastguard Worker  if(cmd == CURLIOCMD_RESTARTREAD) {
51*6236dae4SAndroid Build Coastguard Worker    lseek(io->fd, 0, SEEK_SET);
52*6236dae4SAndroid Build Coastguard Worker    return CURLIOE_OK;
53*6236dae4SAndroid Build Coastguard Worker  }
54*6236dae4SAndroid Build Coastguard Worker  return CURLIOE_UNKNOWNCMD;
55*6236dae4SAndroid Build Coastguard Worker}
56*6236dae4SAndroid Build Coastguard Workerint main(void)
57*6236dae4SAndroid Build Coastguard Worker{
58*6236dae4SAndroid Build Coastguard Worker  struct data ioctl_data;
59*6236dae4SAndroid Build Coastguard Worker  CURL *curl = curl_easy_init();
60*6236dae4SAndroid Build Coastguard Worker  if(curl) {
61*6236dae4SAndroid Build Coastguard Worker    curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_callback);
62*6236dae4SAndroid Build Coastguard Worker    curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &ioctl_data);
63*6236dae4SAndroid Build Coastguard Worker  }
64*6236dae4SAndroid Build Coastguard Worker}
65*6236dae4SAndroid Build Coastguard Worker~~~
66*6236dae4SAndroid Build Coastguard Worker
67*6236dae4SAndroid Build Coastguard Worker# DEPRECATED
68*6236dae4SAndroid Build Coastguard Worker
69*6236dae4SAndroid Build Coastguard WorkerDeprecated since 7.18.0.
70*6236dae4SAndroid Build Coastguard Worker
71*6236dae4SAndroid Build Coastguard Worker# %AVAILABILITY%
72*6236dae4SAndroid Build Coastguard Worker
73*6236dae4SAndroid Build Coastguard Worker# RETURN VALUE
74*6236dae4SAndroid Build Coastguard Worker
75*6236dae4SAndroid Build Coastguard WorkerReturns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
76