curl_easy_setopt man page on UnixWare

Man page or keyword search:  
man Server   3616 pages
apropos Keyword Search (all sections)
Output format
UnixWare logo
[printable version]



curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

NAME
     curl_easy_setopt - set options for a curl easy handle

SYNOPSIS
     #include <curl/curl.h>

     CURLcode curl_easy_setopt(CURL *handle,  CURLoption  option,
     parameter);

DESCRIPTION
     curl_easy_setopt() is used to tell libcurl how to behave. By
     using  the	 appropriate options to curl_easy_setopt, you can
     change libcurl's behavior.	 All options  are  set	with  the
     option  followed  by  a  parameter.  That parameter can be a
     long, a function pointer, an object pointer or a curl_off_t,
     depending	on  what  the  specific option expects. Read this
     manual carefully as bad input values may  cause  libcurl  to
     behave  badly!  You can only set one option in each function
     call. A typical  application  uses	 many  curl_easy_setopt()
     calls in the setup phase.

     Options set with this function call are valid for all forth-
     coming  transfers	performed using this handle.  The options
     are not in any way reset between transfers, so if	you  want
     subsequent transfers with different options, you must change
     them between the transfers. You  can  optionally  reset  all
     options back to internal default with curl_easy_reset(3).

     Strings passed to libcurl as 'char *' arguments, will not be
     copied  by	 the library. Instead you should keep them avail-
     able until libcurl no longer needs them. Failing  to  do  so
     will  cause  very odd behavior or even crashes. libcurl will
     need them until you call curl_easy_cleanup(3) or you set the
     same option again to use a different pointer.

     The handle is the return code from	 a  curl_easy_init(3)  or
     curl_easy_duphandle(3) call.

BEHAVIOR OPTIONS
     CURLOPT_VERBOSE
	  Set the parameter to non-zero to  get	 the  library  to
	  display  a  lot of verbose information about its opera-
	  tions. Very useful for libcurl and/or	 protocol  debug-
	  ging and understanding. The verbose information will be
	  sent to stderr, or the stream set with CURLOPT_STDERR.

	  You hardly ever want this set in  production	use,  you
	  will	almost	always	want  this  when you debug/report
	  problems. Another neat  option  for  debugging  is  the
	  CURLOPT_DEBUGFUNCTION.

     CURLOPT_HEADER

libcurl 7.14.2	    Last change: 27 Oct 2005			1

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  A non-zero parameter tells the library to  include  the
	  header  in  the  body output. This is only relevant for
	  protocols that actually have headers preceding the data
	  (like HTTP).

     CURLOPT_NOPROGRESS
	  A non-zero parameter tells the library to shut off  the
	  built-in progress meter completely.

	  Future versions of libcurl is likely to  not	have  any
	  built-in progress meter at all.

     CURLOPT_NOSIGNAL
	  Pass a long. If it is non-zero, libcurl  will	 not  use
	  any functions that install signal handlers or any func-
	  tions that cause signals to be  sent	to  the	 process.
	  This option is mainly here to allow multi-threaded unix
	  applications to still set/use all timeout options  etc,
	  without risking getting signals.  (Added in 7.10)

	  Consider building libcurl with ares support  to  enable
	  asynchronous	DNS lookups. It enables nice timeouts for
	  name resolves without signals.

CALLBACK OPTIONS
     CURLOPT_WRITEFUNCTION
	  Function pointer that should match the following proto-
	  type:	 size_t	 function( void *ptr, size_t size, size_t
	  nmemb, void *stream); This function gets called by lib-
	  curl as soon as there is data received that needs to be
	  saved. The size of the data pointed to by ptr	 is  size
	  multiplied  with nmemb, it will not be zero terminated.
	  Return the number of bytes actually taken care  of.  If
	  that	amount	differs	 from  the  amount passed to your
	  function, it'll signal an error to the library  and  it
	  will abort the transfer and return CURLE_WRITE_ERROR.

	  This function may be called with zero bytes data if the
	  transfered file is empty.

	  Set this option to NULL to  get  the	internal  default
	  function.  The internal default function will write the
	  data to the FILE * given with CURLOPT_WRITEDATA.

	  Set the  stream  argument  with  the	CURLOPT_WRITEDATA
	  option.

	  The callback function will be passed as  much	 data  as
	  possible  in	all invokes, but you cannot possibly make
	  any  assumptions.  It	 may  be  one  byte,  it  may  be
	  thousands.  The  maximum  amount  of	data  that can be
	  passed to the write callback is defined in  the  curl.h

libcurl 7.14.2	    Last change: 27 Oct 2005			2

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  header file: CURL_MAX_WRITE_SIZE.

     CURLOPT_WRITEDATA
	  Data pointer to pass to the file write function. If you
	  use  the  CURLOPT_WRITEFUNCTION  option,  this  is  the
	  pointer you'll get as input. If you don't use	 a  call-
	  back,	 you  must  pass  a 'FILE *' as libcurl will pass
	  this to fwrite() when writing data.

	  The internal CURLOPT_WRITEFUNCTION will write the  data
	  to  the  FILE * given with this option, or to stdout if
	  this option hasn't been set.

	  If you're using libcurl as a win32 DLL,  you	MUST  use
	  the CURLOPT_WRITEFUNCTION if you set this option or you
	  will experience crashes.

	  This	option	is  also  known	 with  the   older   name
	  CURLOPT_FILE, the name CURLOPT_WRITEDATA was introduced
	  in 7.9.7.

     CURLOPT_READFUNCTION
	  Function pointer that should match the following proto-
	  type:	 size_t	 function( void *ptr, size_t size, size_t
	  nmemb, void *stream); This function gets called by lib-
	  curl	as soon as it needs to read data in order to send
	  it to the peer. The data area pointed at by the pointer
	  ptr  may  be	filled	with at most size multiplied with
	  nmemb number of bytes. Your function	must  return  the
	  actual  number  of bytes that you stored in that memory
	  area.	 Returning  0  will  signal  end-of-file  to  the
	  library and cause it to stop the current transfer.

	  If you stop the current transfer by returning	 0  "pre-
	  maturely" (i.e before the server expected it, like when
	  you've told you will upload N bytes and you upload less
	  than	N  bytes),  you	 may  experience  that the server
	  "hangs" waiting for the rest of  the	data  that  won't
	  come.

	  The read callback  may  return  CURL_READFUNC_ABORT  to
	  stop	the current operation immediately, resulting in a
	  CURLE_ABORTED_BY_CALLBACK error code from the	 transfer
	  (Added in 7.12.1)

	  If you set the callback pointer to NULL, or doesn't set
	  it  at  all, the default internal read function will be
	  used. It is simply doing  an	fread()	 on  the  FILE	*
	  stream set with CURLOPT_READDATA.

     CURLOPT_READDATA
	  Data pointer to pass to the file read function. If  you

