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