# SYSCONFTOOL

`sysconftool` is a development utility that helps to install application configuration files. `sysconftool` allows an existing application to be upgraded without losing the older version's configuration settings.

`sysconftool` was originally developed to aid in the hellish task of upgrading Courier, which has many configuration files with many different settings. The Standard Operating Procedure (SOP) was to install a default set of configuration files during an upgrade. New versions often include new and modified options. By keeping configuration files from the previous version of Courier there's a risk that nothing will work any more, due to the absence of a new, required, configuration setting.

Thus came `sysconftool`. `sysconftool` is available to be used by any application that is packaged by autoconf, and automake. There's nothing in `sysconftool` itself that really ties it to autoconf and automake, it can be used just as well with a home-cooked configuration and installation script, except that you'll have to do some extra work by yourself.

## BRIEF OVERVIEW

The old way was to install a configuration file, `$sysconfdir/$filename`, in a straight manner. The new way is to install `$sysconfdir/$filename.dist`, and run the `sysconftool` script. The script reads `$filename.dist`, the existing `$filename` configuration file, then creates a new `$filename` configuration file that keeps the previous version's configuration, as long as it is compatible with the new version. This logic is driven by specially formatted keywords in `$filename.dist` that direct sysconftool which configuration settings from the previous version of the application are safe to keep.

A more detailed explanation of what `sysconftool` does, and why you might want to use it, can be found in the online version of `sysconftool`'s manual pages:

sysconftool(1)

sysconftool(7)

sysconftoolcheck(1)

## DOWNLOAD

The current version of `sysconftool` can be downloaded from `https://www.courier-mta.org/download.php#sysconftool`.

To source code for `sysconftool`, as tiny as it is, can also be grabbed from a public repository.

NOTE: As described in detail, the repository only includes `configure.in` and `Makefile.am`. All the other files (including `sysconftool`'s own `configure` script) must be generated by your `autoconf` and `automake`.

## FEEDBACK

`sysconftool` is such a minor utility that I don't think it needs to have an entire mailing list dedicated to `sysconftool's` existence. If needed, questions about `sysconftool` can be sent to the general courier-users mailing list. You should subscribe to this list first, most replies will not be CCed back to the sender.