mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
g13: New option --no-mount.
* g13/g13.c (oNoMount): New. (opts): Add --no-mount. (main): Implement this. * g13/g13-common.h (opt): Add field no_mount. * common/status.h (STATUS_PLAINDEV): New. * g13/sh-cmd.c (has_option): Uncomment. (cmd_mount): Add option --no-mount and pass down. * g13/sh-dmcrypt.c (sh_dmcrypt_mount_container): Add arg nomount and emit PLAINDEV status line. (sh_dmcrypt_umount_container): Rund findmnt before umount. -- This option can be used to decrypt a device but not to mount it. For example to run fsck first. A command or option to run fsck before a mount will eventually be added. The use of findmnt is needed so that we can easily remove a device which has not been mounted.
This commit is contained in:
parent
4ca017e43b
commit
6233a17ac9
8 changed files with 76 additions and 43 deletions
30
g13/sh-cmd.c
30
g13/sh-cmd.c
|
@ -83,17 +83,17 @@ skip_options (const char *line)
|
|||
|
||||
|
||||
/* Check whether the option NAME appears in LINE. */
|
||||
/* static int */
|
||||
/* has_option (const char *line, const char *name) */
|
||||
/* { */
|
||||
/* const char *s; */
|
||||
/* int n = strlen (name); */
|
||||
static int
|
||||
has_option (const char *line, const char *name)
|
||||
{
|
||||
const char *s;
|
||||
int n = strlen (name);
|
||||
|
||||
/* s = strstr (line, name); */
|
||||
/* if (s && s >= skip_options (line)) */
|
||||
/* return 0; */
|
||||
/* return (s && (s == line || spacep (s-1)) && (!s[n] || spacep (s+n))); */
|
||||
/* } */
|
||||
s = strstr (line, name);
|
||||
if (s && s >= skip_options (line))
|
||||
return 0;
|
||||
return (s && (s == line || spacep (s-1)) && (!s[n] || spacep (s+n)));
|
||||
}
|
||||
|
||||
|
||||
/* Helper to print a message while leaving a command. */
|
||||
|
@ -431,10 +431,11 @@ cmd_getkeyblob (assuan_context_t ctx, char *line)
|
|||
|
||||
|
||||
static const char hlp_mount[] =
|
||||
"MOUNT <type>\n"
|
||||
"MOUNT [--no-mount] <type>\n"
|
||||
"\n"
|
||||
"Mount an encrypted partition on the current device.\n"
|
||||
"<type> must be \"dm-crypt\" for now.";
|
||||
"<type> must be \"dm-crypt\" for now. Option --no-mount\n"
|
||||
"stops right before calling the mount command.\n";
|
||||
static gpg_error_t
|
||||
cmd_mount (assuan_context_t ctx, char *line)
|
||||
{
|
||||
|
@ -443,6 +444,9 @@ cmd_mount (assuan_context_t ctx, char *line)
|
|||
unsigned char *keyblob = NULL;
|
||||
size_t keybloblen;
|
||||
tupledesc_t tuples = NULL;
|
||||
int nomount;
|
||||
|
||||
nomount = has_option (line, "--no-mount");
|
||||
|
||||
line = skip_options (line);
|
||||
|
||||
|
@ -493,7 +497,7 @@ cmd_mount (assuan_context_t ctx, char *line)
|
|||
|
||||
err = sh_dmcrypt_mount_container (ctrl,
|
||||
ctrl->server_local->devicename,
|
||||
tuples);
|
||||
tuples, nomount);
|
||||
|
||||
leave:
|
||||
destroy_tupledesc (tuples);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue