diff options
Diffstat (limited to '')
-rw-r--r-- | find-contact-by-pgpkey.c | 64 |
1 files changed, 5 insertions, 59 deletions
diff --git a/find-contact-by-pgpkey.c b/find-contact-by-pgpkey.c index e8fbe8e..632cef3 100644 --- a/find-contact-by-pgpkey.c +++ b/find-contact-by-pgpkey.c @@ -1,62 +1,8 @@ /* See LICENSE file for copyright and license details. */ -#include "common.h" - -USAGE("[-c context] (-L | fingerprint)"); - - -int -main(int argc, char *argv[]) -{ - int list = 0; - struct passwd *user; - struct libcontacts_contact **contacts; - struct libcontacts_pgpkey **pgpkeys, *pgpkey; - char *context = NULL; - size_t i; - - ARGBEGIN { - case 'c': - if (context) - usage(); - context = ARG(); - break; - case 'L': - list = 1; - break; - default: - usage(); - } ARGEND; +#define CATEGORY pgpkeys - if (argc != 1 - list) - usage(); +#define LIST_PARAMS(X)\ + X('c', "c", context, "context") - errno = 0; - user = getpwuid(getuid()); - if (!user) - eprintf("getpwuid: %s\n", errno ? strerror(errno) : "user does not exist"); - - if (libcontacts_load_contacts(&contacts, user, 1)) - eprintf("libcontacts_load_contacts:"); - for (i = 0; contacts[i]; i++) { - if ((pgpkeys = contacts[i]->pgpkeys)) { - for (; (pgpkey = *pgpkeys); pgpkeys++) { - if (!pgpkey->id) - continue; - if (context && strcmpnul(pgpkey->context, context)) - continue; - if (list) - printf("%s (%s)\n", contacts[i]->id, pgpkey->id); - else if (!strcmp(pgpkey->id, argv[0])) - printf("%s\n", contacts[i]->id); - } - } - libcontacts_contact_destroy(contacts[i]); - free(contacts[i]); - } - free(contacts); - - if (fflush(stdout) || ferror(stdout) || fclose(stdout)) - eprintf("printf:"); - - return 0; -} +#include "common.h" +IMPLEMENT_FIND_ON_LIST(pgpkey, id, "fingerprint") |