1
1
/* -*- coding: utf-8 -*- */
3
* Usplash - Read a password from usplash and output it
3
* Plymouth - Read a password from Plymouth and output it
5
5
* Copyright © 2010 Teddy Hogeborn
6
6
* Copyright © 2010 Björn Påhlsson
77
77
const char *const cryptsource = getenv("cryptsource");
78
78
const char *const crypttarget = getenv("crypttarget");
79
const char prompt_start[] = "Enter passphrase to unlock the disk";
79
const char prompt_start[] = "Unlocking the disk";
80
const char prompt_end[] = "Enter passphrase";
81
82
if(cryptsource == NULL){
82
83
if(crypttarget == NULL){
83
ret = asprintf(&prompt, "%s: ", prompt_start);
84
ret = asprintf(&prompt, "%s\n%s", prompt_start, prompt_end);
85
ret = asprintf(&prompt, "%s (%s): ", prompt_start,
86
ret = asprintf(&prompt, "%s (%s)\n%s", prompt_start,
87
crypttarget, prompt_end);
89
90
if(crypttarget == NULL){
90
ret = asprintf(&prompt, "%s %s: ", prompt_start, cryptsource);
91
ret = asprintf(&prompt, "%s %s\n%s", prompt_start, cryptsource,
92
ret = asprintf(&prompt, "%s %s (%s): ", prompt_start,
93
cryptsource, crypttarget);
94
ret = asprintf(&prompt, "%s %s (%s)\n%s", prompt_start,
95
cryptsource, crypttarget, prompt_end);
146
148
char **new_argv = NULL;
149
for (; argv[i]!=(char *)NULL; i++){
151
for (; argv[i]!=NULL; i++){
150
152
tmp = realloc(new_argv, sizeof(const char *) * ((size_t)i + 1));
151
153
if (tmp == NULL){
152
154
error(0, errno, "realloc");
156
new_argv = (char **)tmp;
157
159
new_argv[i] = strdup(argv[i]);
159
new_argv[i] = (char *) NULL;
161
163
execv(path, (char *const *)new_argv);
162
164
error(0, errno, "execv");