]> granicus.if.org Git - curl/commitdiff
- curl the tool now deals with its command line options somewhat differently!
authorDaniel Stenberg <daniel@haxx.se>
Sun, 8 Jun 2008 20:53:49 +0000 (20:53 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 8 Jun 2008 20:53:49 +0000 (20:53 +0000)
  All boolean options (such as -O, -I, -v etc), both short and long versions,
  now always switch on/enable the option named. Using the same option multiple
  times thus make no difference. To switch off one of those options, you need
  to use the long version of the option and type --no-OPTION. Like to disable
  verbose mode you use --no-verbose!

- Added --remote-name-all to curl, which if used changes the default for all
  given URLs to be dealt with as if -O is used. So if you want to disable that
  for a specific URL after --remote-name-all has been used, you muse use -o -
  or --no-remote-name.

CHANGES
RELEASE-NOTES
docs/curl.1
src/main.c
tests/data/test256
tests/data/test38
tests/runtests.pl

diff --git a/CHANGES b/CHANGES
index b6ec8ae4bcb532bde6ed94f8b3025e538a6fcb9e..66af119f4dd94620cb46ec9ade2c9cf260a8d42c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,19 @@
                                   Changelog
 
 
+Daniel Stenberg (8 Jun 2008)
+- curl the tool now deals with its command line options somewhat differently!
+  All boolean options (such as -O, -I, -v etc), both short and long versions,
+  now always switch on/enable the option named. Using the same option multiple
+  times thus make no difference. To switch off one of those options, you need
+  to use the long version of the option and type --no-OPTION. Like to disable
+  verbose mode you use --no-verbose!
+
+- Added --remote-name-all to curl, which if used changes the default for all
+  given URLs to be dealt with as if -O is used. So if you want to disable that
+  for a specific URL after --remote-name-all has been used, you muse use -o -
+  or --no-remote-name.
+
 Daniel Stenberg (6 Jun 2008)
 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, for
   OpenSSL, NSS and GnuTLS-built libcurls.
index fc90d7611397148927cb0c4831df637d251b9a02..62fafedb325a4b974b48305d9ebe8a088f2adb4f 100644 (file)
@@ -1,7 +1,7 @@
 Curl and libcurl 7.18.3
 
  Public curl releases:         106
- Command line options:         126
+ Command line options:         127
  curl_easy_setopt() options:   152
  Public functions in libcurl:  58
  Public web site mirrors:      37
@@ -13,6 +13,8 @@ This release includes the following changes:
  o Added CURLINFO_PRIMARY_IP
  o Added CURLOPT_CRLFILE and CURLE_SSL_CRL_BADFILE
  o Added CURLOPT_ISSUERCERT and CURLE_SSL_ISSUER_ERROR
+ o curl's option parser for boolean options reworked
+ o Added --remote-name-all
 
 This release includes the following bugfixes:
 
index 98bfc198c92903ff3e0d519b2fd2191bee2bbcfa..5c0a5a0845d3c8bf6b9c301dd2588a665f189192 100644 (file)
@@ -21,7 +21,7 @@
 .\" * $Id$
 .\" **************************************************************************
 .\"
-.TH curl 1 "5 Jan 2008" "Curl 7.18.0" "Curl Manual"
+.TH curl 1 "5 June 2008" "Curl 7.18.3" "Curl Manual"
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
@@ -99,11 +99,15 @@ any response data to the terminal.
 If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
 friend.
 .SH OPTIONS
+In general, all boolean options are enabled with --option and yet again
+disabled with --\fBno-\fPoption. That is, you use the exact same option name
+but prefix it with "no-". However, in this list we mostly only list and show
+the --option version of them. (This concept with --no options was added in
+7.18.3. Previously most options were toggled on/off on repeated use of the
+same command line option.)
 .IP "-a/--append"
 (FTP) When used in an FTP upload, this will tell curl to append to the target
 file instead of overwriting it. If the file doesn't exist, it will be created.
-
-If this option is used twice, the second one will disable append mode again.
 .IP "-A/--user-agent <agent string>"
 (HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
 done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
@@ -124,9 +128,6 @@ Note that using --anyauth is not recommended if you do uploads from stdin,
 since it may require data to be sent twice and then the client must be able to
 rewind. If the need should arise when uploading from stdin, the upload
 operation will fail.
-
-If this option is used several times, the following occurrences make no
-difference.
 .IP "-b/--cookie <name=data>"
 (HTTP)
 Pass the data to the HTTP server as a cookie. It is supposedly the
@@ -152,16 +153,11 @@ used.
 Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be
 enforced by using an URL that ends with ";type=A". This option causes data
 sent to stdout to be in text mode for win32 systems.
-
-If this option is used twice, the second one will disable ASCII usage.
 .IP "--basic"
 (HTTP) Tells curl to use HTTP Basic authentication. This is the default and
 this option is usually pointless, unless you use it to override a previously
 set option that sets a different authentication method (such as \fI--ntlm\fP,
 \fI--digest\fP and \fI--negotiate\fP).
-
-If this option is used several times, the following occurrences make no
-difference.
 .IP "--ciphers <list of ciphers>"
 (SSL) Specifies which ciphers to use in the connection. The list of ciphers
 must be using valid ciphers. Read up on SSL cipher list details on this URL:
@@ -175,9 +171,7 @@ If this option is used several times, the last one will override the others.
 .IP "--compressed"
 (HTTP) Request a compressed response using one of the algorithms libcurl
 supports, and return the uncompressed document.  If this option is used and
-the server sends an unsupported encoding, Curl will report an error.
-
-If this option is used several times, each occurrence will toggle it on/off.
+the server sends an unsupported encoding, curl will report an error.
 .IP "--connect-timeout <seconds>"
 Maximum time in seconds that you allow the connection to the server to take.
 This only limits the connection phase, once curl has connected this option is
@@ -220,9 +214,6 @@ To create remote directories when using FTP or SFTP, try
 \fI--ftp-create-dirs\fP.
 .IP "--crlf"
 (FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
-
-If this option is used several times, the following occurrences make no
-difference.
 .IP "-d/--data <data>"
 (HTTP) Sends the specified data in a POST request to the HTTP server, in the
 same way that a browser does when a user has filled in an HTML form and
@@ -298,13 +289,15 @@ away. EPRT and LPRT are extensions to the original FTP protocol, may not work
 on all servers but enable more functionality in a better way than the
 traditional PORT command.
 
-If this option is used several times, each occurrence will toggle this on/off.
+Since curl 7.18.3, \fB--eprt\fP can be used to explicitly enable EPRT again
+and \fB--no-eprt\fP is an alias for \fB--disable-eprt\fP.
 .IP "--disable-epsv"
 (FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
 transfers. Curl will normally always first attempt to use EPSV before PASV,
 but with this option, it will not try using EPSV.
 
-If this option is used several times, each occurrence will toggle this on/off.
+Since curl 7.18.3, \fB--epsv\fP can be used to explicitly enable EPRT again
+and \fB--no-epsv\fP is an alias for \fB--disable-epsv\fP.
 .IP "-D/--dump-header <file>"
 Write the protocol headers to the specified file.
 
@@ -334,8 +327,6 @@ run-time.
 (RISC OS ONLY) Sets a range of environment variables, using the names the -w
 option supports, to easier allow extraction of useful information after having
 run curl.
-
-If this option is used several times, each occurrence will toggle this on/off.
 .IP "--egd-file <file>"
 (SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
 is used to seed the random engine for SSL connections. See also the
@@ -400,8 +391,6 @@ will prevent curl from outputting that and return error 22.
 This method is not fail-safe and there are occasions where non-successful
 response codes will slip through, especially when authentication is involved
 (response codes 401 and 407).
-
-If this option is used twice, the second will again disable silent failure.
 .IP "--ftp-account [data]"
 (FTP) 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
@@ -413,8 +402,6 @@ If this option is used twice, the second will override the previous use.
 currently exist on the server, the standard behavior of curl is to
 fail. Using this option, curl will instead attempt to create missing
 directories.
-
-If this option is used twice, the second will again disable directory creation.
 .IP "--ftp-method [method]"
 (FTP) Control what method curl should use to reach a file on a FTP(S)
 server. The method argument should be one of the following alternatives:
@@ -437,7 +424,8 @@ using this option can be used to override a previous --ftp-port option. (Added
 in 7.11.0)
 
 If this option is used several times, the following occurrences make no
-difference.
+difference. Undoing an enforced PASV really isn't doable but you must then
+instead enforce the correct EPRT again.
 .IP "--ftp-alternative-to-user <command>"
 (FTP) If authenticating with the USER and PASS commands fails, send this
 command.  When connecting to Tumbleweed's Secure Transport server over FTPS
@@ -450,28 +438,19 @@ will re-use the same IP address it already uses for the control
 connection. (Added in 7.14.2)
 
 This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
-
-If this option is used twice, the second will again use the server's suggested
-address.
 .IP "--ftp-ssl"
 (FTP) Try to use SSL/TLS for the FTP connection.  Reverts to a non-secure
 connection if the server doesn't support SSL/TLS.  See also
 \fI--ftp-ssl-control\fP and \fI--ftp-ssl-reqd\fP for different levels of
 encryption required. (Added in 7.11.0)
-
-If this option is used twice, the second will again disable this.
 .IP "--ftp-ssl-control"
 (FTP) Require SSL/TLS for the ftp login, clear for transfer.  Allows secure
 authentication, but non-encrypted data transfers for efficiency.  Fails the
 transfer if the server doesn't support SSL/TLS.  (Added in 7.16.0)
-
-If this option is used twice, the second will again disable this.
 .IP "--ftp-ssl-reqd"
 (FTP) Require SSL/TLS for the FTP connection.
 Terminates the connection if the server doesn't support SSL/TLS.
 (Added in 7.15.5)
-
-If this option is used twice, the second will again disable this.
 .IP "--ftp-ssl-ccc"
 (FTP) Use CCC (Clear Command Channel)
 Shuts down the SSL/TLS layer after authenticating. The rest of the
@@ -479,8 +458,6 @@ control channel communication will be unencrypted. This allows
 NAT routers to follow the FTP transaction. The default mode is
 passive. See --ftp-ssl-ccc-mode for other modes.
 (Added in 7.16.1)
-
-If this option is used twice, the second will again disable this.
 .IP "--ftp-ssl-ccc-mode [active/passive]"
 (FTP) Use CCC (Clear Command Channel)
 Sets the CCC mode. The passive mode will not initiate the shutdown, but
@@ -545,7 +522,8 @@ If used in combination with -I, the POST data will instead be appended to the
 URL with a HEAD request.
 
 If this option is used several times, the following occurrences make no
-difference.
+difference. This is because undoing a GET doesn't make sense, but you should
+then instead enforce the alternative method you prefer.
 .IP "-h/--help"
 Usage help.
 .IP "-H/--header <header>"
@@ -566,7 +544,7 @@ for you.
 See also the \fI-A/--user-agent\fP and \fI-e/--referer\fP options.
 
 This option can be used multiple times to add/replace/remove multiple headers.
-.IP "--hostpubmd5"
+.IP "--hostpubmd5 <md5>"
 Pass a string containing 32 hexadecimal digits. The string should be the 128
 bit MD5 checksum of the remote host's public key, curl will refuse the
 connection with the host unless the md5sums match. This option is only for SCP
@@ -577,11 +555,8 @@ Ignore the Content-Length header. This is particularly useful for servers
 running Apache 1.x, which will report incorrect Content-Length for files
 larger than 2 gigabytes.
 .IP "-i/--include"
-(HTTP)
-Include the HTTP-header in the output. The HTTP-header includes things
+(HTTP) Include the HTTP-header in the output. The HTTP-header includes things
 like server-name, date of the document, HTTP-version and more...
-
-If this option is used twice, the second will again disable header include.
 .IP "--interface <name>"
 Perform an operation using a specified interface. You can enter interface
 name, IP address or host name. An example could look like:
@@ -595,15 +570,11 @@ Fetch the HTTP-header only! HTTP-servers feature the command HEAD
 which this uses to get nothing but the header of a document. When used
 on a FTP or FILE file, curl displays the file size and last modification
 time only.
-
-If this option is used twice, the second will again disable header only.
 .IP "-j/--junk-session-cookies"
 (HTTP) When curl is told to read cookies from a given file, this option will
 make it discard all "session cookies". This will basically have the same effect
 as if a new session is started. Typical browsers always discard session
 cookies when they're closed down.
-
-If this option is used several times, each occurrence will toggle this on/off.
 .IP "-k/--insecure"
 (SSL) This option explicitly allows curl to perform "insecure" SSL connections
 and transfers. All SSL connections are attempted to be made secure by using
@@ -612,8 +583,6 @@ considered "insecure" to fail unless \fI-k/--insecure\fP is used.
 
 See this online resource for further details:
 \fBhttp://curl.haxx.se/docs/sslcerts.html\fP
-
-If this option is used twice, the second time will again disable it.
 .IP "--keepalive-time <seconds>"
 This option sets the time a connection needs to remain idle before sending
 keepalive probes and the time between individual keepalive probes. It is
@@ -738,7 +707,6 @@ This option causes an FTP NLST command to be sent.  Some FTP servers
 list only files in their response to NLST; they do not include
 subdirectories and symbolic links.
 
-If this option is used twice, the second will again disable list only.
 .IP "--local-port <num>[-num]"
 Set a preferred number or range of local port numbers to use for the
 connection(s).  Note that port numbers by nature is a scarce resource that
@@ -759,8 +727,6 @@ When curl follows a redirect and the request is not a plain GET (for example
 POST or PUT), it will do the following request with a GET if the HTTP response
 was 301, 302, or 303. If the response code was any other 3xx code, curl will
 re-send the following request using the same unmodified method.
-
-If this option is used twice, the second will again disable location following.
 .IP "--location-trusted"
 (HTTP/HTTPS) Like \fI-L/--location\fP, but will allow sending the name +
 password to all hosts that the site may redirect to. This may or may not
@@ -768,7 +734,6 @@ introduce a security breach if the site redirects you do a site to which
 you'll send your authentication info (which is plaintext in the case of HTTP
 Basic authentication).
 
-If this option is used twice, the second will again disable location following.
 .IP "--max-filesize <bytes>"
 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 curl will
@@ -802,8 +767,6 @@ to ftp to the machine host.domain.com with user name \&'myself' and password
 \&'secret' should look similar to:
 
 .B "machine host.domain.com login myself password secret"
-
-If this option is used twice, the second will again disable netrc usage.
 .IP "--netrc-optional"
 Very similar to \fI--netrc\fP, but this option makes the .netrc usage
 \fBoptional\fP and not mandatory as the \fI--netrc\fP does.
@@ -833,12 +796,14 @@ will use a standard buffered output stream that will have the effect that it
 will output the data in chunks, not necessarily exactly when the data arrives.
 Using this option will disable that buffering.
 
-If this option is used twice, the second will again switch on buffering.
+Note that this is the negated option name documented. You can thus use
+\fI--buffer\fP to enforce the buffering.
 .IP "--no-keepalive"
 Disables the use of keepalive messages on the TCP connection, as by default
 curl enables them.
 
-If this option is used twice, the second will again enable keepalive.
+Note that this is the negated option name documented. You can thus use
+\fI--keepalive\fP to enforce keepalive.
 .IP "--no-sessionid"
 (SSL) Disable curl's use of SSL session-ID caching.  By default all transfers
 are done using the cache. Note that while nothing ever should get hurt by
@@ -846,8 +811,8 @@ attempting to reuse SSL session-IDs, there seem to be broken SSL
 implementations in the wild that may require you to disable this in order for
 you to succeed. (Added in 7.16.0)
 
-If this option is used twice, the second will again switch on use of the
-session cache.
+Note that this is the negated option name documented. You can thus use
+\fI--sessionid\fP to enforce session-ID caching.
 .IP "--ntlm"
 (HTTP) Enables NTLM authentication. The NTLM authentication method was
 designed by Microsoft and is used by IIS web servers. It is a proprietary
@@ -903,41 +868,26 @@ a redirection. This option is meaningful only when using \fI-L/--location\fP
 Tells curl to pick a suitable authentication method when communicating with
 the given proxy. This might cause an extra request/response round-trip. (Added
 in 7.13.2)
-
-If this option is used twice, the second will again disable the proxy use-any
-authentication.
 .IP "--proxy-basic"
 Tells curl to use HTTP Basic authentication when communicating with the given
 proxy. Use \fI--basic\fP for enabling HTTP Basic with a remote host. Basic is
 the default authentication method curl uses with proxies.
-
-If this option is used twice, the second will again disable proxy HTTP Basic
-authentication.
 .IP "--proxy-digest"
 Tells curl to use HTTP Digest authentication when communicating with the given
 proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
-
-If this option is used twice, the second will again disable proxy HTTP Digest.
 .IP "--proxy-negotiate"
 Tells curl to use HTTP Negotiate authentication when communicating
 with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate
-with a remote host.
-
-If this option is used twice, the second will again disable proxy HTTP
-Negotiate. (Added in 7.17.1)
+with a remote host. (Added in 7.17.1)
 .IP "--proxy-ntlm"
 Tells curl to use HTTP NTLM authentication when communicating with the given
 proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
-
-If this option is used twice, the second will again disable proxy HTTP NTLM.
 .IP "-p/--proxytunnel"
 When an HTTP proxy is used (\fI-x/--proxy\fP), this option will cause non-HTTP
 protocols to attempt to tunnel through the proxy instead of merely using it to
 do HTTP-like operations. The tunnel approach is made with the HTTP proxy
 CONNECT request and requires that the proxy allows direct connect to the
 remote port number curl wants to tunnel through to.
-
-If this option is used twice, the second will again disable proxy tunnel.
 .IP "--pubkey <key>"
 (SSH) Public key file name. Allows you to provide your public key in this
 separate file.
@@ -1033,14 +983,10 @@ If this option is used several times, the last one will be used.
 .IP "--raw"
 When used, it disables all internal HTTP decoding of content or transfer
 encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)
-
-If this option is used several times, each occurrence toggles this on/off.
 .IP "-R/--remote-time"
 When used, this will make libcurl attempt to figure out the timestamp of the
 remote file, and if that is available make the local file get that same
 timestamp.
-
-If this option is used twice, the second time disables this again.
 .IP "--retry <num>"
 If a transient error is returned when curl tries to perform a transfer, it
 will retry this number of times before giving up. Setting the number to 0
@@ -1075,12 +1021,8 @@ If this option is used multiple times, the last occurrence decide the amount.
 .IP "-s/--silent"
 Silent mode. Don't show progress meter or error messages.  Makes
 Curl mute.
-
-If this option is used twice, the second will again disable silent mode.
 .IP "-S/--show-error"
 When used with -s it makes curl show error message if it fails.
-
-If this option is used twice, the second will again disable show error.
 .IP "--socks4 <host[:port]>"
 Use the specified SOCKS4 proxy. If the port number is not specified, it is
 assumed at port 1080. (Added in 7.15.2)
@@ -1127,8 +1069,6 @@ If this option is used several times, the last one will be used.
 .IP "--tcp-nodelay"
 Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
 details about this option. (Added in 7.11.2)
-
-If this option is used several times, each occurrence toggles this on/off.
 .IP "-t/--telnet-option <OPT=val>"
 Pass options to the telnet protocol. Supported options are:
 
@@ -1181,8 +1121,6 @@ If this option is used several times, the last one will be used.
 .IP "--trace-time"
 Prepends a time stamp to each trace or verbose line that curl displays.
 (Added in 7.14.0)
-
-If this option is used several times, each occurrence will toggle it on/off.
 .IP "-u/--user <user:password>"
 Specify user and password to use for server authentication. Overrides
 \fI-n/--netrc\fP and \fI--netrc-optional\fP.
@@ -1222,8 +1160,6 @@ If you think this option still doesn't give you enough details, consider using
 \fI--trace\fP or \fI--trace-ascii\fP instead.
 
 This option overrides previous uses of \fI--trace-ascii\fP or \fI--trace\fP.
-
-If this option is used twice, the second will do nothing extra.
 .IP "-V/--version"
 Displays information about curl and the libcurl version it uses.
 
@@ -1447,8 +1383,6 @@ IPv6 addresses only.
 .IP "-#/--progress-bar"
 Make curl display progress information as a progress bar instead of the
 default statistics.
-
-If this option is used twice, the second will again disable the progress bar.
 .SH FILES
 .I ~/.curlrc
 .RS
index 18b9297f2fd8bfb18103a7efe9ed65cd35a64c11..92f5efa97a4ea09b87c3b046587923086febf73b 100644 (file)
@@ -200,32 +200,6 @@ typedef enum {
   HTTPREQ_LAST
 } HttpReq;
 
-/* Just a set of bits */
-#ifndef CONF_DEFAULT
-#define CONF_DEFAULT  0
-#endif
-
-#define CONF_ISATTY (1<<0) /* output to tty! */
-#define CONF_AUTO_REFERER (1<<4) /* the automatic referer-system please! */
-#define CONF_HEADER   (1<<8) /* throw the header out too */
-#define CONF_NOPROGRESS (1<<10) /* shut off the progress meter */
-#define CONF_NOBODY   (1<<11) /* get meta-data (headers) about the file
-                                 without transferring the body, use HEAD to
-                                 get http document */
-#define CONF_FAILONERROR (1<<12) /* no output on http error codes >= 300 */
-#define CONF_DIRLISTONLY (1<<16) /* request nonverbose directory listing */
-#define CONF_FTPAPPEND (1<<20) /* Append instead of overwrite on upload! */
-#define CONF_NETRC    (1<<22)  /* read user+password from .netrc */
-#define CONF_FOLLOWLOCATION (1<<23) /* use Location: Luke! */
-#define CONF_GETTEXT  (1<<24) /* use ASCII/text for transfer */
-#define CONF_MUTE     (1<<28) /* force NOPROGRESS */
-
-#define CONF_NETRC_OPT (1<<29)  /* read user+password from either
-                                 * .netrc or URL*/
-#define CONF_UNRESTRICTED_AUTH (1<<30)
-/* Send authentication (user+password) when following
- * locations, even when hostname changed */
-
 #ifdef WIN32
 #include <direct.h>
 #define F_OK 0
@@ -380,9 +354,10 @@ static int ftruncate64 (int fd, curl_off_t where)
 #endif
 
 typedef enum {
-    TRACE_BIN,   /* tcpdump inspired look */
-    TRACE_ASCII, /* like *BIN but without the hex output */
-    TRACE_PLAIN  /* -v/--verbose type */
+  TRACE_NONE,  /* no trace/verbose output at all! */
+  TRACE_BIN,   /* tcpdump inspired look */
+  TRACE_ASCII, /* like *BIN but without the hex output */
+  TRACE_PLAIN  /* -v/--verbose type */
 } trace;
 
 struct OutStruct {
@@ -431,7 +406,22 @@ struct Configurable {
   char *proxyuserpwd;
   char *proxy;
   bool proxytunnel;
-  long conf;
+  bool ftp_append;         /* APPE on ftp */
+  bool mute;               /* shutup */
+  bool use_ascii;          /* select ascii or text transfer */
+  bool autoreferer;        /* automatically set referer */
+  bool failonerror;        /* fail on (HTTP) errors */
+  bool include_headers;    /* send headers to data output */
+  bool no_body;            /* don't get the body */
+  bool dirlistonly;        /* only get the FTP dir list */
+  bool followlocation;     /* follow http redirects */
+  bool unrestricted_auth;  /* Continue to send authentication (user+password)
+                              when following ocations, even when hostname
+                              changed */
+  bool netrc_opt;
+  bool netrc;
+  bool noprogress;
+  bool isatty;             /* updated internally only if the output is a tty */
   struct getout *url_list; /* point to the first node */
   struct getout *url_last; /* point to the last/current node */
   struct getout *url_get;  /* point to the node to fill in URL */
@@ -521,6 +511,8 @@ struct Configurable {
   bool nokeepalive; /* for keepalive needs */
   long alivetime;
 
+  int default_node_flags; /* default flags to seach for each 'node', which is
+                             basically each given URL to transfer */
   struct OutStruct *outs;
 };
 
@@ -529,7 +521,7 @@ struct Configurable {
 /* produce this text message to the user unless mute was selected */
 static void warnf(struct Configurable *config, const char *fmt, ...)
 {
-  if(!(config->conf & CONF_MUTE)) {
+  if(!config->mute) {
     va_list ap;
     int len;
     char *ptr;
@@ -863,6 +855,8 @@ static struct getout *new_getout(struct Configurable *config)
 
     /* move the last pointer */
     config->url_last = node;
+
+    node->flags = config->default_node_flags;
   }
   return node;
 }
@@ -1562,6 +1556,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
   bool longopt=FALSE;
   bool singleopt=FALSE; /* when true means '-o foo' used '-ofoo' */
   ParameterError err;
+  bool toggle=TRUE; /* how to switch boolean options, on or off. Controlled
+                       by using --OPTION or --no-OPTION */
 
   /* single-letter,
      long-name,
@@ -1576,6 +1572,9 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     {"*c", "connect-timeout", TRUE},
     {"*d", "ciphers",    TRUE},
     {"*e", "disable-epsv", FALSE},
+    {"*E", "epsv", FALSE}, /* made like this to make --no-epsv and --epsv to
+                              work although --disable-epsv is the documented
+                              option */
 #ifdef USE_ENVIRONMENT
     {"*f", "environment", FALSE},
 #endif
@@ -1602,6 +1601,9 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     {"*x", "krb4" ,       TRUE}, /* this is the previous name */
     {"*y", "max-filesize", TRUE},
     {"*z", "disable-eprt", FALSE},
+    {"*Z", "eprt", FALSE}, /* made like this to make --no-eprt and --eprt to
+                              work although --disable-eprt is the documented
+                              option */
     {"$a", "ftp-ssl",    FALSE},
     {"$b", "ftp-pasv",   FALSE},
     {"$c", "socks5",   TRUE},
@@ -1626,14 +1628,14 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     {"$T", "socks4a",    TRUE},
     {"$u", "ftp-alternative-to-user", TRUE},
     {"$v", "ftp-ssl-reqd", FALSE},
-    {"$w", "no-sessionid", FALSE},
+    {"$w", "sessionid", FALSE}, /* listed as --no-sessionid in the help */
     {"$x", "ftp-ssl-control", FALSE},
     {"$y", "ftp-ssl-ccc", FALSE},
     {"$j", "ftp-ssl-ccc-mode", TRUE},
     {"$z", "libcurl",    TRUE},
     {"$#", "raw",        FALSE},
     {"$0", "post301",    FALSE},
-    {"$1", "no-keepalive",   FALSE},
+    {"$1", "keepalive",   FALSE}, /* listed as --no-keepalive in the help */
     {"$2", "socks5-hostname", TRUE},
     {"$3", "keepalive-time",  TRUE},
 
@@ -1684,9 +1686,10 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     {"M", "manual",      FALSE},
     {"n", "netrc",       FALSE},
     {"no", "netrc-optional", FALSE},
-    {"N", "no-buffer",   FALSE},
+    {"N", "buffer",   FALSE}, /* listed as --no-buffer in the help */
     {"o", "output",      TRUE},
-    {"O", "remote-name", FALSE},
+    {"O",  "remote-name", FALSE},
+    {"Oa", "remote-name-all", FALSE},
     {"p", "proxytunnel", FALSE},
     {"P", "ftpport",     TRUE}, /* older version */
     {"P", "ftp-port",    TRUE},
@@ -1718,6 +1721,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     char *word=('-' == flag[0])?flag+2:flag;
     size_t fnam=strlen(word);
     int numhits=0;
+
+    if(!strncmp(word, "no-", 3)) {
+      /* disable this option but ignore the "no-" part when looking for it */
+      word += 3;
+      toggle = FALSE;
+    }
+
     for(j=0; j< sizeof(aliases)/sizeof(aliases[0]); j++) {
       if(curlx_strnequal(aliases[j].lname, word, fnam)) {
         longopt = TRUE;
@@ -1778,15 +1788,17 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     if(hit < 0) {
       return PARAM_OPTION_UNKNOWN;
     }
-    if(!longopt && aliases[hit].extraparam && parse[1]) {
-      nextarg=(char *)&parse[1]; /* this is the actual extra parameter */
-      singleopt=TRUE;   /* don't loop anymore after this */
-    }
-    else if(!nextarg && aliases[hit].extraparam) {
-      return PARAM_REQUIRES_PARAMETER;
+    if(aliases[hit].extraparam) {
+      /* this option requires an extra parameter */
+      if(!longopt && parse[1]) {
+        nextarg=(char *)&parse[1]; /* this is the actual extra parameter */
+        singleopt=TRUE;   /* don't loop anymore after this */
+      }
+      else if(!nextarg)
+        return PARAM_REQUIRES_PARAMETER;
+      else
+        *usedarg = TRUE; /* mark it as used */
     }
-    else if(nextarg && aliases[hit].extraparam)
-      *usedarg = TRUE; /* mark it as used */
 
     switch(letter) {
     case '*': /* options without a short option */
@@ -1805,11 +1817,14 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         GetStr(&config->cipher_list, nextarg);
         break;
       case 'e': /* --disable-epsv */
-        config->disable_epsv ^= TRUE;
+        config->disable_epsv = toggle;
+        break;
+      case 'E': /* --epsv */
+        config->disable_epsv = !toggle;
         break;
 #ifdef USE_ENVIRONMENT
       case 'f':
-        config->writeenv ^= TRUE;
+        config->writeenv = toggle;
         break;
 #endif
       case 'g': /* --trace */
@@ -1863,33 +1878,49 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         break;
 
       case 'j': /* --compressed */
-        config->encoding ^= TRUE;
+        config->encoding = toggle;
         break;
 
       case 'k': /* --digest */
-        config->authtype = CURLAUTH_DIGEST;
+        if(toggle)
+          config->authtype |= CURLAUTH_DIGEST;
+        else
+          config->authtype &= ~CURLAUTH_DIGEST;
         break;
 
       case 'l': /* --negotiate */
-        if(curlinfo->features & CURL_VERSION_GSSNEGOTIATE)
-          config->authtype = CURLAUTH_GSSNEGOTIATE;
+        if(toggle) {
+          if(curlinfo->features & CURL_VERSION_GSSNEGOTIATE)
+            config->authtype |= CURLAUTH_GSSNEGOTIATE;
+          else
+            return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
         else
-          return PARAM_LIBCURL_DOESNT_SUPPORT;
+          config->authtype &= ~CURLAUTH_GSSNEGOTIATE;
         break;
 
       case 'm': /* --ntlm */
-        if(curlinfo->features & CURL_VERSION_NTLM)
-          config->authtype = CURLAUTH_NTLM;
+        if(toggle) {
+          if(curlinfo->features & CURL_VERSION_NTLM)
+            config->authtype |= CURLAUTH_NTLM;
+          else
+            return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
         else
-          return PARAM_LIBCURL_DOESNT_SUPPORT;
+          config->authtype &= ~CURLAUTH_NTLM;
         break;
 
       case 'n': /* --basic for completeness */
-        config->authtype = CURLAUTH_BASIC;
+        if(toggle)
+          config->authtype |= CURLAUTH_BASIC;
+        else
+          config->authtype &= ~CURLAUTH_BASIC;
         break;
 
       case 'o': /* --anyauth, let libcurl pick it */
-        config->authtype = CURLAUTH_ANY;
+        if(toggle)
+          config->authtype = CURLAUTH_ANY;
+        /* --no-anyauth simply doesn't touch it */
         break;
 
 #ifdef MSDOS
@@ -1898,7 +1929,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         break;
 #endif
       case 'q': /* --ftp-create-dirs */
-        config->ftp_create_dirs ^= TRUE;
+        config->ftp_create_dirs = toggle;
         break;
 
       case 'r': /* --create-dirs */
@@ -1913,7 +1944,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
 
       case 't': /* --proxy-ntlm */
         if(curlinfo->features & CURL_VERSION_NTLM)
-          config->proxyntlm ^= TRUE;
+          config->proxyntlm = toggle;
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
@@ -1953,7 +1984,10 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
           return PARAM_BAD_NUMERIC;
         break;
       case 'z': /* --disable-eprt */
-        config->disable_eprt ^= TRUE;
+        config->disable_eprt = toggle;
+        break;
+      case 'Z': /* --eprt */
+        config->disable_eprt = !toggle;
         break;
 
       default: /* the URL! */
@@ -1986,7 +2020,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
     case '$': /* more options without a short option */
       switch(subletter) {
       case 'a': /* --ftp-ssl */
-        config->ftp_ssl ^= TRUE;
+        config->ftp_ssl = toggle;
         break;
       case 'b': /* --ftp-pasv */
         if(config->ftpport)
@@ -2012,13 +2046,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         config->socksver = CURLPROXY_SOCKS5_HOSTNAME;
         break;
       case 'd': /* --tcp-nodelay option */
-        config->tcp_nodelay ^= TRUE;
+        config->tcp_nodelay = toggle;
         break;
       case 'e': /* --proxy-digest */
-        config->proxydigest ^= TRUE;
+        config->proxydigest = toggle;
         break;
       case 'f': /* --proxy-basic */
-        config->proxybasic ^= TRUE;
+        config->proxybasic = toggle;
         break;
       case 'g': /* --retry */
         if(str2num(&config->req_retry, nextarg))
@@ -2035,7 +2069,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
 
       case 'k': /* --proxy-negotiate */
         if(curlinfo->features & CURL_VERSION_GSSNEGOTIATE)
-          config->proxynegotiate ^= TRUE;
+          config->proxynegotiate = toggle;
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
@@ -2043,16 +2077,16 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         GetStr(&config->ftp_account, nextarg);
         break;
       case 'n': /* --proxy-anyauth */
-        config->proxyanyauth ^= TRUE;
+        config->proxyanyauth = toggle;
         break;
       case 'o': /* --trace-time */
-        config->tracetime ^= TRUE;
+        config->tracetime = toggle;
         break;
       case 'p': /* --ignore-content-length */
-        config->ignorecl ^= TRUE;
+        config->ignorecl = toggle;
         break;
       case 'q': /* --ftp-skip-pasv-ip */
-        config->ftp_skip_ip ^= TRUE;
+        config->ftp_skip_ip = toggle;
         break;
       case 'r': /* --ftp-method (undocumented at this point) */
         config->ftp_filemethod = ftpfilemethod(config, nextarg);
@@ -2077,16 +2111,16 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         GetStr(&config->ftp_alternative_to_user, nextarg);
         break;
       case 'v': /* --ftp-ssl-reqd */
-        config->ftp_ssl_reqd ^= TRUE;
+        config->ftp_ssl_reqd = toggle;
         break;
       case 'w': /* --no-sessionid */
-        config->disable_sessionid ^= TRUE;
+        config->disable_sessionid = !toggle;
         break;
       case 'x': /* --ftp-ssl-control */
-        config->ftp_ssl_control ^= TRUE;
+        config->ftp_ssl_control = toggle;
         break;
       case 'y': /* --ftp-ssl-ccc */
-        config->ftp_ssl_ccc ^= TRUE;
+        config->ftp_ssl_ccc = toggle;
         if(!config->ftp_ssl_ccc_mode)
             config->ftp_ssl_ccc_mode = CURLFTPSSL_CCC_PASSIVE;
         break;
@@ -2098,13 +2132,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         GetStr(&config->libcurl, nextarg);
         break;
       case '#': /* --raw */
-        config->raw ^= TRUE;
+        config->raw = toggle;
         break;
       case '0': /* --post301 */
-        config->post301 ^= TRUE;
+        config->post301 = toggle;
         break;
       case '1': /* --no-keepalive */
-        config->nokeepalive ^= TRUE;
+        config->nokeepalive = !toggle;
         break;
       case '3': /* --keepalive-time */
         if(str2num(&config->alivetime, nextarg))
@@ -2113,7 +2147,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       }
       break;
     case '#': /* --progress-bar */
-      config->progressmode ^= CURL_PROGRESS_BAR;
+      config->progressmode = toggle?CURL_PROGRESS_BAR:0;
       break;
     case '0':
       /* HTTP version 1.0 */
@@ -2141,7 +2175,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
     case 'a':
       /* This makes the FTP sessions use APPE instead of STOR */
-      config->conf ^= CONF_FTPAPPEND;
+      config->ftp_append = toggle;
       break;
     case 'A':
       /* This specifies the User-Agent name */
@@ -2161,7 +2195,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
     case 'B':
       /* use ASCII/text when transfering */
-      config->conf ^= CONF_GETTEXT;
+      config->use_ascii = toggle;
       break;
     case 'c':
       /* get the file name to dump all cookies in */
@@ -2349,9 +2383,11 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         if(ptr) {
           /* Automatic referer requested, this may be combined with a
              set initial one */
-          config->conf |= CONF_AUTO_REFERER;
+          config->autoreferer = TRUE;
           *ptr = 0; /* zero terminate here */
         }
+        else
+          config->autoreferer = FALSE;
         GetStr(&config->referer, nextarg);
       }
       break;
@@ -2423,7 +2459,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
     case 'f':
       /* fail hard on errors  */
-      config->conf ^= CONF_FAILONERROR;
+      config->failonerror = toggle;
       break;
     case 'F':
       /* "form data" simulation, this is a little advanced so lets do our best
@@ -2439,7 +2475,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
 
     case 'g': /* g disables URLglobbing */
-      config->globoff ^= TRUE;
+      config->globoff = toggle;
       break;
 
     case 'G': /* HTTP GET */
@@ -2447,8 +2483,12 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
 
     case 'h': /* h for help */
-      help();
-      return PARAM_HELP_REQUESTED;
+      if(toggle) {
+        help();
+        return PARAM_HELP_REQUESTED;
+      }
+      /* we now actually support --no-help too! */
+      break;
     case 'H':
       /* A custom header to append to a list */
       err = add2list(&config->headers, nextarg);
@@ -2456,23 +2496,24 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         return err;
       break;
     case 'i':
-      config->conf ^= CONF_HEADER; /* include the HTTP header as well */
+      config->include_headers = toggle; /* include the headers as well in the
+                                           general output stream */
       break;
     case 'j':
-      config->cookiesession ^= TRUE;
+      config->cookiesession = toggle;
       break;
     case 'I':
       /*
-       * CONF_BODY will imply CONF_HEADER later on
+       * no_body will imply include_headers later on
        */
-      config->conf ^= CONF_NOBODY;
+      config->no_body = toggle;
       if(SetHTTPrequest(config,
-                        (config->conf & CONF_NOBODY)?HTTPREQ_HEAD:HTTPREQ_GET,
+                        (config->no_body)?HTTPREQ_HEAD:HTTPREQ_GET,
                         &config->httpreq))
         return PARAM_BAD_USE;
       break;
     case 'k': /* allow insecure SSL connects */
-      config->insecure_ok ^= TRUE;
+      config->insecure_ok = toggle;
       break;
     case 'K': /* parse config file */
       if(parseconfig(nextarg, config))
@@ -2480,15 +2521,15 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
               nextarg);
       break;
     case 'l':
-      config->conf ^= CONF_DIRLISTONLY; /* only list the names of the FTP dir */
+      config->dirlistonly = toggle; /* only list the names of the FTP dir */
       break;
     case 'L':
-      config->conf ^= CONF_FOLLOWLOCATION; /* Follow Location: HTTP headers */
+      config->followlocation = toggle; /* Follow Location: HTTP headers */
       switch (subletter) {
       case 't':
         /* Continue to send authentication (user+password) when following
          * locations, even when hostname changed */
-        config->conf ^= CONF_UNRESTRICTED_AUTH;
+        config->unrestricted_auth = toggle;
         break;
       }
       break;
@@ -2498,33 +2539,41 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
         return PARAM_BAD_NUMERIC;
       break;
     case 'M': /* M for manual, huge help */
+      if(toggle) { /* --no-manual shows no manual... */
 #ifdef USE_MANUAL
-      hugehelp();
-      return PARAM_HELP_REQUESTED;
+        hugehelp();
+        return PARAM_HELP_REQUESTED;
 #else
-      warnf(config,
-            "built-in manual was disabled at build-time!\n");
-      return PARAM_OPTION_UNKNOWN;
+        warnf(config,
+              "built-in manual was disabled at build-time!\n");
+        return PARAM_OPTION_UNKNOWN;
 #endif
+      }
+      break;
     case 'n':
       switch(subletter) {
       case 'o': /* CA info PEM file */
         /* use .netrc or URL */
-        config->conf ^= CONF_NETRC_OPT;
+        config->netrc_opt = toggle;
         break;
       default:
         /* pick info from .netrc, if this is used for http, curl will
            automatically enfore user+password with the request */
-        config->conf ^= CONF_NETRC;
+        config->netrc = toggle;
         break;
       }
       break;
     case 'N':
       /* disable the output I/O buffering */
-      config->nobuffer ^= 1;
+      config->nobuffer = !toggle;
       break;
-    case 'o':
-    case 'O':
+    case 'O': /* --remote-name */
+      if(subletter == 'a') { /* --remote-name-all */
+        config->default_node_flags = toggle?GETOUT_USEREMOTE:0;
+        break;
+      }
+    /* fall-through! */
+    case 'o': /* --output */
       /* output file */
       {
         struct getout *url;
@@ -2546,11 +2595,16 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
 
         if(url) {
           /* fill in the outfile */
-          if('o' == letter)
+          if('o' == letter) {
             GetStr(&url->outfile, nextarg);
+            url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+          }
           else {
             url->outfile=NULL; /* leave it */
-            url->flags |= GETOUT_USEREMOTE;
+            if(toggle)
+              url->flags |= GETOUT_USEREMOTE;  /* switch on */
+            else
+              url->flags &= ~GETOUT_USEREMOTE; /* switch off */
           }
           url->flags |= GETOUT_OUTFILE;
         }
@@ -2566,7 +2620,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
     case 'p':
       /* proxy tunnel for non-http protocols */
-      config->proxytunnel ^= TRUE;
+      config->proxytunnel = toggle;
       break;
 
     case 'q': /* if used first, already taken care of, we do it like
@@ -2628,16 +2682,19 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       break;
     case 'R':
       /* use remote file's time */
-      config->remote_time ^= TRUE;
+      config->remote_time = toggle;
       break;
     case 's':
       /* don't show progress meter, don't show errors : */
-      config->conf ^= (CONF_MUTE|CONF_NOPROGRESS);
-      config->showerror ^= TRUE; /* toggle off */
+      if(toggle)
+        config->mute = config->noprogress = TRUE;
+      else
+        config->mute = config->noprogress = FALSE;
+      config->showerror = !toggle; /* toggle off */
       break;
     case 'S':
       /* show errors */
-      config->showerror ^= TRUE; /* toggle on if used with -s */
+      config->showerror = toggle; /* toggle on if used with -s */
       break;
     case 't':
       /* Telnet options */
@@ -2689,17 +2746,26 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
       checkpasswd("proxy", &config->proxyuserpwd);
       break;
     case 'v':
-      /* the '%' thing here will cause the trace get sent to stderr */
-      GetStr(&config->trace_dump, (char *)"%");
-      if(config->tracetype && (config->tracetype != TRACE_PLAIN))
-        warnf(config,
-              "-v/--verbose overrides an earlier trace/verbose option\n");
-      config->tracetype = TRACE_PLAIN;
+      if(toggle) {
+        /* the '%' thing here will cause the trace get sent to stderr */
+        GetStr(&config->trace_dump, (char *)"%");
+        if(config->tracetype && (config->tracetype != TRACE_PLAIN))
+          warnf(config,
+                "-v/--verbose overrides an earlier trace/verbose option\n");
+        config->tracetype = TRACE_PLAIN;
+      }
+      else
+        /* verbose is disabled here */
+        config->tracetype = TRACE_NONE;
       break;
     case 'V':
     {
       const char * const *proto;
 
+      if(!toggle)
+        /* --no-version yields no output! */
+        break;
+
       printf(CURL_ID "%s\n", curl_version());
       if (curlinfo->protocols) {
         printf("Protocols: ");
@@ -3442,7 +3508,7 @@ int my_trace(CURL *handle, curl_infotype type,
            to stderr or stdout, we don't display the alert about the data not
            being shown as the data _is_ shown then just not via this
            function */
-        if(!(config->conf&CONF_ISATTY) ||
+        if(!config->isatty ||
            ((config->trace_stream != stderr) &&
             (config->trace_stream != stdout))) {
           if(!newl)
@@ -3871,7 +3937,6 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
   }
   config->postfieldsize = -1;
   config->showerror=TRUE;
-  config->conf=CONF_DEFAULT;
   config->use_httpget=FALSE;
   config->create_dirs=FALSE;
   config->lastrecvtime = cutil_tvnow();
@@ -3997,7 +4062,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
       free(config->postfields);
       config->postfields = NULL;
       if(SetHTTPrequest(config,
-                        (config->conf&CONF_NOBODY?HTTPREQ_HEAD:HTTPREQ_GET),
+                        (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                         &config->httpreq)) {
         free(httpgetfields);
         return PARAM_BAD_USE;
@@ -4328,9 +4393,9 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
            && outs.stream && isatty(fileno(outs.stream)))
           /* we send the output to a tty, therefore we switch off the progress
              meter */
-          config->conf |= CONF_NOPROGRESS|CONF_ISATTY;
+          config->noprogress = config->isatty = TRUE;
 
-        if (urlnum > 1 && !(config->conf&CONF_MUTE)) {
+        if (urlnum > 1 && !(config->mute)) {
           fprintf(config->errors, "\n[%d/%d]: %s --> %s\n",
                   i+1, urlnum, url, outfile ? outfile : "<stdout>");
           if (separator)
@@ -4379,7 +4444,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(!config->errors)
           config->errors = stderr;
 
-        if(!outfile && !(config->conf & CONF_GETTEXT)) {
+        if(!outfile && !config->use_ascii) {
           /* We get the output to stdout and we have not got the ASCII/text
              flag, then set stdout to be binary */
           SET_BINMODE(stdout);
@@ -4414,33 +4479,29 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
         my_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
         my_setopt(curl, CURLOPT_URL, url);     /* what to fetch */
         my_setopt(curl, CURLOPT_PROXY, config->proxy); /* proxy to use */
-        my_setopt(curl, CURLOPT_NOPROGRESS, config->conf&CONF_NOPROGRESS);
-        if(config->conf&CONF_NOBODY) {
+        my_setopt(curl, CURLOPT_NOPROGRESS, config->noprogress);
+        if(config->no_body) {
           my_setopt(curl, CURLOPT_NOBODY, 1);
           my_setopt(curl, CURLOPT_HEADER, 1);
         }
         else
-          my_setopt(curl, CURLOPT_HEADER, config->conf&CONF_HEADER);
+          my_setopt(curl, CURLOPT_HEADER, config->include_headers);
 
-        my_setopt(curl, CURLOPT_FAILONERROR,
-                  config->conf&CONF_FAILONERROR);
+        my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror);
         my_setopt(curl, CURLOPT_UPLOAD, uploadfile?TRUE:FALSE);
-        my_setopt(curl, CURLOPT_DIRLISTONLY,
-                  config->conf&CONF_DIRLISTONLY);
-        my_setopt(curl, CURLOPT_APPEND, config->conf&CONF_FTPAPPEND);
+        my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly);
+        my_setopt(curl, CURLOPT_APPEND, config->ftp_append);
 
-        if (config->conf&CONF_NETRC_OPT)
+        if (config->netrc_opt)
           my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
-        else if (config->conf&CONF_NETRC)
+        else if (config->netrc)
           my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_REQUIRED);
         else
           my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_IGNORED);
 
-        my_setopt(curl, CURLOPT_FOLLOWLOCATION,
-                  config->conf&CONF_FOLLOWLOCATION);
-        my_setopt(curl, CURLOPT_UNRESTRICTED_AUTH,
-                  config->conf&CONF_UNRESTRICTED_AUTH);
-        my_setopt(curl, CURLOPT_TRANSFERTEXT, config->conf&CONF_GETTEXT);
+        my_setopt(curl, CURLOPT_FOLLOWLOCATION, config->followlocation);
+        my_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, config->unrestricted_auth);
+        my_setopt(curl, CURLOPT_TRANSFERTEXT, config->use_ascii);
         my_setopt(curl, CURLOPT_USERPWD, config->userpwd);
         my_setopt(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
         my_setopt(curl, CURLOPT_RANGE, config->range);
@@ -4459,8 +4520,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
           break;
         }
         my_setopt(curl, CURLOPT_REFERER, config->referer);
-        my_setopt(curl, CURLOPT_AUTOREFERER,
-                  config->conf&CONF_AUTO_REFERER);
+        my_setopt(curl, CURLOPT_AUTOREFERER, config->autoreferer);
         my_setopt(curl, CURLOPT_USERAGENT, config->useragent);
         my_setopt(curl, CURLOPT_FTPPORT, config->ftpport);
         my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
@@ -4507,8 +4567,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
           my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
         }
 
-        if((config->conf&CONF_NOBODY) ||
-           config->remote_time) {
+        if(config->no_body || config->remote_time) {
           /* no body or use remote time */
           my_setopt(curl, CURLOPT_FILETIME, TRUE);
         }
@@ -4540,7 +4599,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
 
         progressbarinit(&progressbar, config);
         if((config->progressmode == CURL_PROGRESS_BAR) &&
-           !(config->conf&(CONF_NOPROGRESS|CONF_MUTE))) {
+           !config->noprogress && !config->mute) {
           /* we want the alternative style, then we have to implement it
              ourselves! */
           my_setopt(curl, CURLOPT_PROGRESSFUNCTION, myprogress);
@@ -4575,8 +4634,7 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
         if(config->authtype)
           my_setopt(curl, CURLOPT_HTTPAUTH, config->authtype);
 
-        /* new in curl 7.9.7 */
-        if(config->trace_dump) {
+        if(config->tracetype != TRACE_NONE) {
           my_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
           my_setopt(curl, CURLOPT_DEBUGDATA, config);
           my_setopt(curl, CURLOPT_VERBOSE, TRUE);
@@ -4776,8 +4834,9 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
               if(outs.bytes && outs.filename) {
                 /* We have written data to a output file, we truncate file
                  */
-                if(!(config->conf&CONF_MUTE))
-                  fprintf(config->errors, "Throwing away %Od bytes\n", outs.bytes);
+                if(!config->mute)
+                  fprintf(config->errors, "Throwing away %Od bytes\n",
+                          outs.bytes);
                 fflush(outs.stream);
                 /* truncate file at the position where we started appending */
 #ifdef HAVE_FTRUNCATE
@@ -5062,13 +5121,13 @@ static void show_dir_errno(FILE *errors, const char *name)
 #ifdef ENOSPC
   case ENOSPC:
     fprintf(errors,"No space left on the file system that will "
-           "contain the directory %s.\n", name);
+            "contain the directory %s.\n", name);
     break;
 #endif
 #ifdef EDQUOT
   case EDQUOT:
     fprintf(errors,"Cannot create directory %s because you "
-           "exceeded your quota.\n", name);
+            "exceeded your quota.\n", name);
     break;
 #endif
   default :
index 07364eccae4190fb99498dd14351bf2470ca1146..fb28485c1abf40ce780b48b655cf826de93bff5a 100644 (file)
@@ -29,7 +29,7 @@ http
 HTTP resume request over proxy with auth without server supporting it
  </name>
  <command option="no-output">
--x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/256 -C - -i -o log/fewl.txt -U daniel:stenberg
+-x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/256 -C - --no-include -o log/fewl.txt -U daniel:stenberg
 </command>
 <file name="log/fewl.txt">
 This text is here to simulate a partly downloaded file to resume
index c188c6d34f5fe6b6a9d72bea9c4ffc38d27770ea..377b5b2ae25f269f2327179e8c4b5fb8a54dfe6e 100644 (file)
@@ -28,7 +28,7 @@ http
 HTTP resume request without server supporting it
  </name>
  <command option="no-output">
-http://%HOSTIP:%HTTPPORT/want/38 -C - -i -o log/fewl.txt
+http://%HOSTIP:%HTTPPORT/want/38 -C - --no-include -o log/fewl.txt
 </command>
 <file name="log/fewl.txt">
 This text is here to simulate a partly downloaded file to resume
index 664098971dc6430fe2423e04e10336ad2b8072b0..37172f27c2f40b30402c40c27010651bf726d523 100755 (executable)
@@ -583,7 +583,7 @@ sub stopserver {
 
 sub verifyhttp {
     my ($proto, $ip, $port) = @_;
-    my $cmd = "$CURL -m$server_response_maxtime -o log/verifiedserver -ksvg \"$proto://$ip:$port/verifiedserver\" 2>log/verifyhttp";
+    my $cmd = "$CURL --max-time $server_response_maxtime --output log/verifiedserver --insecure --silent --verbose --globoff \"$proto://$ip:$port/verifiedserver\" 2>log/verifyhttp";
     my $pid;
 
     # verify if our/any server is running on this port
@@ -636,9 +636,9 @@ sub verifyftp {
     my $time=time();
     my $extra;
     if($proto eq "ftps") {
-       $extra = "-k --ftp-ssl-control ";
+       $extra = "--insecure --ftp-ssl-control ";
     }
-    my $cmd="$CURL -m$server_response_maxtime --silent -vg $extra\"$proto://$ip:$port/verifiedserver\" 2>log/verifyftp";
+    my $cmd="$CURL --max-time $server_response_maxtime --silent --verbose --globoff $extra\"$proto://$ip:$port/verifiedserver\" 2>log/verifyftp";
     # check if this is our server running on this port:
     my @data=runclientoutput($cmd);
     logmsg "RUN: $cmd\n" if($verbose);
@@ -2008,8 +2008,8 @@ sub singletest {
 
     my $cmdargs;
     if(!$tool) {
-        # run curl, add -v for debug information output
-        $cmdargs ="$out --include -v --trace-time $cmd";
+        # run curl, add --verbose for debug information output
+        $cmdargs ="$out --include --verbose --trace-time $cmd";
     }
     else {
         $cmdargs = " $cmd"; # $cmd is the command line for the test file