libcurl 7.14.2	    Last change: 27 Oct 2005			3

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  use	the  CURLOPT_READFUNCTION  option,  this  is  the
	  pointer you'll get as input. If  you	don't  specify	a
	  read	callback but instead rely on the default internal
	  read function, this data must be a valid readable  FILE
	  *.

	  If you're using libcurl as a win32 DLL, you MUST use	a
	  CURLOPT_READFUNCTION if you set this option.

	  This	option	is  also  known	 with  the   older   name
	  CURLOPT_INFILE,  the	name  CURLOPT_READDATA was intro-
	  duced in 7.9.7.

     CURLOPT_IOCTLFUNCTION
	  Function    pointer	 that	 should	    match     the
	  curl_ioctl_callback  prototype  found in <curl/curl.h>.
	  This function gets called  by	 libcurl  when	something
	  special  I/O-related	needs to be done that the library
	  can't do by itself. For now, rewinding  the  read  data
	  stream is the only action it can request. The rewinding
	  of the read data stream may be necessary when	 doing	a
	  HTTP	PUT  or	 POST  with  a	multi-pass authentication
	  method.  (Opion added in 7.12.3)

     CURLOPT_IOCTLDATA
	  Pass a pointer that will be untouched	 by  libcurl  and
	  passed  as  the  3rd argument in the ioctl callback set
	  with CURLOPT_IOCTLFUNCTION.  (Option added in 7.12.3)

     CURLOPT_PROGRESSFUNCTION
	  Function    pointer	 that	 should	    match     the
	  curl_progress_callback      prototype	     found     in
	  <curl/curl.h>. This function	gets  called  by  libcurl
	  instead  of  its  internal  equivalent  with a frequent
	  interval during data transfer.  Unknown/unused argument
	  values  will	be set to zero (like if you only download
	  data, the upload size will remain 0). Returning a  non-
	  zero	value  from  this  callback will cause libcurl to
	  abort	      the	transfer	and	   return
	  CURLE_ABORTED_BY_CALLBACK.

	  CURLOPT_NOPROGRESS must be set to FALSE  to  make  this
	  function actually get called.

     CURLOPT_PROGRESSDATA
	  Pass a pointer that will be untouched	 by  libcurl  and
	  passed  as  the first argument in the progress callback
	  set with CURLOPT_PROGRESSFUNCTION.

     CURLOPT_HEADERFUNCTION
	  Function pointer that should match the following proto-
	  type:	 size_t	 function( void *ptr, size_t size, size_t

libcurl 7.14.2	    Last change: 27 Oct 2005			4

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  nmemb, void *stream);. This  function	 gets  called  by
	  libcurl  as  soon  as	 it has received header data. The
	  header callback will be called once for each header and
	  only	complete  header lines are passed on to the call-
	  back. Parsing headers should be easy enough using this.
	  The  size  of the data pointed to by ptr is size multi-
	  plied with nmemb. Do not assume that the header line is
	  zero	terminated!  The  pointer named stream is the one
	  you set with the CURLOPT_WRITEHEADER option. The  call-
	  back	function must return the number of bytes actually
	  taken care of, or return -1  to  signal  error  to  the
	  library  (it will cause it to abort the transfer with a
	  CURLE_WRITE_ERROR return code).

	  Since 7.14.1: When a server  sends  a	 chunked  encoded
	  transfer,  it	 may  contain  a trailer. That trailer is
	  identical to a HTTP header and if  such  a  trailer  is
	  received  it	is  passed  to the application using this
	  callback as well. There are several ways to  detect  it
	  being a trailer and not an ordinary header: 1) it comes
	  after the response-body. 2) it comes	after  the  final
	  header  line	(CR  LF)  3)  a Trailer: header among the
	  response-headers mention what header to expect  in  the
	  trailer.

     CURLOPT_WRITEHEADER
	  (This option is also known as CURLOPT_HEADERDATA)  Pass
	  a  pointer  to  be used to write the header part of the
	  received data to. If you don't use your own callback to
	  take	care of the writing, this must be a valid FILE *.
	  See also the CURLOPT_HEADERFUNCTION option above on how
	  to set a custom get-all-headers callback.

     CURLOPT_DEBUGFUNCTION
	  Function pointer that should match the following proto-
	  type:	 int  curl_debug_callback (CURL *, curl_infotype,
	  char *, size_t, void *); CURLOPT_DEBUGFUNCTION replaces
	  the  standard	 debug function used when CURLOPT_VERBOSE
	  is in effect. This callback receives debug information,
	  as  specified	 with  the  curl_infotype  argument. This
	  function must return 0.  The data  pointed  to  by  the
	  char	*  passed  to this function WILL NOT be zero ter-
	  minated, but will be exactly of the size as told by the
	  size_t argument.

	  Available curl_infotype values:

	  CURLINFO_TEXT
	       The data is informational text.

	  CURLINFO_HEADER_IN
	       The data is header (or header-like) data	 received

libcurl 7.14.2	    Last change: 27 Oct 2005			5

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	       from the peer.

	  CURLINFO_HEADER_OUT
	       The data is header (or header-like) data	 sent  to
	       the peer.

	  CURLINFO_DATA_IN
	       The data is protocol data received from the peer.

	  CURLINFO_DATA_OUT
	       The data is protocol data sent to the peer.

     CURLOPT_DEBUGDATA
	  Pass a pointer to whatever you want passed in	 to  your
	  CURLOPT_DEBUGFUNCTION in the last void * argument. This
	  pointer is not used by libcurl, it is	 only  passed  to
	  the callback.

     CURLOPT_SSL_CTX_FUNCTION
	  Function pointer that should match the following proto-
	  type: CURLcode sslctxfun(CURL *curl, void *sslctx, void
	  *parm); This	function  gets	called	by  libcurl  just
	  before  the  initialization  of an SSL connection after
	  having processed all other SSL related options to  give
	  a last chance to an application to modify the behaviour
	  of openssl's ssl initialization. The	sslctx	parameter
	  is  actually	a  pointer  to	an openssl SSL_CTX. If an
	  error is returned no attempt to establish a  connection
	  is made and the perform operation will return the error
	  code from this callback function.  Set the  parm  argu-
	  ment	with the CURLOPT_SSL_CTX_DATA option. This option
	  was introduced in 7.11.0.

	  This function will get called on  all	 new  connections
	  made	to  a  server,	during	the  SSL negotiation. The
	  SSL_CTX pointer will be a new one every time.

	  To use this properly, a non-trivial amount of knowledge
	  of the openssl libraries is necessary. Using this func-
	  tion allows for example to use openssl callbacks to add
	  additional  validation  code for certificates, and even
	  to change the actual URI of an HTTPS	request	 (example
	  used	in  the	 lib509 test case).  See also the example
	  section for a replacement of the key,	 certificate  and
	  trust file settings.

     CURLOPT_SSL_CTX_DATA
	  Data pointer to pass to the ssl context callback set by
	  the	option	 CURLOPT_SSL_CTX_FUNCTION,  this  is  the
	  pointer you'll get as third parameter, otherwise  NULL.
	  (Added in 7.11.0)

libcurl 7.14.2	    Last change: 27 Oct 2005			6

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

ERROR OPTIONS
     CURLOPT_ERRORBUFFER
	  Pass a char * to a buffer that the  libcurl  may  store
	  human	 readable  error  messages  in.	 This may be more
	  helpful   than    just    the	   return    code    from
	  curl_easy_perform.   The   buffer   must  be	at  least
	  CURL_ERROR_SIZE big.

	  Use CURLOPT_VERBOSE and CURLOPT_DEBUGFUNCTION to better
	  debug/trace why errors happen.

	  If the library does not return an error, the buffer may
	  not  have  been touched. Do not rely on the contents in
	  those cases.

     CURLOPT_STDERR
	  Pass a FILE * as parameter. Tell libcurl  to	use  this
	  stream  instead  of  stderr  when  showing the progress
	  meter and displaying CURLOPT_VERBOSE data.

     CURLOPT_FAILONERROR
	  A non-zero parameter tells the library to fail silently
	  if  the  HTTP	 code returned is equal to or larger than
	  300. The default action would be  to	return	the  page
	  normally, ignoring that code.

NETWORK OPTIONS
     CURLOPT_URL
	  The actual URL to deal with. The parameter should be	a
	  char	*  to  a  zero terminated string. The string must
	  remain present until curl no longer  needs  it,  as  it
	  doesn't copy the string.

	  If the given URL lacks the protocol part ("http://"  or
	  "ftp://"  etc), it will attempt to guess which protocol
	  to use based on the given host name. If the given  pro-
	  tocol	 of  the  set  URL is not supported, libcurl will
	  return on error (CURLE_UNSUPPORTED_PROTOCOL)	when  you
	  call curl_easy_perform(3) or curl_multi_perform(3). Use
	  curl_version_info(3) for detailed info on which  proto-
	  cols that are supported.

	  CURLOPT_URL is the only option that must be set  before
	  curl_easy_perform(3) is called.

     CURLOPT_PROXY
	  Set HTTP proxy to use. The parameter should be a char *
	  to  a	 zero  terminated string holding the host name or
	  dotted IP address.  To  specify  port	 number	 in  this
	  string, append :[port] to the end of the host name. The
	  proxy string may be prefixed with  [protocol]://  since

libcurl 7.14.2	    Last change: 27 Oct 2005			7

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  any  such  prefix  will  be  ignored.	 The proxy's port
	  number may optionally be specified  with  the	 separate
	  option CURLOPT_PROXYPORT.

	  When you tell the library to use an HTTP proxy, libcurl
	  will	transparently  convert operations to HTTP even if
	  you specify an FTP URL etc. This may have an impact  on
	  what other features of the library you can use, such as
	  CURLOPT_QUOTE and similar FTP specifics that don't work
	  unless  you tunnel through the HTTP proxy. Such tunnel-
	  ing is activated with CURLOPT_HTTPPROXYTUNNEL.

	  libcurl respects the environment variables  http_proxy,
	  ftp_proxy,  all_proxy	 etc, if any of those is set. The
	  CURLOPT_PROXY option does however override any possibly
	  set environment variables.

	  Starting with 7.14.1, the  proxy  host  string  can  be
	  specified  the  exact same way as the proxy environment
	  variables, include protocol prefix (http://) and embed-
	  ded user + password.

     CURLOPT_PROXYPORT
	  Pass a long with this option to set the proxy	 port  to
	  connect  to  unless it is specified in the proxy string
	  CURLOPT_PROXY.

     CURLOPT_PROXYTYPE
	  Pass a long with this option to set type of the  proxy.
	  Available  options  for  this	 are  CURLPROXY_HTTP  and
	  CURLPROXY_SOCKS5, with  the  HTTP  one  being	 default.
	  (Added in 7.10)

     CURLOPT_HTTPPROXYTUNNEL
	  Set the parameter to non-zero to  get	 the  library  to
	  tunnel all operations through a given HTTP proxy. There
	  is a big difference between using a proxy and to tunnel
	  through  it.	If  you	 don't	know what this means, you
	  probably don't want this tunneling option.

     CURLOPT_INTERFACE
	  Pass a char * as parameter. This set the interface name
	  to  use  as outgoing network interface. The name can be
	  an interface name, an IP address or a host name.

     CURLOPT_DNS_CACHE_TIMEOUT
	  Pass a long, this sets the  timeout  in  seconds.  Name
	  resolves  will  be  kept  in	memory for this number of
	  seconds. Set to zero (0) to completely disable caching,
	  or set to -1 to make the cached entries remain forever.
	  By default, libcurl caches this info for 60 seconds.

libcurl 7.14.2	    Last change: 27 Oct 2005			8

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

     CURLOPT_DNS_USE_GLOBAL_CACHE
	  Pass a long. If the value is non-zero, it tells curl to
	  use  a  global DNS cache that will survive between easy
	  handle creations and deletions. This is not thread-safe
	  and this will use a global variable.

	  WARNING: this option is considered obsolete. Stop using
	  it.  Switch  over to using the share interface instead!
	  See CURLOPT_SHARE and curl_share_init(3).

     CURLOPT_BUFFERSIZE
	  Pass a long specifying your preferred size  (in  bytes)
	  for  the  receive buffer in libcurl.	The main point of
	  this would be that the write callback gets called  more
	  often	 and with smaller chunks. This is just treated as
	  a request, not an order. You cannot  be  guaranteed  to
	  actually get the given size. (Added in 7.10)

	  This	size  is  by  default  set  as	big  as	 possible
	  (CURL_MAX_WRITE_SIZE),  so  it  only makse sense to use
	  this option if you want it smaller.

     CURLOPT_PORT
	  Pass a long specifying what remote port number to  con-
	  nect to, instead of the one specified in the URL or the
	  default port for the used protocol.

     CURLOPT_TCP_NODELAY
	  Pass a long specifying whether the  TCP_NODELAY  option
	  should  be  set  or  cleared	(1 = set, 0 = clear). The
	  option is cleared by default. This will have no  effect
	  after the connection has been established.

	  Setting this option will disable TCP's Nagle algorithm.
	  The purpose of this algorithm is to try to minimize the
	  number of small packets on the  network  (where  "small
	  packets"  means TCP segments less than the Maximum Seg-
	  ment Size (MSS) for the network).

	  Maximizing the amount of data sent per TCP  segment  is
	  good	because	 it  amortizes	the overhead of the send.
	  However, in some cases (most notably telnet or  rlogin)
	  small	 segments may need to be sent without delay. This
	  is less efficient than sending larger amounts	 of  data
	  at a time, and can contribute to congestion on the net-
	  work if overdone.

NAMES and PASSWORDS OPTIONS (Authentication)
     CURLOPT_NETRC
	  This	parameter  controls  the  preference  of  libcurl
	  between  using  user	names  and  passwords  from  your
	  ~/.netrc file, relative to user names and passwords  in

libcurl 7.14.2	    Last change: 27 Oct 2005			9

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  the URL supplied with CURLOPT_URL.

	  libcurl uses a user  name  (and  supplied  or	 prompted
	  password)  supplied  with CURLOPT_USERPWD in preference
	  to any of the options controlled by this parameter.

	  Pass a long, set to one of the values described below.

	  CURL_NETRC_OPTIONAL
	       The use of your ~/.netrc	 file  is  optional,  and
	       information  in	the  URL is to be preferred.  The
	       file will be scanned with the host and  user  name
	       (to find the password only) or with the host only,
	       to find the first user  name  and  password  after
	       that machine, which ever information is not speci-
	       fied in the URL.

	       Undefined values of  the	 option	 will  have  this
	       effect.

	  CURL_NETRC_IGNORED
	       The library will ignore the file and use only  the
	       information in the URL.

	       This is the default.

	  CURL_NETRC_REQUIRED
	       This value tells the library that use of the  file
	       is required, to ignore the information in the URL,
	       and to search the file with the host only.
     Only machine name, user name and  password	 are  taken  into
     account (init macros and similar things aren't supported).

     libcurl does not verify that the file has the  correct  pro-
     perties  set  (as	the  standard  Unix  ftp client does). It
     should only be readable by user.

     CURLOPT_NETRC_FILE
	  Pass a char * as parameter, pointing	to  a  zero  ter-
	  minated  string  containing  the  full path name to the
	  file you want libcurl to use as .netrc  file.	 If  this
	  option  is  omitted,	and CURLOPT_NETRC is set, libcurl
	  will attempt to find the a .netrc file in  the  current
	  user's home directory. (Added in 7.10.9)

     CURLOPT_USERPWD
	  Pass a char *	 as  parameter,	 which	should	be  [user
	  name]:[password]   to	  use  for  the	 connection.  Use
	  CURLOPT_HTTPAUTH to decide authentication method.

	  When using NTLM, you can set domain by prepending it to
	  the user name and separating the domain and name with a

libcurl 7.14.2	    Last change: 27 Oct 2005		       10

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  forward  (/)	or  backward  slash   (\).   Like   this:
	  "domain/user:password"  or "domain\user:password". Some
	  HTTP servers (on Windows) support this style	even  for
	  Basic authentication.

	  When using  HTTP  and	 CURLOPT_FOLLOWLOCATION,  libcurl
	  might	 perform  several  requests to possibly different
	  hosts. libcurl will only send this  user  and	 password
	  information  to  hosts  using	 the  initial  host  name
	  (unless CURLOPT_UNRESTRICTED_AUTH is set), so	 if  lib-
	  curl	follows locations to other hosts it will not send
	  the user and password to those.  This	 is  enforced  to
	  prevent accidental information leakage.

     CURLOPT_PROXYUSERPWD
	  Pass a char *	 as  parameter,	 which	should	be  [user
	  name]:[password]  to use for the connection to the HTTP
	  proxy.  Use CURLOPT_PROXYAUTH to decide  authentication
	  method.

     CURLOPT_HTTPAUTH
	  Pass a long as parameter, which is set to a bitmask, to
	  tell	libcurl what authentication method(s) you want it
	  to use. The available bits are listed	 below.	 If  more
	  than	one bit is set, libcurl will first query the site
	  to see what authentication methods it supports and then
	  pick	the  best  one	you  allow  it	to  use. For some
	  methods, this will induce an extra network  round-trip.
	  Set	the   actual   name   and   password   with   the
	  CURLOPT_USERPWD option. (Added in 7.10.6)

	  CURLAUTH_BASIC
	       HTTP Basic authentication.  This	 is  the  default
	       choice, and the only method that is in wide-spread
	       use and supported virtually  everywhere.	 This  is
	       sending	the  user name and password over the net-
	       work in plain text, easily captured by others.

	  CURLAUTH_DIGEST
	       HTTP Digest authentication.  Digest authentication
	       is  defined in RFC2617 and is a more secure way to
	       do authentication over public  networks	than  the
	       regular old-fashioned Basic method.

	  CURLAUTH_GSSNEGOTIATE
	       HTTP  GSS-Negotiate   authentication.   The   GSS-
	       Negotiate (also known as plain "Negotiate") method
	       was designed by Microsoft and is used in their web
	       applications.  It  is primarily meant as a support
	       for Kerberos5 authentication but may be also  used
	       along  with  another  authentication  methods. For
	       more  information  see  IETF  draft  draft-brezak-

libcurl 7.14.2	    Last change: 27 Oct 2005		       11

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	       spnego-http-04.txt.

	       You need to build libcurl with a suitable  GSS-API
	       library for this to work.

	  CURLAUTH_NTLM
	       HTTP NTLM authentication. A  proprietary	 protocol
	       invented	  and	used  by  Microsoft.  It  uses	a
	       challenge-response and  hash  concept  similar  to
	       Digest,	to prevent the password from being eaves-
	       dropped.

	       You need to build libcurl with OpenSSL support for
	       this option to work, or build libcurl on Windows.

	  CURLAUTH_ANY
	       This is a convenience macro that sets all bits and
	       thus  makes  libcurl  pick  any it finds suitable.
	       libcurl will automatically select the one it finds
	       most secure.

	  CURLAUTH_ANYSAFE
	       This is a convenience macro  that  sets	all  bits
	       except  Basic  and  thus makes libcurl pick any it
	       finds suitable. libcurl will automatically  select
	       the one it finds most secure.

     CURLOPT_PROXYAUTH
	  Pass a long as parameter, which is set to a bitmask, to
	  tell	libcurl what authentication method(s) you want it
	  to use for your proxy authentication.	 If more than one
	  bit  is  set,	 libcurl will first query the site to see
	  what authentication methods it supports and  then  pick
	  the  best  one  you  allow it to use. For some methods,
	  this will induce an extra network round-trip.	 Set  the
	  actual  name and password with the CURLOPT_PROXYUSERPWD
	  option.  The	bitmask	 can  be  constructed  by  or'ing
	  together the bits listed above for the CURLOPT_HTTPAUTH
	  option. As of this writing, only Basic, Digest and NTLM
	  work. (Added in 7.10.7)

HTTP OPTIONS
     CURLOPT_AUTOREFERER
	  Pass a non-zero parameter to enable this. When enabled,
	  libcurl  will	 automatically	set the Referer: field in
	  requests where it follows a Location:	 redirect.

     CURLOPT_ENCODING
	  Sets the contents of the Accept-Encoding:  header  sent
	  in  an HTTP request, and enables decoding of a response
	  when a Content-Encoding:  header  is	received.   Three
	  encodings  are supported: identity, which does nothing,

libcurl 7.14.2	    Last change: 27 Oct 2005		       12

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  deflate which	 requests  the	server	to  compress  its
	  response  using  the	zlib  algorithm,  and  gzip which
	  requests the gzip algorithm.	If a  zero-length  string
	  is  set, then an Accept-Encoding: header containing all
	  supported encodings is sent.

	  This is a request, not an order; the server may or  may
	  not  do  it.	 This option must be set (to any non-NULL
	  value) or else any unsolicited  encoding  done  by  the
	  server    is	  ignored.    See    the   special   file
	  lib/README.encoding for details.

     CURLOPT_FOLLOWLOCATION
	  A non-zero parameter tells the library  to  follow  any
	  Location:  header  that  the server sends as part of an
	  HTTP header.

	  This means that  the	library	 will  re-send	the  same
	  request  on  the  new location and follow new Location:
	  headers all the way until  no	 more  such  headers  are
	  returned.  CURLOPT_MAXREDIRS	can  be used to limit the
	  number of redirects libcurl will follow.

     CURLOPT_UNRESTRICTED_AUTH
	  A non-zero parameter tells the library it can	 continue
	  to  send  authentication (user+password) when following
	  locations, even when hostname changed. This  option  is
	  meaningful only when setting CURLOPT_FOLLOWLOCATION.

     CURLOPT_MAXREDIRS
	  Pass a long. The set number  will  be	 the  redirection
	  limit.  If  that  many redirections have been followed,
	  the	 next	 redirect    will    cause    an    error
	  (CURLE_TOO_MANY_REDIRECTS).	This  option  only  makes
	  sense if the CURLOPT_FOLLOWLOCATION is used at the same
	  time.	 Added	in  7.15.1:   Setting the limit to 0 will
	  make libcurl refuse any redirect. Set it to -1  for  an
	  infinite number of redirects (which is the default)

     CURLOPT_PUT
	  A non-zero parameter tells the library to use HTTP  PUT
	  to   transfer	  data.	 The  data  should  be	set  with
	  CURLOPT_READDATA and CURLOPT_INFILESIZE.

	  This option is deprecated  and  starting  with  version
	  7.12.1 you should instead use CURLOPT_UPLOAD.

     CURLOPT_POST
	  A non-zero parameter tells the library to do a  regular
	  HTTP	post.  This  will also make the library use the a
	  "Content-Type:       application/x-www-form-urlencoded"
	  header.  (This  is  by  far the most commonly used POST

libcurl 7.14.2	    Last change: 27 Oct 2005		       13

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  method).

	  Use the CURLOPT_POSTFIELDS option to specify what  data
	  to post and CURLOPT_POSTFIELDSIZE to set the data size.

	  Optionally, you can provide  data  to	 POST  using  the
	  CURLOPT_READFUNCTION	and  CURLOPT_READDATA options but
	  then you must make sure to not  set  CURLOPT_POSTFIELDS
	  to  anything but NULL. When providing data with a call-
	  back, you must  transmit  it	using  chunked	transfer-
	  encoding  or you must set the size of the data with the
	  CURLOPT_POSTFIELDSIZE option.

	  You can override the default POST Content-Type:  header
	  by setting your own with CURLOPT_HTTPHEADER.

	  Using POST with HTTP 1.1 implies the use of a	 "Expect:
	  100-continue" header.	 You can disable this header with
	  CURLOPT_HTTPHEADER as usual.

	  If you use POST to a HTTP 1.1 server, you can send data
	  without  knowing  the	 size before starting the POST if
	  you use chunked encoding. You enable this by	adding	a
	  header    like    "Transfer-Encoding:	  chunked"   with
	  CURLOPT_HTTPHEADER. With HTTP 1.0  or	 without  chunked
	  transfer, you must specify the size in the request.

	  When setting CURLOPT_POST to a non-zero value, it  will
	  automatically set CURLOPT_NOBODY to 0 (since 7.14.1).

	  If you issue a POST request and then	want  to  make	a
	  HEAD	or  GET	 using	the same re-used handle, you must
	  explictly set the new request type using CURLOPT_NOBODY
	  or CURLOPT_HTTPGET or similar.

     CURLOPT_POSTFIELDS
	  Pass a char * as parameter, which should  be	the  full
	  data	to  post in an HTTP POST operation. You must make
	  sure that the data is formatted the way  you	want  the
	  server  to  receive  it.  libcurl  will  not convert or
	  encode it for you. Most web servers  will  assume  this
	  data to be url-encoded. Take note.

	  This POST is a normal application/x-www-form-urlencoded
	  kind (and libcurl will set that Content-Type by default
	  when this option is used), which is the  most	 commonly
	  used	one  by	 HTML  forms.  See also the CURLOPT_POST.
	  Using CURLOPT_POSTFIELDS implies CURLOPT_POST.

	  Using POST with HTTP 1.1 implies the use of a	 "Expect:
	  100-continue" header.	 You can disable this header with
	  CURLOPT_HTTPHEADER as usual.

libcurl 7.14.2	    Last change: 27 Oct 2005		       14

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  To make multipart/formdata posts  (aka  rfc1867-posts),
	  check out the CURLOPT_HTTPPOST option.

     CURLOPT_POSTFIELDSIZE
	  If you want to post data to the server without  letting
	  libcurl  do  a  strlen() to measure the data size, this
	  option must be used. When this option is used	 you  can
	  post	fully  binary  data, which otherwise is likely to
	  fail. If this size is set to -1, the library	will  use
	  strlen() to get the size.

     CURLOPT_POSTFIELDSIZE_LARGE
	  Pass a curl_off_t as parameter. Use  this  to	 set  the
	  size	of the CURLOPT_POSTFIELDS data to prevent libcurl
	  from doing strlen() on the data to figure out the size.
	  This	  is	the    large	file   version	 of   the
	  CURLOPT_POSTFIELDSIZE option. (Added in 7.11.1)

     CURLOPT_HTTPPOST
	  Tells libcurl you want a multipart/formdata  HTTP  POST
	  to be made and you instruct what data to pass on to the
	  server.   Pass  a  pointer  to   a   linked	list   of
	  curl_httppost	 structs  as parameter. . The easiest way
	  to create such a list, is  to	 use  curl_formadd(3)  as
	  documented.  The  data  in this list must remain intact
	  until	 you  close   this   curl   handle   again   with
	  curl_easy_cleanup(3).

	  Using POST with HTTP 1.1 implies the use of a	 "Expect:
	  100-continue" header.	 You can disable this header with
	  CURLOPT_HTTPHEADER as usual.

	  When setting CURLOPT_HTTPPOST,  it  will  automatically
	  set CURLOPT_NOBODY to 0 (since 7.14.1).

     CURLOPT_REFERER
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It will be used to set the Referer: header in the
	  http request sent to the remote  server.  This  can  be
	  used	to  fool servers or scripts. You can also set any
	  custom header with CURLOPT_HTTPHEADER.

     CURLOPT_USERAGENT
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will be used to set the User-Agent: header in
	  the http request sent to the remote server. This can be
	  used	to  fool servers or scripts. You can also set any
	  custom header with CURLOPT_HTTPHEADER.

     CURLOPT_HTTPHEADER
	  Pass a pointer to a linked list of HTTP headers to pass
	  to  the  server  in  your HTTP request. The linked list

libcurl 7.14.2	    Last change: 27 Oct 2005		       15

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  should be a  fully  valid  list  of  struct  curl_slist
	  structs properly filled in. Use curl_slist_append(3) to
	  create the list and curl_slist_free_all(3) to clean  up
	  an  entire  list. If you add a header that is otherwise
	  generated and used by libcurl	 internally,  your  added
	  one  will  be used instead. If you add a header with no
	  contents as in 'Accept:' (no data on the right side  of
	  the  colon),	the  internally used header will get dis-
	  abled. Thus, using this option you can add new headers,
	  replace  internal  headers and remove internal headers.
	  The headers included in the linked  list  must  not  be
	  CRLF-terminated,  because  curl  adds	 CRLF  after each
	  header item. Failure to comply with this will result in
	  strange bugs because the server will most likely ignore
	  part of the headers you specified.

	  The first line in a request (usually containing  a  GET
	  or  POST)  is not a header and cannot be replaced using
	  this option. Only the lines following the  request-line
	  are headers.

	  Pass a NULL to this to reset back to no custom headers.

	  The most commonly replaced headers have "shortcuts"  in
	  the	options	  CURLOPT_COOKIE,  CURLOPT_USERAGENT  and
	  CURLOPT_REFERER.

     CURLOPT_HTTP200ALIASES
	  Pass a pointer to  a	linked	list  of  aliases  to  be
	  treated  as  valid  HTTP  200	 responses.  Some servers
	  respond with a custom header response line.  For  exam-
	  ple,	IceCast	 servers  respond  with "ICY 200 OK".  By
	  including this string in  your  list	of  aliases,  the
	  response  will  be  treated as a valid HTTP header line
	  such as "HTTP/1.0 200 OK". (Added in 7.10.3)

	  The linked list should be a fully valid list of  struct
	  curl_slist  structs,	and  be	 properly filled in.  Use
	  curl_slist_append(3)	 to   create   the    list    and
	  curl_slist_free_all(3) to clean up an entire list.

	  The alias itself is not parsed for any version strings.
	  So  if  your	alias  is  "MYHTTP/9.9", Libcurl will not
	  treat the server as responding with HTTP  version  9.9.
	  Instead  Libcurl  will  use  the  value  set	by option
	  CURLOPT_HTTP_VERSION.

     CURLOPT_COOKIE
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will  be  used  to	set  a cookie in the http
	  request.  The	 format	  of   the   string   should   be
	  NAME=CONTENTS,  where	 NAME  is  the	cookie	name  and

libcurl 7.14.2	    Last change: 27 Oct 2005		       16

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  CONTENTS is what the cookie should contain.

	  If you need to set multiple cookies, you  need  to  set
	  them	all  using  a  single option and thus you need to
	  concatenate them all in one single string. Set multiple
	  cookies  in  one  string  like  this:	 "name1=content1;
	  name2=content2;" etc.

	  Using this option multiple times  will  only	make  the
	  latest string override the previously ones.

     CURLOPT_COOKIEFILE
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  should  contain the name of your file holding
	  cookie data to read. The cookie data may be in Netscape
	  / Mozilla cookie data format or just regular HTTP-style
	  headers dumped to a file.

	  Given an empty or non-existing file or by  passing  the
	  empty	 string (""), this option will enable cookies for
	  this	curl  handle,  making  it  understand  and  parse
	  received  cookies  and  then	use  matching  cookies in
	  future request.

	  If you use this option multiple  times,  you	just  add
	  more	files  to  read.   Subsequent files will add more
	  cookies.

     CURLOPT_COOKIEJAR
	  Pass a file name as char *, zero terminated. This  will
	  make	libcurl write all internally known cookies to the
	  specified file when curl_easy_cleanup(3) is called.  If
	  no  cookies are known, no file will be created. Specify
	  "-" to instead have  the  cookies  written  to  stdout.
	  Using	 this  option  also enables cookies for this ses-
	  sion, so if you for example follow a location	 it  will
	  make matching cookies get sent accordingly.

	  If the cookie jar file can't be created or  written  to
	  (when the curl_easy_cleanup(3) is called), libcurl will
	  not  and  cannot  report  an	error  for  this.   Using
	  CURLOPT_VERBOSE  or  CURLOPT_DEBUGFUNCTION  will  get a
	  warning to display, but that is the only visible  feed-
	  back you get about this possibly lethal situation.

     CURLOPT_COOKIESESSION
	  Pass a long set to non-zero  to  mark	 this  as  a  new
	  cookie  "session".  It will force libcurl to ignore all
	  cookies it is about to load that are "session	 cookies"
	  from	the  previous session. By default, libcurl always
	  stores and loads all cookies, independent if	they  are
	  session  cookies  are	 not. Session cookies are cookies

libcurl 7.14.2	    Last change: 27 Oct 2005		       17

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  without expiry date and they are meant to be alive  and
	  existing for this "session" only.

     CURLOPT_COOKIELIST
	  Pass a char * to a cookie string. Cookie can be  either
	  in Netscape / Mozilla format or just regular HTTP-style
	  header (Set-Cookie: ...) format. If cURL cookie  engine
	  was  not  enabled  it	 will  enable  its cookie engine.
	  Passing a magic string "ALL"	will  erase  all  cookies
	  known by cURL. (Added in 7.14.1)

     CURLOPT_HTTPGET
	  Pass a long. If the long is non-zero, this  forces  the
	  HTTP	request	 to  get  back	to GET. usable if a POST,
	  HEAD, PUT or a custom request have been used previously
	  using the same curl handle.

	  When setting CURLOPT_HTTPGET to a  non-zero  value,  it
	  will	automatically  set  CURLOPT_NOBODY  to	0  (since
	  7.14.1).

     CURLOPT_HTTP_VERSION
	  Pass a long, set to one of the values described  below.
	  They	force  libcurl to use the specific HTTP versions.
	  This is not sensible to do unless you have a good  rea-
	  son.

	  CURL_HTTP_VERSION_NONE
	       We don't care about what version the library uses.
	       libcurl will use whatever it thinks fit.

	  CURL_HTTP_VERSION_1_0
	       Enforce HTTP 1.0 requests.

	  CURL_HTTP_VERSION_1_1
	       Enforce HTTP 1.1 requests.

	  CURLOPT_IGNORE_CONTENT_LENGTH
	       Ignore the Content-Length header. This  is  useful
	       for  Apache  1.x	 (and similar servers) which will
	       report incorrect content length for files  over	2
	       gigabytes.  If  this option is used, curl will not
	       be able to accurately report  progress,	and  will
	       simply  stop the download when the server ends the
	       connection. (added in 7.14.1)

FTP OPTIONS
     CURLOPT_FTPPORT
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will be used to get the IP address to use for
	  the ftp PORT instruction. The	 PORT  instruction  tells
	  the  remote  server  to  connect  to	our  specified IP

libcurl 7.14.2	    Last change: 27 Oct 2005		       18

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  address. The string may be a plain IP address,  a  host
	  name,	 an network interface name (under Unix) or just a
	  '-' letter to let the library use your systems  default
	  IP  address.	Default	 FTP  operations are passive, and
	  thus won't use PORT.

	  You disable PORT again and go back to using the passive
	  version by setting this option to NULL.

     CURLOPT_QUOTE
	  Pass a pointer to a linked list of FTP commands to pass
	  to  the  server prior to your ftp request. This will be
	  done before any other FTP  commands  are  issued  (even
	  before  the  CWD  command). The linked list should be a
	  fully valid list of to append strings (commands) to the
	  list,	  and  clear  the  entire  list	 afterwards  with
	  curl_slist_free_all(3). Disable this operation again by
	  setting a NULL to this option.

     CURLOPT_POSTQUOTE
	  Pass a pointer to a linked list of FTP commands to pass
	  to  the  server  after  your	ftp transfer request. The
	  linked list should be a  fully  valid	 list  of  struct
	  curl_slist  structs properly filled in as described for
	  CURLOPT_QUOTE. Disable this operation again by  setting
	  a NULL to this option.

     CURLOPT_PREQUOTE
	  Pass a pointer to a linked list of FTP commands to pass
	  to  the  server  after  the  transfer	 type is set. The
	  linked list should be a  fully  valid	 list  of  struct
	  curl_slist  structs properly filled in as described for
	  CURLOPT_QUOTE. Disable this operation again by  setting
	  a NULL to this option.

     CURLOPT_FTPLISTONLY
	  A non-zero parameter tells the library to just list the
	  names	 of  an	 ftp  directory,  instead of doing a full
	  directory listing that would include file sizes,  dates
	  etc.

	  This causes an FTP NLST command  to  be  sent.   Beware
	  that some FTP servers list only files in their response
	  to NLST; they might not include subdirectories and sym-
	  bolic links.

     CURLOPT_FTPAPPEND
	  A non-zero parameter tells the library to append to the
	  remote  file instead of overwrite it. This is only use-
	  ful when uploading to an ftp site.

     CURLOPT_FTP_USE_EPRT

libcurl 7.14.2	    Last change: 27 Oct 2005		       19

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  Pass a long. If the value is non-zero, it tells curl to
	  use  the  EPRT (and LPRT) command when doing active FTP
	  downloads (which is enabled by CURLOPT_FTPPORT).  Using
	  EPRT	means  that it will first attempt to use EPRT and
	  then LPRT before using PORT,	but  if	 you  pass  FALSE
	  (zero)  to  this  option, it will not try using EPRT or
	  LPRT, only plain PORT. (Added in 7.10.5)

	  If the server is an IPv6 host, this option will have no
	  effect as of 7.12.3.

     CURLOPT_FTP_USE_EPSV
	  Pass a long. If the value is non-zero, it tells curl to
	  use  the  EPSV command when doing passive FTP downloads
	  (which it always does by  default).  Using  EPSV  means
	  that	it  will  first	 attempt to use EPSV before using
	  PASV, but if you pass FALSE (zero) to this  option,  it
	  will not try using EPSV, only plain PASV.

	  If the server is an IPv6 host, this option will have no
	  effect as of 7.12.3.

     CURLOPT_FTP_CREATE_MISSING_DIRS
	  Pass a long.	If  the	 value	is  non-zero,  curl  will
	  attempt to create any remote directory that it fails to
	  CWD into. CWD	 is  the  command  that	 changes  working
	  directory. (Added in 7.10.7)

     CURLOPT_FTP_RESPONSE_TIMEOUT
	  Pass a long.	Causes curl to set a timeout  period  (in
	  seconds)  on	the  amount  of	 time  that the server is
	  allowed to take in order to generate a response message
	  for  a  command  before the session is considered hung.
	  While curl is waiting for a response, this value  over-
	  rides	 CURLOPT_TIMEOUT.  It is recommended that if used
	  in   conjunction   with   CURLOPT_TIMEOUT,   you    set
	  CURLOPT_FTP_RESPONSE_TIMEOUT	to  a  value smaller than
	  CURLOPT_TIMEOUT.  (Added in 7.10.8)

     CURLOPT_FTP_SKIP_PASV_IP
	  Pass a long. If set to a non-zero value,  it	instructs
	  libcurl  to  not use the IP address the server suggests
	  in its 227-response to libcurl's PASV command when lib-
	  curl connects the data connection. Instead libcurl will
	  re-use the same IP address it already uses for the con-
	  trol	connection.  But it will use the port number from
	  the 227-response. (Added in 7.14.2)

	  This option has no effect if PORT, EPRT or EPSV is used
	  instead of PASV.

     CURLOPT_FTP_SSL

libcurl 7.14.2	    Last change: 27 Oct 2005		       20

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  Pass a long using one of the values from below, to make
	  libcurl  use	your  desired  level  of  SSL for the ftp
	  transfer. (Added in 7.11.0)

	  CURLFTPSSL_NONE
	       Don't attempt to use SSL.

	  CURLFTPSSL_TRY
	       Try using SSL, proceed as normal otherwise.

	  CURLFTPSSL_CONTROL
	       Require SSL for the  control  connection	 or  fail
	       with CURLE_FTP_SSL_FAILED.

	  CURLFTPSSL_ALL
	       Require SSL for all  communication  or  fail  with
	       CURLE_FTP_SSL_FAILED.

     CURLOPT_FTPSSLAUTH
	  Pass a long using one of  the	 values	 from  below,  to
	  alter	 how libcurl issues "AUTH TLS" or "AUTH SSL" when
	  FTP over SSL is activated (see CURLOPT_FTP_SSL). (Added
	  in 7.12.2)

	  CURLFTPAUTH_DEFAULT
	       Allow libcurl to decide

	  CURLFTPAUTH_SSL
	       Try "AUTH SSL" first, and only if that  fails  try
	       "AUTH TLS"

	  CURLFTPAUTH_TLS
	       Try "AUTH TLS" first, and only if that  fails  try
	       "AUTH SSL"

     CURLOPT_SOURCE_URL
	  When set, it enables a FTP third party transfer,  using
	  the set URL as source, while CURLOPT_URL is the target.

     CURLOPT_SOURCE_USERPWD
	  Set "username:password" to use for the  source  connec-
	  tion when doing FTP third party transfers.

     CURLOPT_SOURCE_QUOTE
	  Exactly like CURLOPT_QUOTE, but for the source host.

     CURLOPT_SOURCE_PREQUOTE
	  Exactly like CURLOPT_PREQUOTE, but for the source host.

     CURLOPT_SOURCE_POSTQUOTE
	  Exactly like	CURLOPT_POSTQUOTE,  but	 for  the  source
	  host.

libcurl 7.14.2	    Last change: 27 Oct 2005		       21

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

     CURLOPT_FTP_ACCOUNT
	  Pass a pointer to a zero-terminated string (or NULL  to
	  disable).  When  an  FTP server asks for "account data"
	  after user name and password has  been  provided,  this
	  data	is  sent  off  using  the ACCT command. (Added in
	  7.13.0)

PROTOCOL OPTIONS
     CURLOPT_TRANSFERTEXT
	  A non-zero parameter tells the  library  to  use  ASCII
	  mode	for  ftp transfers, instead of the default binary
	  transfer. For win32 systems it does not set the  stdout
	  to   binary  mode.  This  option  can	 be  usable  when
	  transferring text data between systems  with	different
	  views	 on certain characters, such as newlines or simi-
	  lar.

	  libcurl does not do a complete  ASCII	 conversion  when
	  doing	 ASCII	transfers  over	 FTP.  This  is	 a  known
	  limitation/flaw that nobody has rectified. libcurl sim-
	  ply  sets  the  mode	to  ascii and performs a standard
	  transfer.

     CURLOPT_CRLF
	  Convert Unix newlines to CRLF newlines on transfers.

     CURLOPT_RANGE
	  Pass a char * as parameter, which  should  contain  the
	  specified  range  you	 want. It should be in the format
	  "X-Y", where X or Y may be  left  out.  HTTP	transfers
	  also	support	 several intervals, separated with commas
	  as in "X-Y,N-M". Using this kind of multiple	intervals
	  will	cause  the HTTP server to send the response docu-
	  ment in pieces (using standard  MIME	separation  tech-
	  niques).  Pass a NULL to this option to disable the use
	  of ranges.

     CURLOPT_RESUME_FROM
	  Pass a long as parameter. It	contains  the  offset  in
	  number  of  bytes  that  you want the transfer to start
	  from. Set this option to 0 to make the  transfer  start
	  from the beginning (effectively disabling resume).

     CURLOPT_RESUME_FROM_LARGE
	  Pass a curl_off_t as parameter. It contains the  offset
	  in  number of bytes that you want the transfer to start
	  from. (Added in 7.11.0)

     CURLOPT_CUSTOMREQUEST
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It will be user instead of GET or HEAD when doing
	  an HTTP request, or instead of LIST or NLST when  doing

libcurl 7.14.2	    Last change: 27 Oct 2005		       22

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  an  ftp  directory  listing.	This  is useful for doing
	  DELETE or other more or  less	 obscure  HTTP	requests.
	  Don't	 do  this at will, make sure your server supports
	  the command first.

	  Restore to the internal  default  by	setting	 this  to
	  NULL.

	  Many people have wrongly used this  option  to  replace
	  the  entire  request with their own, including multiple
	  headers and POST contents. While  that  might	 work  in
	  many	cases,	it  will  cause	 libcurl  to send invalid
	  requests and	it  could  possibly  confuse  the  remote
	  server  badly.  Use CURLOPT_POST and CURLOPT_POSTFIELDS
	  to set POST data. Use CURLOPT_HTTPHEADER to replace  or
	  extend   the	set  of	 headers  sent	by  libcurl.  Use
	  CURLOPT_HTTP_VERSION to change HTTP version.

     CURLOPT_FILETIME
	  Pass a long. If it is a non-zero  value,  libcurl  will
	  attempt  to  get  the	 modification  date of the remote
	  document in this  operation.	This  requires	that  the
	  remote  server  sends	 the  time  or	replies to a time
	  querying  command.  The  curl_easy_getinfo(3)	 function
	  with the CURLINFO_FILETIME argument can be used after a
	  transfer to extract the received time (if any).

     CURLOPT_NOBODY
	  A non-zero parameter tells the library to  not  include
	  the  body-part in the output. This is only relevant for
	  protocols that have separate header and body parts.  On
	  HTTP(S)  servers,  this  will	 make  libcurl	do a HEAD
	  request.

	  To   change	request	  to   GET,   you   should    use
	  CURLOPT_HTTPGET.    Change   request	 to   POST   with
	  CURLOPT_POST etc.

     CURLOPT_INFILESIZE
	  When uploading a file to a  remote  site,  this  option
	  should  be  used to tell libcurl what the expected size
	  of the infile is. This value	should	be  passed  as	a
	  long. See also CURLOPT_INFILESIZE_LARGE.

     CURLOPT_INFILESIZE_LARGE
	  When uploading a file to a  remote  site,  this  option
	  should  be  used to tell libcurl what the expected size
	  of the infile is.  This value should	be  passed  as	a
	  curl_off_t. (Added in 7.11.0)

     CURLOPT_UPLOAD
	  A non-zero parameter tells the library to  prepare  for

libcurl 7.14.2	    Last change: 27 Oct 2005		       23

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  an upload. The CURLOPT_READDATA and CURLOPT_INFILESIZEE
	  or CURLOPT_INFILESIZE_LARGE are  also	 interesting  for
	  uploads. If the protocol is HTTP, uploading means using
	  the PUT request unless you tell libcurl otherwise.

	  Using PUT with HTTP 1.1 implies the use of  a	 "Expect:
	  100-continue" header.	 You can disable this header with
	  CURLOPT_HTTPHEADER as usual.

	  If you use PUT to a HTTP 1.1	server,	 you  can  upload
	  data	without	 knowing  the  size  before  starting the
	  transfer if you use chunked encoding. You  enable  this
	  by  adding  a	 header like "Transfer-Encoding: chunked"
	  with	CURLOPT_HTTPHEADER.  With  HTTP	 1.0  or  without
	  chunked transfer, you must specify the size.

     CURLOPT_MAXFILESIZE
	  Pass a long as parameter. This allows	 you  to  specify
	  the  maximum	size (in bytes) of a file to download. If
	  the file requested  is  larger  than	this  value,  the
	  transfer  will  not  start  and CURLE_FILESIZE_EXCEEDED
	  will be returned.

	  The file size is not always known  prior  to	download,
	  and  for  such  files this option has no effect even if
	  the file transfer ends up being larger than this  given
	  limit. This concerns both FTP and HTTP transfers.

     CURLOPT_MAXFILESIZE_LARGE
	  Pass a curl_off_t as	parameter.  This  allows  you  to
	  specify  the maximum size (in bytes) of a file to down-
	  load. If the file requested is larger than this  value,
	  the transfer will not start and CURLE_FILESIZE_EXCEEDED
	  will be returned. (Added in 7.11.0)

	  The file size is not always known  prior  to	download,
	  and  for  such  files this option has no effect even if
	  the file transfer ends up being larger than this  given
	  limit. This concerns both FTP and HTTP transfers.

     CURLOPT_TIMECONDITION
	  Pass	a  long	 as  parameter.	 This  defines	how   the
	  CURLOPT_TIMEVALUE  time  value  is treated. You can set
	  this	 parameter   to	   CURL_TIMECOND_IFMODSINCE    or
	  CURL_TIMECOND_IFUNMODSINCE.  This  feature  applies  to
	  HTTP and FTP.

	  The last modification time of	 a  file  is  not  always
	  known	 and  in such instances this feature will have no
	  effect even if the given time condition would have  not
	  been met.

libcurl 7.14.2	    Last change: 27 Oct 2005		       24

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

     CURLOPT_TIMEVALUE
	  Pass a long as parameter. This should be  the	 time  in
	  seconds  since 1 jan 1970, and the time will be used in
	  a condition as specified with CURLOPT_TIMECONDITION.

CONNECTION OPTIONS
     CURLOPT_TIMEOUT
	  Pass a long as parameter containing the maximum time in
	  seconds  that	 you allow the libcurl transfer operation
	  to take. Normally, name lookups can take a considerable
	  time and limiting operations to less than a few minutes
	  risk aborting perfectly normal operations. This  option
	  will	cause  curl  to	 use  the SIGALRM to enable time-
	  outing system calls.

	  In unix-like systems, this might cause  signals  to  be
	  used unless CURLOPT_NOSIGNAL is set.

     CURLOPT_LOW_SPEED_LIMIT
	  Pass a long as  parameter.  It  contains  the	 transfer
	  speed	 in  bytes per second that the transfer should be
	  below during	CURLOPT_LOW_SPEED_TIME	seconds	 for  the
	  library to consider it too slow and abort.

     CURLOPT_LOW_SPEED_TIME
	  Pass a long as  parameter.  It  contains  the	 time  in
	  seconds   that   the	 transfer  should  be  below  the
	  CURLOPT_LOW_SPEED_LIMIT for the library to consider  it
	  too slow and abort.

     CURLOPT_MAXCONNECTS
	  Pass a long. The set number will be the persistent con-
	  nection  cache size. The set amount will be the maximum
	  amount of simultaneously open connections that  libcurl
	  may  cache. Default is 5, and there isn't much point in
	  changing this value unless you are perfectly	aware  of
	  how  this  work  and	changes libcurl's behaviour. This
	  concerns connection using any	 of  the  protocols  that
	  support persistent connections.

	  When	reaching  the  maximum	limit,	curl   uses   the
	  CURLOPT_CLOSEPOLICY to figure out which of the existing
	  connections to close to prevent the number of open con-
	  nections to increase.

	  If you already have performed transfers with this  curl
	  handle,  setting  a smaller MAXCONNECTS than before may
	  cause open connections to get closed unnecessarily.

     CURLOPT_CLOSEPOLICY
	  Pass a long.	This  option  sets  what  policy  libcurl
	  should  use when the connection cache is filled and one

libcurl 7.14.2	    Last change: 27 Oct 2005		       25

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  of the open connections has to be closed to  make  room
	  for  a  new  connection.  This must be one of the CURL-
	  CLOSEPOLICY_*		      defines.		      Use
	  CURLCLOSEPOLICY_LEAST_RECENTLY_USED	to  make  libcurl
	  close the connection that was least recently used, that
	  connection  is  also	least likely to be capable of re-
	  use. Use CURLCLOSEPOLICY_OLDEST to make  libcurl  close
	  the  oldest  connection, the one that was created first
	  among the ones in the connection cache. The other close
	  policies are not support yet.

     CURLOPT_FRESH_CONNECT
	  Pass a long. Set to non-zero to make the next	 transfer
	  use  a  new (fresh) connection by force. If the connec-
	  tion cache is full before this connection, one  of  the
	  existing connections will be closed as according to the
	  selected or default policy. This option should be  used
	  with	caution	 and only if you understand what it does.
	  Set this to 0	 to  have  libcurl  attempt  re-using  an
	  existing connection (default behavior).

     CURLOPT_FORBID_REUSE
	  Pass a long. Set to non-zero to make the next	 transfer
	  explicitly  close  the  connection when done. Normally,
	  libcurl keep all connections alive when done	with  one
	  transfer  in case there comes a succeeding one that can
	  re-use them.	This option should be used  with  caution
	  and  only  if	 you understand what it does. Set to 0 to
	  have libcurl keep  the  connection  open  for	 possibly
	  later re-use (default behavior).

     CURLOPT_CONNECTTIMEOUT
	  Pass a long. It should  contain  the	maximum	 time  in
	  seconds  that you allow the connection to the server to
	  take.	 This only limits the connection phase,	 once  it
	  has  connected,  this	 option is of no more use. Set to
	  zero to disable connection timeout (it will  then  only
	  timeout  on  the  system's internal timeouts). See also
	  the CURLOPT_TIMEOUT option.

	  In unix-like systems, this might cause  signals  to  be
	  used unless CURLOPT_NOSIGNAL is set.

     CURLOPT_IPRESOLVE
	  Allows  an  application  to  select  what  kind  of  IP
	  addresses  to	 use  when  resolving host names. This is
	  only interesting when using  host  names  that  resolve
	  addresses  using  more  than	one  version  of  IP. The
	  allowed values are:

	  CURL_IPRESOLVE_WHATEVER
	       Default, resolves addresses  to	all  IP	 versions

libcurl 7.14.2	    Last change: 27 Oct 2005		       26

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	       that your system allows.

	  CURL_IPRESOLVE_V4
	       Resolve to ipv4 addresses.

	  CURL_IPRESOLVE_V6
	       Resolve to ipv6 addresses.

SSL and SECURITY OPTIONS
     CURLOPT_SSLCERT
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	The string should be the file name of your certi-
	  ficate. The default format is "PEM" and can be  changed
	  with CURLOPT_SSLCERTTYPE.

     CURLOPT_SSLCERTTYPE
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	The  string should be the format of your certifi-
	  cate. Supported formats are "PEM" and "DER".	(Added in
	  7.9.3)

     CURLOPT_SSLCERTPASSWD
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will  be used as the password required to use
	  the CURLOPT_SSLCERT certificate.

	  This option is  replaced  by	CURLOPT_SSLKEYPASSWD  and
	  should  only	be  used  for backward compatibility. You
	  never needed a pass phrase to load  a	 certificate  but
	  you need one to load your private key.

     CURLOPT_SSLKEY
	  Pass a pointer to a zero terminated string  as  parame-
	  ter. The string should be the file name of your private
	  key. The default format is "PEM"  and	 can  be  changed
	  with CURLOPT_SSLKEYTYPE.

     CURLOPT_SSLKEYTYPE
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	The  string  should be the format of your private
	  key. Supported formats are "PEM", "DER" and "ENG".

	  The format "ENG" enables you to load	the  private  key
	  from	a  crypto  engine. In this case CURLOPT_SSLKEY is
	  used as an identifier passed to the engine. You have to
	  set  the  crypto  engine with CURLOPT_SSLENGINE.  "DER"
	  format key file currently does not work  because  of	a
	  bug in OpenSSL.

     CURLOPT_SSLKEYPASSWD
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will  be used as the password required to use

libcurl 7.14.2	    Last change: 27 Oct 2005		       27

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  the CURLOPT_SSLKEY private key.

     CURLOPT_SSLENGINE
	  Pass a pointer to a zero terminated string  as  parame-
	  ter.	It  will be used as the identifier for the crypto
	  engine you want to use for your private key.

	  If   the    crypto	device	  cannot    be	  loaded,
	  CURLE_SSL_ENGINE_NOTFOUND is returned.

     CURLOPT_SSLENGINE_DEFAULT
	  Sets the actual crypto engine as the default for (asym-
	  metric) crypto operations.

	  If	the    crypto	 device	   cannot     be     set,
	  CURLE_SSL_ENGINE_SETFAILED is returned.

     CURLOPT_SSLVERSION
	  Pass a long as parameter to  control	what  version  of
	  SSL/TLS to attempt to use.  The available options are:

	  CURL_SSLVERSION_DEFAULT
	       The  default  action.  When  libcurl  built   with
	       OpenSSL,	 this  will  attempt  to  figure  out the
	       remote SSL protocol version.  Unfortunately  there
	       are  a  lot  of	ancient and broken servers in use
	       which cannot handle this technique and  will  fail
	       to  connect.  When  libcurl  is built with GnuTLS,
	       this will mean SSLv3.

	  CURL_SSLVERSION_TLSv1
	       Force TLSv1

	  CURL_SSLVERSION_SSLv2
	       Force SSLv2

	  CURL_SSLVERSION_SSLv3
	       Force SSLv3

     CURLOPT_SSL_VERIFYPEER
	  Pass a long as parameter.

	  This	option	determines  whether  curl  verifies   the
	  authenticity	of  the	 peer's	 certificate.	A nonzero
	  value means curl verifies; zero means it doesn't.   The
	  default is nonzero, but before 7.10, it was zero.

	  When negotiating an SSL connection, the server sends	a
	  certificate  indicating  its	identity.   Curl verifies
	  whether the certificate is authentic, i.e. that you can
	  trust	 that  the  server is who the certificate says it
	  is.	This  trust  is	 based	on  a  chain  of  digital

libcurl 7.14.2	    Last change: 27 Oct 2005		       28

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  signatures, rooted in certification authority (CA) cer-
	  tificates you supply.	 As  of	 7.10,	curl  installs	a
	  default  bundle  of CA certificates and you can specify
	  alternate certificates with the  CURLOPT_CAINFO  option
	  or the CURLOPT_CAPATH option.

	  When CURLOPT_SSL_VERIFYPEER is nonzero, and the verifi-
	  cation  fails	 to prove that the certificate is authen-
	  tic, the connection fails.  When the	option	is  zero,
	  the connection succeeds regardless.

	  Authenticating the certificate is not	 by  itself  very
	  useful.   You typically want to ensure that the server,
	  as authentically identified by its certificate, is  the
	  server    you	   mean	   to	be   talking   to.    Use
	  CURLOPT_SSL_VERIFYHOST to control that.

     CURLOPT_CAINFO
	  Pass a char * to a zero terminated string naming a file
	  holding  one	or  more  certificates to verify the peer
	  with.	 This makes sense only when used  in  combination
	  with	  the	 CURLOPT_SSL_VERIFYPEER	   option.     If
	  CURLOPT_SSL_VERIFYPEER is zero, CURLOPT_CAINFO need not
	  even indicate an accessible file.

     CURLOPT_CAPATH
	  Pass a char * to a  zero  terminated	string	naming	a
	  directory  holding  multiple	CA certificates to verify
	  the  peer  with.  The	 certificate  directory	 must  be
	  prepared using the openssl c_rehash utility. This makes
	  sense	 only  when  used   in	 combination   with   the
	  CURLOPT_SSL_VERIFYPEER	    option.	       If
	  CURLOPT_SSL_VERIFYPEER is zero, CURLOPT_CAPATH need not
	  even	indicate  an accessible path.  The CURLOPT_CAPATH
	  function apparently does not work  in	 Windows  due  to
	  some limitation in openssl. (Added in 7.9.8)

     CURLOPT_RANDOM_FILE
	  Pass a char * to a zero terminated file name. The  file
	  will be used to read from to seed the random engine for
	  SSL. The more random the specified file  is,	the  more
	  secure the SSL connection will become.

     CURLOPT_EGDSOCKET
	  Pass a char * to the zero terminated path name  to  the
	  Entropy  Gathering  Daemon  socket.  It will be used to
	  seed the random engine for SSL.

     CURLOPT_SSL_VERIFYHOST
	  Pass a long as parameter.

	  This option determines whether  libcurl  verifies  that

libcurl 7.14.2	    Last change: 27 Oct 2005		       29

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  the server cert is for the server it is known as.

	  When negotiating an SSL connection, the server sends	a
	  certificate indicating its identity.

	  When CURLOPT_SSL_VERIFYHOST is 2, that certificate must
	  indicate  that  the  server  is the server to which you
	  meant to connect, or the connection fails.

	  Curl considers the server the	 intended  one	when  the
	  Common  Name field or a Subject Alternate Name field in
	  the certificate matches the host name	 in  the  URL  to
	  which you told Curl to connect.

	  When the value is 1, the  certificate	 must  contain	a
	  Common  Name	field, but it doesn't matter what name it
	  says.	 (This is not ordinarily a useful setting).

	  When the value is 0, the connection succeeds regardless
	  of the names in the certificate.

	  The default, since 7.10, is 2.

	  The checking this option controls is	of  the	 identity
	  that the server claims.  The server could be lying.  To
	  control lying, see CURLOPT_SSL_VERIFYPEER.

     CURLOPT_SSL_CIPHER_LIST
	  Pass a char *, pointing to  a	 zero  terminated  string
	  holding  the list of ciphers to use for the SSL connec-
	  tion. The list must be syntactically correct,	 it  con-
	  sists	 of  one  or  more  cipher  strings  separated by
	  colons. Commas or spaces are also acceptable separators
	  but  colons are normally used, , - and + can be used as
	  operators.  Valid  examples  of  cipher  lists  include
	  'RC4-SHA',   'SHA1+DES',  'TLSv1'  and  'DEFAULT'.  The
	  default list is normally set when you compile OpenSSL.

	  You'll find more details about  cipher  lists	 on  this
	  URL:	http://www.openssl.org/docs/apps/ciphers.html

     CURLOPT_KRB4LEVEL
	  Pass a char *	 as  parameter.	 Set  the  krb4	 security
	  level,  this	also  enables  krb4 awareness.	This is a
	  string, 'clear', 'safe', 'confidential'  or  'private'.
	  If  the  string  is set but doesn't match one of these,
	  'private' will be used. Set the string to NULL to  dis-
	  able	kerberos4.  The	 kerberos  support only works for
	  FTP.

OTHER OPTIONS
     CURLOPT_PRIVATE

libcurl 7.14.2	    Last change: 27 Oct 2005		       30

curl_easy_setopt(3)	 libcurl Manual	      curl_easy_setopt(3)

	  Pass a char *	 as  parameter,	 pointing  to  data  that
	  should  be  associated  with	this  curl  handle.   The
	  pointer   can	  subsequently	 be    retrieved    using
	  curl_easy_getinfo(3)	with the CURLINFO_PRIVATE option.
	  libcurl itself does nothing with this data.  (Added  in
	  7.10.3)

     CURLOPT_SHARE
	  Pass a share handle as a parameter.  The  share  handle
	  must	 have	been   created	by  a  previous	 call  to
	  curl_share_init(3). Setting this option, will make this
	  curl handle use the data from the shared handle instead
	  of keeping the data to  itself.  This	 enables  several
	  curl	handles	 to  share  data. If the curl handles are
	  used simultaneously, you MUST use the	 locking  methods
	  in  the  share  handle.  See	curl_share_setopt(3)  for
	  details.

TELNET OPTIONS
     CURLOPT_TELNETOPTIONS
	  Provide a pointer to a  curl_slist  with  variables  to
	  pass	to  the telnet negotiations. The variables should
	  be in the format <option=value>. libcurl  supports  the
	  options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TEL-
	  NET standard for details.

RETURN VALUE
     CURLE_OK (zero) means that	 the  option  was  set	properly,
     non-zero  means  an error occurred as <curl/curl.h> defines.
     See the libcurl-errors(3) man page for the	 full  list  with
     descriptions.

     If you try to set an option that libcurl doesn't know about,
     perhaps  because the library is too old to support it or the
     option was removed in a recent version, this  function  will
     return CURLE_FAILED_INIT.

SEE ALSO
     curl_easy_init(3), curl_easy_cleanup(3), curl_easy_reset(3),

libcurl 7.14.2	    Last change: 27 Oct 2005		       31

[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server UnixWare

List of man pages available for UnixWare

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net