From 286a89da7c39333e0883c2050cf798905d48c4f5 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 21 Oct 2015 08:38:10 +0200 Subject: g13: First chunk of code to support dm-crypt. * g13/call-syshelp.c, g13/call-syshelp.h: New. * g13/g13-syshelp.c, g13/g13-syshelp.h: New. * g13/sh-cmd.c: New. * g13/sh-blockdev.c: New. * g13/sh-exectool.c: New. * g13/sh-dmcrypt.c: New. * g13/Makefile.am (sbin_PROGRAMS): Add g13-syshelp.c (g13_syshelp_SOURCES): New. (g13_syshelp_LDADD): New. * g13/g13.c (opts): Add option --type. (g13_deinit_default_ctrl): New. (main): Implement that option. Call g13_deinit_default_ctrl. * g13/g13.h (struct call_syshelp_s): New declaration. (server_control_s): Add field syshelp_local. * g13/keyblob.h (KEYBLOB_TAG_CREATED): New. (KEYBLOB_TAG_ALGOSTR): New. (KEYBLOB_TAG_HDRCOPY): New. * g13/backend.c (be_parse_conttype_name): New. (be_get_detached_name): Add CONTTYPE_DM_CRYPT. Signed-off-by: Werner Koch --- g13/g13.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'g13/g13.c') diff --git a/g13/g13.c b/g13/g13.c index 7a8d775ae..d9d40982a 100644 --- a/g13/g13.c +++ b/g13/g13.c @@ -43,6 +43,8 @@ #include "create.h" #include "mount.h" #include "mountinfo.h" +#include "backend.h" +#include "call-syshelp.h" enum cmd_and_opt_values { @@ -73,6 +75,7 @@ enum cmd_and_opt_values { oAgentProgram, oGpgProgram, + oType, oDisplay, oTTYname, @@ -114,6 +117,7 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_group (301, N_("@\nOptions:\n ")), ARGPARSE_s_s (oRecipient, "recipient", N_("|USER-ID|encrypt for USER-ID")), + ARGPARSE_s_s (oType, "type", N_("|NAME|use container format NAME")), ARGPARSE_s_s (oOutput, "output", N_("|FILE|write output to FILE")), ARGPARSE_s_n (oVerbose, "verbose", N_("verbose")), @@ -570,6 +574,19 @@ main ( int argc, char **argv) add_to_strlist (&recipients, pargs.r.ret_str); break; + case oType: + if (!strcmp (pargs.r.ret_str, "help")) + { + be_parse_conttype_name (NULL); + g13_exit (0); + } + cmdline_conttype = be_parse_conttype_name (pargs.r.ret_str); + if (!cmdline_conttype) + { + pargs.r_opt = ARGPARSE_INVALID_ARG; + pargs.err = ARGPARSE_PRINT_ERROR; + } + break; default: pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR; @@ -756,6 +773,8 @@ main ( int argc, char **argv) break; } + g13_deinit_default_ctrl (&ctrl); + if (!err) join_idle_task (); @@ -767,12 +786,20 @@ main ( int argc, char **argv) /* Store defaults into the per-connection CTRL object. */ void -g13_init_default_ctrl (struct server_control_s *ctrl) +g13_init_default_ctrl (ctrl_t ctrl) { ctrl->conttype = cmdline_conttype? cmdline_conttype : CONTTYPE_ENCFS; } +/* Release remaining resources allocated in the CTRL object. */ +void +g13_deinit_default_ctrl (ctrl_t ctrl) +{ + call_syshelp_release (ctrl); +} + + /* This function is called for each signal we catch. It is run in the main context or the one of a NPth thread and thus it is not restricted in what it may do. */ -- cgit v1.2.3