/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to README

Convert some programs to use the exit codes from <sysexits.h>.  Change
all programs using the "argp" parsing functions to use them correctly;
checking return value, using argp_error() to report parse errors etc.

* plugin-runner.c: Use <sysexits.h> exit codes.  Always use fallback,
                   even on option errors, except for "--help", etc.
  (getplugin): Make sure "errno" is set correctly on return.
  (main): Declare our own "--help", "--usage", and "--version"
          options which do not cause the fallback to be invoked.
          In all other options, use fallback on any error.
  (parse_opt, parse_opt_config_file): Reset errno at start and return
                                      errno.  No need to check "arg"
                                      for NULL.  New "--help",
                                      "--usage", and "--version"
                                      options.
  (parse_opt): Accept empty string as global option.  Do not print
               errors which will be detected and reported later.  Do
               "argp_error()" on parse error or empty plugin names.
* plugins.d/mandos-client.c: Use <sysexits.h> exit codes.  Do not
                             return successful exit code on "--help",
                             etc. since this would give the wrong
                             message to "plugin-runner".
  (main): Declare our own "--help", "--usage", and "--version"
          options which do not return a successful exit code.
  (parse_opt): Reset errno at start and return errno.  Do
               "argp_error()" on parse errors.  New "--help",
               "--usage", and "--version" options.
* plugins.d/password-prompt.c: Use exit codes from <sysexits.h>.  Do
                               not return successful exit code on
                               "--help", etc. since this would give
                               the wrong message to "plugin-runner".
  (main): Declare our own "--help", "--usage", and "--version" options
          which do not return a successful exit code.  Do
          close(STDOUT_FILENO) after writing to check its return code.
  (parse_opt): Reset errno at start and return errno.

Show diffs side-by-side

added added

removed removed

Lines of Context:
134
134
  In the early designs, the mandos-client(8mandos) program (which
135
135
  retrieves a password from the Mandos server) also prompted for a
136
136
  password on the terminal, in case a Mandos server could not be
137
 
  found.  This duality of purpose was seen to be too complex to be a
138
 
  viable way to continue.  Instead, the programs are now separated
139
 
  into mandos-client(8mandos) and password-prompt(8mandos), and a
140
 
  plugin-runner(8mandos) exist to run them both in parallel, allowing
141
 
  the first plugin to succeed to provide the password.  This opened up
142
 
  for any number of additional plugins to run, all competing to be the
143
 
  first to find a password and provide it to the plugin runner.
 
137
  found.  Other ways of retrieving a password could easily be
 
138
  envisoned, but this multiplicity of purpose was seen to be too
 
139
  complex to be a viable way to continue.  Instead, the original
 
140
  program was separated into mandos-client(8mandos) and
 
141
  password-prompt(8mandos), and a plugin-runner(8mandos) exist to run
 
142
  them both in parallel, allowing the first successful plugin to
 
143
  provide the password.  This opened up for any number of additional
 
144
  plugins to run, all competing to be the first to find a password and
 
145
  provide it to the plugin runner.
144
146
  
145
147
  Three additional plugins are provided:
146
148
  * usplash(8mandos)
152
154
    cryptsetup, this plugin listens to the same FIFO as askpass would
153
155
    do.
154
156
  
155
 
  (None of these take any options or reads any files.)
156
 
  
157
 
  More plugins could easily be written and added by the system
 
157
  More plugins can easily be written and added by the system
158
158
  administrator; see the section called "WRITING PLUGINS" in
159
159
  plugin-runner(8mandos) to learn the plugin requirements.
160
160