/mandos/trunk

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

« back to all changes in this revision

Viewing changes to plugins.d/password-prompt.c

  • Committer: Teddy Hogeborn
  • Date: 2019-07-29 16:35:53 UTC
  • Revision ID: teddy@recompile.se-20190729163553-1i442i2cbx64c537
Make tests and man page examples match

Make the tests test_manual_page_example[1-5] match exactly what is
written in the manual page, and add comments to manual page as
reminders to keep tests and manual page examples in sync.

* mandos-ctl (Test_commands_from_options.test_manual_page_example_1):
  Remove "--verbose" option, since the manual does not have it as the
  first example, and change assertion to match.
* mandos-ctl.xml (EXAMPLE): Add comments to all examples documenting
  which test function they correspond to.  Also remove unnecessary
  quotes from option arguments in fourth example, and clarify language
  slightly in fifth example.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 
28
28
#include <termios.h>            /* struct termios, tcsetattr(),
29
29
                                   TCSAFLUSH, tcgetattr(), ECHO */
30
 
#include <unistd.h>             /* struct termios, tcsetattr(),
31
 
                                   STDIN_FILENO, TCSAFLUSH,
32
 
                                   tcgetattr(), ECHO, readlink() */
 
30
#include <unistd.h>             /* access(), struct termios,
 
31
                                   tcsetattr(), STDIN_FILENO,
 
32
                                   TCSAFLUSH, tcgetattr(), ECHO,
 
33
                                   readlink() */
33
34
#include <signal.h>             /* sig_atomic_t, raise(), struct
34
35
                                   sigaction, sigemptyset(),
35
36
                                   sigaction(), sigaddset(), SIGINT,
110
111
     from the terminal.  Password-prompt will exit if it detects
111
112
     plymouth since plymouth performs the same functionality.
112
113
   */
 
114
  if(access("/run/plymouth/pid", R_OK) == 0){
 
115
    return true;
 
116
  }
 
117
  
113
118
  __attribute__((nonnull))
114
119
  int is_plymouth(const struct dirent *proc_entry){
115
120
    int ret;
234
239
  struct termios t_new, t_old;
235
240
  char *buffer = NULL;
236
241
  char *prefix = NULL;
 
242
  char *prompt = NULL;
237
243
  int status = EXIT_SUCCESS;
238
244
  struct sigaction old_action,
239
245
    new_action = { .sa_handler = termination_handler,
243
249
      { .name = "prefix", .key = 'p',
244
250
        .arg = "PREFIX", .flags = 0,
245
251
        .doc = "Prefix shown before the prompt", .group = 2 },
 
252
      { .name = "prompt", .key = 129,
 
253
        .arg = "PROMPT", .flags = 0,
 
254
        .doc = "The prompt to show", .group = 2 },
246
255
      { .name = "debug", .key = 128,
247
256
        .doc = "Debug mode", .group = 3 },
248
257
      /*
261
270
    error_t parse_opt (int key, char *arg, struct argp_state *state){
262
271
      errno = 0;
263
272
      switch (key){
264
 
      case 'p':
 
273
      case 'p':                 /* --prefix */
265
274
        prefix = arg;
266
275
        break;
267
 
      case 128:
 
276
      case 128:                 /* --debug */
268
277
        debug = true;
269
278
        break;
 
279
      case 129:                 /* --prompt */
 
280
        prompt = arg;
 
281
        break;
270
282
        /*
271
283
         * These reproduce what we would get without ARGP_NO_HELP
272
284
         */
427
439
    if(prefix){
428
440
      fprintf(stderr, "%s ", prefix);
429
441
    }
430
 
    {
 
442
    if(prompt != NULL){
 
443
      fprintf(stderr, "%s: ", prompt);
 
444
    } else {
431
445
      const char *cryptsource = getenv("CRYPTTAB_SOURCE");
432
446
      const char *crypttarget = getenv("CRYPTTAB_NAME");
433
447
      /* Before cryptsetup 1.1.0~rc2 */