From fa88a28e46b7ac2d3dcd1938e5e4708157d08b22 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 12 Apr 2021 13:37:59 +0200 Subject: Deduplicate code and make some small improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- find-contact-by-site.c | 64 ++++---------------------------------------------- 1 file changed, 5 insertions(+), 59 deletions(-) (limited to 'find-contact-by-site.c') diff --git a/find-contact-by-site.c b/find-contact-by-site.c index 616a828..b19c027 100644 --- a/find-contact-by-site.c +++ b/find-contact-by-site.c @@ -1,62 +1,8 @@ /* See LICENSE file for copyright and license details. */ -#include "common.h" - -USAGE("[-c context] (-L | address)"); - - -int -main(int argc, char *argv[]) -{ - int list = 0; - struct passwd *user; - struct libcontacts_contact **contacts; - struct libcontacts_site **sites, *site; - 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 sites - 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 ((sites = contacts[i]->sites)) { - for (; (site = *sites); sites++) { - if (!site->address) - continue; - if (context && strcmpnul(site->context, context)) - continue; - if (list) - printf("%s (%s)\n", contacts[i]->id, site->address); - else if (!strcmp(site->address, 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(site, address, "address") -- cgit v1.2.3-70-g09d2