/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: 2008-08-29 05:53:59 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080829055359-wkdasnyxtylmnxus
* mandos.xml (EXAMPLE): Replaced all occurences of command name with
                        "&COMMANDNAME;".

* plugins.d/password-prompt.c (main): Improved some documentation
                                      strings.  Do perror() of
                                      tcgetattr() fails.  Add debug
                                      output if interrupted by signal.
                                      Loop over write() instead of
                                      using fwrite() when outputting
                                      password.  Add debug output if
                                      getline() returns 0, unless it
                                      was caused by a signal.  Add
                                      exit status code to debug
                                      output.

* plugins.d/password-prompt.xml: Changed all single quotes to double
                                 quotes for consistency.  Removed
                                 <?xml-stylesheet>.
  (ENTITY TIMESTAMP): New.  Automatically updated by Emacs time-stamp
                      by using Emacs local variables.
  (/refentry/refentryinfo/title): Changed to "Mandos Manual".
  (/refentry/refentryinfo/productname): Changed to "Mandos".
  (/refentry/refentryinfo/date): New; set to "&TIMESTAMP;".
  (/refentry/refentryinfo/copyright): Split copyright holders.
  (/refentry/refnamediv/refpurpose): Improved wording.
  (SYNOPSIS): Fix to use correct markup.  Add short options.
  (DESCRIPTION, OPTIONS): Improved wording.
  (OPTIONS): Improved wording.  Use more correct markup.  Document
             short options.
  (EXIT STATUS): Add text.
  (ENVIRONMENT): Document use of "cryptsource" and "crypttarget".
  (FILES): REMOVED.
  (BUGS): Add text.
  (EXAMPLE): Added some examples.
  (SECURITY): Added text.
  (SEE ALSO): Remove reference to mandos(8).  Add reference to
              crypttab(5).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*  -*- coding: utf-8 -*- */
2
2
/*
3
 
 * Password-prompt - Read a password from the terminal and print it
4
 
 * 
5
 
 * Copyright © 2008,2009 Teddy Hogeborn
6
 
 * Copyright © 2008,2009 Björn Påhlsson
 
3
 * Passprompt - Read a password from the terminal and print it
 
4
 *
 
5
 * Copyright © 2007-2008 Teddy Hogeborn & Björn Påhlsson
7
6
 * 
8
7
 * This program is free software: you can redistribute it and/or
9
8
 * modify it under the terms of the GNU General Public License as
53
52
 
54
53
volatile bool quit_now = false;
55
54
bool debug = false;
56
 
const char *argp_program_version = "password-prompt " VERSION;
 
55
const char *argp_program_version = "password-prompt 1.0";
57
56
const char *argp_program_bug_address = "<mandos@fukt.bsnet.se>";
58
57
 
59
58
static void termination_handler(__attribute__((unused))int signum){
79
78
        .doc = "Debug mode", .group = 3 },
80
79
      { .name = NULL }
81
80
    };
82
 
    
 
81
  
83
82
    error_t parse_opt (int key, char *arg, struct argp_state *state) {
 
83
      /* Get the INPUT argument from `argp_parse', which we know is a
 
84
         pointer to our plugin list pointer. */
84
85
      switch (key) {
85
86
      case 'p':
86
87
        prefix = arg;
98
99
      }
99
100
      return 0;
100
101
    }
101
 
    
 
102
  
102
103
    struct argp argp = { .options = options, .parser = parse_opt,
103
104
                         .args_doc = "",
104
105
                         .doc = "Mandos password-prompt -- Read and"
109
110
      return EXIT_FAILURE;
110
111
    }
111
112
  }
112
 
  
 
113
    
113
114
  if (debug){
114
115
    fprintf(stderr, "Starting %s\n", argv[0]);
115
116
  }
215
216
      status = EXIT_SUCCESS;
216
217
      /* Make n = data size instead of allocated buffer size */
217
218
      n = (size_t)ret;
218
 
      /* Strip final newline */
219
 
      if(n>0 and buffer[n-1] == '\n'){
220
 
        buffer[n-1] = '\0';     /* not strictly necessary */
221
 
        n--;
222
 
      }
223
219
      size_t written = 0;
224
220
      while(written < n){
225
221
        ret = write(STDOUT_FILENO, buffer + written, n - written);
249
245
    }
250
246
  }
251
247
  
252
 
  free(buffer);
253
 
  
254
248
  if (debug){
255
249
    fprintf(stderr, "Restoring terminal attributes\n");
256
250
  }
262
256
    fprintf(stderr, "%s is exiting with status %d\n", argv[0],
263
257
            status);
264
258
  }
265
 
  if(status == EXIT_SUCCESS){
266
 
    fputc('\n', stderr);
267
 
  }
268
259
  
269
260
  return status;
270
261
}