From 9c45d9ad13fdf439d44d7443ae75da15ea0223ed Mon Sep 17 00:00:00 2001 From: Sam Varshavchik Date: Mon, 19 Aug 2013 16:39:41 -0400 Subject: Initial checkin Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy. --- gpglib/delete.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 gpglib/delete.c (limited to 'gpglib/delete.c') diff --git a/gpglib/delete.c b/gpglib/delete.c new file mode 100644 index 0000000..53943c9 --- /dev/null +++ b/gpglib/delete.c @@ -0,0 +1,77 @@ +/* +** Copyright 2001-2003 Double Precision, Inc. See COPYING for +** distribution information. +*/ + + +#include "config.h" +#include +#include +#include +#include +#include +#include +#include + +#include "gpg.h" +#include "gpglib.h" + +#include "unicode/unicode.h" +#include "numlib/numlib.h" + +extern int libmail_gpg_stdin, libmail_gpg_stdout, libmail_gpg_stderr; +extern pid_t libmail_gpg_pid; + + +/* +** Delete a key. +*/ + +static int dodeletekey(int (*)(const char *, size_t, void *), + void *); + +int libmail_gpg_deletekey(const char *gpgdir, int secret, + const char *fingerprint, + int (*dump_func)(const char *, size_t, void *), + void *voidarg) +{ + char *argvec[8]; + int rc; + + argvec[0]="gpg"; + argvec[1]="--command-fd"; + argvec[2]="0"; + argvec[3]= secret ? "--delete-secret-key":"--delete-key"; + argvec[4]="-q"; + argvec[5]="--no-tty"; + argvec[6]=(char *)fingerprint; + argvec[7]=0; + + if (libmail_gpg_fork(&libmail_gpg_stdin, &libmail_gpg_stdout, NULL, + gpgdir, argvec) < 0) + rc= -1; + else + { + int rc2; + + rc=dodeletekey(dump_func, voidarg); + rc2=libmail_gpg_cleanup(); + if (rc2) + rc=rc2; + } + return (rc); +} + +static int dodeletekey(int (*dump_func)(const char *, size_t, void *), + void *voidarg) +{ + int rc=libmail_gpg_write("Y\n", 2, dump_func, NULL, NULL, 0, voidarg); + int rc2; + + if (rc == 0) + rc=libmail_gpg_read(dump_func, NULL, NULL, 0, voidarg); + rc2=libmail_gpg_cleanup(); + if (rc == 0) + rc=rc2; + return (rc); +} -- cgit v1.2.3