This commit only changes behavior if the hostname is a falsy string
(`''` or `'0'`) and there is a variable that:
* was not set globally before the host definition,
* was not set in the host definition,
* was set globally after the host definition, and
* is relevant to the host.
On Linux systems, `ifconfig` is long deprecated in favor of the `ip`
command from iproute2. Some systems don't have iproute2 (BSDs in
particular), so ddclient will still attempt `ifconfig` if `ip` is
missing.
Also: Don't hide STDERR because error messages are important for
troubleshooting problems. To avoid STDERR noise on systems without the
`ip` command, the command's existence is checked before it is run.
Notes:
* The fetched addresses could be limited to IPv4 or IPv6 depending
on `opt('ipv6')`, and non-global addresses could be filtered out,
but any filtering risks breaking a nontrivial number of existing
configurations.
* This change runs the risk of breaking existing configs that set
`if-skip`. Due to the deprecation of `ifconfig`, and the belief
that only a negligible number of users set `if-skip`, the benefits
of this change are believed to outweigh the config migration
burden imposed on users.
Fixes#93.
If the user passed `-ip` they almost certainly want to use it, even if
they also passed `-if` and `-web`.
Similarly, if the user passed `-if` they almost certainly want to use
it even if they also passed `-web`.
This allows us to use the `//` and `//=` operators.
v5.10.1 was chosen because that is the oldest version of Perl among
all currently supported releases of Ubuntu, CentOS, RHEL, Fedora, and
Debian.
Create a document whose main purpose is to describe notable changes
between released versions. Populate it with the contents of
RELEASENOTE over time and the entries from ChangeLog and
Changelog.old.
For recent releases, the full announcement text can still be found at
https://github.com/ddclient/ddclient/releases
* Add the `m` modifier because the `$headers` variable can contain
multiple headers. If `$headers` contains a Content-Type header but
it is the second or later header then the regex won't match
without `m`.
* Add the `i` modifier because RFC 7230 says that header field names
are case-insensitive.
* Don't require a space after the colon because RFC 7230 says that
the space is optional.
Create a document that describes notable changes between released
versions. Populate it with the contents of RELEASENOTE over time, and
delete RELEASENOTE as it is now redundant. (The full announcements can
still be found at https://github.com/ddclient/ddclient/releases.)
The name NEWS.md was chosen because it is the convention, and because
Debian policy says documents of this nature must be installed at
/usr/share/doc/ddclient/NEWS.gz. For details, see:
https://www.debian.org/doc/debian-policy/ch-docs.html#changelog-files-and-release-notes
* Remove interpolations from the format specifier (in case the
variable contains a `%` character).
* Match the number of arguments to the number of `%` substitutions
in the format specifier.