2005-04-19 Marcus Brinkmann <marcus@g10code.de>

* symcryptrun.c: Add --input option.
This commit is contained in:
Marcus Brinkmann 2005-04-19 12:00:29 +00:00
parent eff62d82bf
commit 92ee8d4886
2 changed files with 50 additions and 28 deletions

View File

@ -1,3 +1,7 @@
2005-04-19 Marcus Brinkmann <marcus@g10code.de>
* symcryptrun.c: Add --input option.
2005-04-15 Marcus Brinkmann <marcus@g10code.de> 2005-04-15 Marcus Brinkmann <marcus@g10code.de>
* symcryptrun.c (TEMP_FAILURE_RETRY): Define if not defined. * symcryptrun.c (TEMP_FAILURE_RETRY): Define if not defined.

View File

@ -124,6 +124,7 @@ enum cmd_and_opt_values
oKeyfile, oKeyfile,
oDecrypt, oDecrypt,
oEncrypt, oEncrypt,
oInput,
}; };
@ -132,23 +133,23 @@ static ARGPARSE_OPTS opts[] =
{ {
{ 301, NULL, 0, N_("@\nCommands:\n ") }, { 301, NULL, 0, N_("@\nCommands:\n ") },
{ oDecrypt, "decrypt", 0, N_("decryption modus")}, { oDecrypt, "decrypt", 0, N_("decryption modus") },
{ oEncrypt, "encrypt", 0, N_("encryption modus")}, { oEncrypt, "encrypt", 0, N_("encryption modus") },
{ 302, NULL, 0, N_("@\nOptions:\n ") }, { 302, NULL, 0, N_("@\nOptions:\n ") },
{ oClass, "class", 2, N_("tool class (confucius)")}, { oClass, "class", 2, N_("tool class (confucius)") },
{ oProgram, "program", 2, N_("program filename")}, { oProgram, "program", 2, N_("program filename") },
{ oKeyfile, "keyfile", 2, N_("secret key file (required)")},
{ oKeyfile, "keyfile", 2, N_("secret key file (required)") },
{ oInput, "inputfile", 2, N_("input file name (default stdin)") },
{ oVerbose, "verbose", 0, N_("verbose") }, { oVerbose, "verbose", 0, N_("verbose") },
{ oQuiet, "quiet", 0, N_("quiet") }, { oQuiet, "quiet", 0, N_("quiet") },
{ oLogFile, "log-file", 2, N_("use a log file for the server")}, { oLogFile, "log-file", 2, N_("use a log file for the server") },
{ oOptions, "options" , 2, N_("|FILE|read options from FILE")}, { oOptions, "options" , 2, N_("|FILE|read options from FILE") },
/* Hidden options. */ /* Hidden options. */
{ oNoVerbose, "no-verbose", 0, "@"}, { oNoVerbose, "no-verbose", 0, "@" },
{ oHomedir, "homedir", 2, "@" }, { oHomedir, "homedir", 2, "@" },
{ oNoOptions, "no-options", 0, "@" },/* shortcut for --options /dev/null */ { oNoOptions, "no-options", 0, "@" },/* shortcut for --options /dev/null */
@ -166,6 +167,7 @@ struct
char *class; char *class;
char *program; char *program;
char *keyfile; char *keyfile;
char *input;
} opt; } opt;
@ -755,22 +757,31 @@ confucius_main (int mode)
int res; int res;
char *tmpdir; char *tmpdir;
char *infile; char *infile;
int infile_from_stdin = 0;
char *outfile; char *outfile;
tmpdir = confucius_mktmpdir (); tmpdir = confucius_mktmpdir ();
if (!tmpdir) if (!tmpdir)
return 1; return 1;
/* TMPDIR + "/" + "in" + "\0". */ if (opt.input && !(opt.input[0] == '-' && opt.input[1] == '\0'))
infile = malloc (strlen (tmpdir) + 1 + 2 + 1); infile = xstrdup (opt.input);
if (!infile) else
{ {
log_error (_("cannot allocate infile string: %s\n"), strerror (errno)); infile_from_stdin = 1;
rmdir (tmpdir);
return 1; /* TMPDIR + "/" + "in" + "\0". */
infile = malloc (strlen (tmpdir) + 1 + 2 + 1);
if (!infile)
{
log_error (_("cannot allocate infile string: %s\n"),
strerror (errno));
rmdir (tmpdir);
return 1;
}
strcpy (infile, tmpdir);
strcat (infile, "/in");
} }
strcpy (infile, tmpdir);
strcat (infile, "/in");
/* TMPDIR + "/" + "out" + "\0". */ /* TMPDIR + "/" + "out" + "\0". */
outfile = malloc (strlen (tmpdir) + 1 + 3 + 1); outfile = malloc (strlen (tmpdir) + 1 + 3 + 1);
@ -784,14 +795,17 @@ confucius_main (int mode)
strcpy (outfile, tmpdir); strcpy (outfile, tmpdir);
strcat (outfile, "/out"); strcat (outfile, "/out");
/* Create INFILE and fill it with content. */ if (infile_from_stdin)
res = confucius_copy_file ("-", infile, mode == oEncrypt);
if (res)
{ {
free (outfile); /* Create INFILE and fill it with content. */
free (infile); res = confucius_copy_file ("-", infile, mode == oEncrypt);
rmdir (tmpdir); if (res)
return res; {
free (outfile);
free (infile);
rmdir (tmpdir);
return res;
}
} }
/* Run the engine and thus create the output file, handling /* Run the engine and thus create the output file, handling
@ -800,7 +814,8 @@ confucius_main (int mode)
if (res) if (res)
{ {
remove_file (outfile, mode == oDecrypt); remove_file (outfile, mode == oDecrypt);
remove_file (infile, mode == oEncrypt); if (infile_from_stdin)
remove_file (infile, mode == oEncrypt);
free (outfile); free (outfile);
free (infile); free (infile);
rmdir (tmpdir); rmdir (tmpdir);
@ -812,7 +827,8 @@ confucius_main (int mode)
if (res) if (res)
{ {
remove_file (outfile, mode == oDecrypt); remove_file (outfile, mode == oDecrypt);
remove_file (infile, mode == oEncrypt); if (infile_from_stdin)
remove_file (infile, mode == oEncrypt);
free (outfile); free (outfile);
free (infile); free (infile);
rmdir (tmpdir); rmdir (tmpdir);
@ -820,7 +836,8 @@ confucius_main (int mode)
} }
remove_file (outfile, mode == oDecrypt); remove_file (outfile, mode == oDecrypt);
remove_file (infile, mode == oEncrypt); if (infile_from_stdin)
remove_file (infile, mode == oEncrypt);
free (outfile); free (outfile);
free (infile); free (infile);
rmdir (tmpdir); rmdir (tmpdir);
@ -915,6 +932,7 @@ main (int argc, char **argv)
case oClass: opt.class = pargs.r.ret_str; break; case oClass: opt.class = pargs.r.ret_str; break;
case oProgram: opt.program = pargs.r.ret_str; break; case oProgram: opt.program = pargs.r.ret_str; break;
case oKeyfile: opt.keyfile = pargs.r.ret_str; break; case oKeyfile: opt.keyfile = pargs.r.ret_str; break;
case oInput: opt.input = pargs.r.ret_str; break;
case oLogFile: logfile = pargs.r.ret_str; break; case oLogFile: logfile = pargs.r.ret_str; break;