diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /gpglib/delete.c | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'gpglib/delete.c')
| -rw-r--r-- | gpglib/delete.c | 77 | 
1 files changed, 77 insertions, 0 deletions
| 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	<stdio.h> +#include	<stdlib.h> +#include	<string.h> +#include	<unistd.h> +#include	<sys/types.h> +#include	<sys/stat.h> +#include	<sys/time.h> + +#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); +} | 
