With the exception of use in three quotes as well as our inlcuded copy
of the GPL, all use of the Free Software Foundation's postal address
has been removed.
Re #320.
Curl can pass HTTP traffic through a unix socket instead of TCP with the
CURLOPT_UNIX_SOCKET_PATH option. This is useful if you have a proxy
listening on a local socket between your computer and the scanner. Now
that URL parsing is centralized, take advantage of this to support an
extended name scheme: escl:unix:/path/to/socket:URL
These names won't be picked up on the network when avahi scans, but they
can be passed manually with -d or added to /etc/sane.d/escl.conf. If
the existing escl:URL syntax is used, the socket is not set and the curl
option is not used, so existing network connections work the same as
before.
Since local sockets are optional, the current conf parsing scheme
becomes order dependent. To avoid this, also add an additional "device"
line type to the config parser. If a line starts with "device", the
remainder of the line is treated as a complete device name/URL and
parsed with the URL parsing added in the previous commit.
Scanners are currently passed around by name, which is actually a URL.
Each function parses the URL a little bit, depending on what it needs,
and then sets the same curl options.
This refactors parsing out into a single escl_parse_name() function
called from sane_open and then passes around the resulting ESCL_Device
instead of the raw name. To set up the curl handle, the new
escl_curl_url() reconstructs a URL from the parsed ESCL_Device and sets
the appropriate options on the handle. Each place that makes a curl
call is updated to use the new function.