A small front end to the libcURL library.

Configuration
-------------

The component will try to fetch the given resource. If this operation stalls
for a given amount of time, the transfer will be aborted. The duration can be
set by setting the 'progress_timeout' attribute in the 'config' node. It is
specified in milliseconds and the default value is 10 seconds.

The 'ignore_failures' attribute instructs the component to always report
success (via exit-code 0). It is useful when batching is used where a
failed fetch operation should not influence the over-all result. The default
value is 'false'.

The 'verbose' attribute instruct the component to increase its verbosity
and show diagnostic messages during its operation.

The following config snippets illustrate its usage.

Load the socket plugin in to the fetchurl binary (print output to log):
! + config
!   + libc | stdout: /dev/log | stderr: /dev/log | rtc: /dev/rtc | socket: /socket
!   + vfs
!   | + dir dev
!   |   + device | + log
!   |   + device | + null
!   |   + inline rtc    | : 2000-01-01 00:00
!   |   + inline random | : 01234567890123456789
!   | + dir socket | + lwip | dhcp: yes
!   |
!   + fetch
!   |       url:   http://genode.org/about/LICENSE
!   |       path:  /dev/log
!   |       retry: 3
!   |
!   + report | progress: yes

Use the socket plugin of an other vfs (store file in a directory):
+ config
  + libc | stdout: /dev/log | stderr: /dev/log | rtc: /dev/rtc | socket: /socket
  + vfs
  | + dir dev
  |   + device | + log
  |   + device | + null
  |   + inline rtc    | : 2000-01-01 00:00
  |   + inline random | : 01234567890123456789
  | + fs tcpip
  | + dir download | + fs | label: download -> /
  |
  + fetch
  |       url:   http://genode.org/about/LICENSE
  |       path:  /download/LICENSE
  |       retry: 3
  |
  + report | progress: yes

The two primary options are 'url', the URL to fetch, and 'path', the
file-system path where fetched data is written. Secondary options are
'retry', 'proxy' and 'head'. Retry is the number of fetch attempts to
make following failure, proxy is used to reroute requests and head
instructs the component to only perform a HTTP HEAD request on the
given URL.

An example TOR proxying configuration:

! + fetch
!         url:   http://genode.org/about/LICENSE
!         path:  LICENSE
!         proxy: sock5://10.0.0.1:9050

The presence of a 'report' node in the configuration with an
affirmative 'progress' attribute will enable a progress report.
The 'delay_ms' attribute will set the minimum interval between
reports and defaults to 100 milliseconds. The report format consists
of a 'fetch' node for each resource that features the following
attributes:

! progress
! + fetch | url: ... | total: 16380 | now: 4096 | finished: false
! -

* :url: specified URL of the resource
* :total: total amount of bytes to download
* :now: amount of bytes downloaded so far
* :timeout: denotes if the download timed out
* :finished: denotes if the download has finished
* :result: denotes the result of the download attempt.
  Valid values are 'success' and 'failed'.

