cmd: Add support for pulling options from files
authorSimon Wilkinson <sxw@your-file-system.com>
Sun, 9 Oct 2011 00:20:57 +0000 (01:20 +0100)
committerDerrick Brashear <shadow@dementix.org>
Sat, 12 May 2012 01:49:07 +0000 (18:49 -0700)
commit0f30c95a03ecf2a964db566fd8c3e96c1bcb6211
treecac0876f26d58d226bb21cb7e859276bc9c02f99
parentad347dea3245b84c4478b6a6be01b4031c3c36e0
cmd: Add support for pulling options from files

With this change, we gain the ability to set our command line options
from krb5.conf configuration files. This is only available for tools
which are implemented using the new cmd_OptionAs accessor methods.

Callers should load their configuration file using
    cmd_OpenConfigFile("/path/to/config/file.conf");

(an addition to libauth to return a path to a system wide
 configuration file will be forthcoming)

and then set their command name (for example, "fileserver", "afsd",
"vos" and so on) using
    cmd_SetCommandName("mycommand");

The accessor functions will then populate their return values with
either:
  a) The command line options, if specified
  b) The contents of the tag matching the option name, in the
     [command_subcommand] section of the configuration file, if it
     exists
  c) The contents of the same tag, in the [command] section of the
     configuration file, if it that exists.
  d) The contents of the same tag in the [defaults] section of the
     configuration file.

Callers can also gain access to the entire configuration file by
calling cmd_RawFile, or to just the section corresponding to their
command line by calling cmd_RawSection. Note that when using the file
directly, it is up to callers to preserve consistency by implementing
similar inheritance rules as the above.

Change-Id: Ic501ab296af3638f961486869af79c9ce47b77b8
Reviewed-on: http://gerrit.openafs.org/7135
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/butc/Makefile.in
src/cmd/Makefile.in
src/cmd/cmd.c
src/cmd/cmd.p.h
src/venus/test/Makefile.in
tests/cmd/command-t.c
tests/cmd/test1.conf [new file with mode: 0644]