/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-31 14:00:36 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080831140036-5bruinjq267s5f8p
* mandos-clients.conf.xml: Changed all single quotes to double quotes
                           for consistency.
* mandos.conf.xml: - '' -
* plugin-runner.xml: - '' -
* plugins.d/password-request.xml: - '' -

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
}