## 2.08 2019-01-02

Minor Improvements and Bug Fixes

Remove request for S3 object info directly after putting it.

Correct archive-get-queue-max to be size type.

Add error message when current user uid/gid does not map to a name.

Error when --target-action=shutdown specified for < 9.5.

Set TCP keepalives on S3 connections.

Reorder info command text output so most recent backup is output last.

Change file ownership only when required.

Redact authentication header when throwing S3 errors.

Enable S3 storage and encryption for archive-get command in C.

Migrate local info command to C.

Add S3 storage driver.

Add `HttpClient` object.

Add `TlsClient` object.

Add interface objects for libxml2.

Add encryption capability to `Info*` objects.

Add `IoFilter` interface to `CipherBlock` object.

Allow arbitrary `InOut` filters to be chained in `IoFilterGroup`.

Add `infoBackup` object to encapsulate the backup.info file.

Improve JSON to `Variant` conversion and add `Variant` to JSON conversion.

Storage helper improvements. Allow `NULL` stanza in storage helper. Add path expression for repository backup.

Info module improvements. Rename constants in `Info` module for consistency. Remove `#define` statements in the `InfoPg` module to conform with newly-adopted coding standards. Use cast to make for loop more readable in `InfoPg` module. Add `infoArchiveIdHistoryMatch()` to the `InfoArchive` object.

Allow I/O read interface to explicitly request blocking reads.

Improve error messages when info files are missing/corrupt.

Add `strSizeFormat()` to `String` object.

Add `strLstInsert()` and `strLstInsertZ()` to `StringList` object.

Rename `PGBACKREST`/`BACKREST` constants to `PROJECT`.

Require S3 key options except for local/remote commands.

Explicitly compile with Posix 2001 standard.

Add `ServiceError` for errors from a service that can be retried.

Conditional compilation of Perl logic in exit.c.

Merge `cipher.h` into `crypto.h`.

Remove extraneous `use`/`include` statements.

Remove embedded semicolon from `String` constant macros.

Reduce debug level for `infoIni()` to test.

Return `IoFilterGroup *` from `ioFilterGroupAdd()`.

Add coding standards for `String` constants.

Add missing `LOG_DEBUG()` macro.

Clarify when target-action is effective and version support.

Clarify that region/endpoint must be configured correctly for the bucket.

Add documentation for building the documentation.

Add `admonitions` to all documentation renderers (HTML, PDF, Markdown and help text) and update xml files accordingly.

Add HTML table rendering and update PDF/Markdown renderers to support header-less tables. Add optional table captions.

Escape special characters in latex when not in a code block.

Base menu ordering on natural ordering in the manifest.

Replace keywords with more flexible if statements.

Pre-build containers for any execute elements marked pre.

Documentation may be built with user-specified packages.

Add Centos/RHEL 7 option to documentation build.

Allow custom logo for PDF documentation.

Modify general document elements to allow any child element.

Use absolute paths so that ./doc.pl runs.

Pick `pg_switch_wal()`/`pg_switch_xlog()` based on version.

Add configuration to the standby so it works as a primary when promoted.

Create common if expressions for testing os-type.

Add zlib1g-dev to Debian builds.

New test containers with static test certificates.

Fix test binary name for gprof.

Allow arbitrary multiplier and flush character in `IoTestFilterMultiply`.

Update URL for Docker install.

Add `testRepoPath()` to let C unit tests know where the code repository is located.

Merge common/typeStringListTest module into common/typeStringTest.

Merge common/typeVariantListTest module into common/typeVariantTest.