From 21e71d1951192259502681df0f63e6de7254eca9 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 5 Apr 2021 23:48:03 +0200 Subject: m MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- TODO | 1 - find-contact-by-number.c | 18 +++++++-------- get-contact-emails.c | 2 +- get-contact-numbers.c | 54 +++++++++++++++++++++++++++++++++++++++------ get-contact-organisations.c | 2 +- get-contact-pgpkeys.c | 2 +- get-contact-sites.c | 2 +- 7 files changed, 60 insertions(+), 21 deletions(-) diff --git a/TODO b/TODO index 72da3fc..90e03e9 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,3 @@ -Add tools for checking context for contact info Add tools for .blocks Test find-contact-by-chat diff --git a/find-contact-by-number.c b/find-contact-by-number.c index e426c57..54827f4 100644 --- a/find-contact-by-number.c +++ b/find-contact-by-number.c @@ -1,7 +1,7 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" -USAGE("[-c context] [-C local-country-calling-code] [-D address-book-country-calling-code] [-F | -f] [-M | -m] [-t] (-L | number)"); +USAGE("[-a address-book-country-calling-code] [-l local-country-calling-code] [-c context] [-F | -f] [-M | -m] [-t] (-L | number)"); int @@ -11,24 +11,24 @@ main(int argc, char *argv[]) struct passwd *user; struct libcontacts_contact **contacts; struct libcontacts_number **numbers, *number; - char *context = NULL, *cc_contacts = NULL, *cc_location = NULL; + const char *context = NULL, *cc_contacts = NULL, *cc_location = NULL; size_t i; ARGBEGIN { - case 'c': - if (context) + case 'a': + if (cc_contacts) usage(); - context = ARG(); + cc_contacts = ARG(); break; - case 'C': + case 'l': if (cc_location) usage(); cc_location = ARG(); break; - case 'D': - if (cc_contacts) + case 'c': + if (context) usage(); - cc_contacts = ARG(); + context = ARG(); break; case 'F': if (require_fax >= 0) diff --git a/get-contact-emails.c b/get-contact-emails.c index 257326e..1e688f6 100644 --- a/get-contact-emails.c +++ b/get-contact-emails.c @@ -71,7 +71,7 @@ main(int argc, char *argv[]) } if (argc > 1) printf("%s: ", *argv); - if (display_ctx && display_addr) + if (!display_ctx == !display_addr) printf("%s: %s\n", email->context, email->address); else if (display_addr) printf("%s\n", email->address); diff --git a/get-contact-numbers.c b/get-contact-numbers.c index 0d9c02b..3b032ce 100644 --- a/get-contact-numbers.c +++ b/get-contact-numbers.c @@ -1,26 +1,44 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" -USAGE("[-c context] [-F | -f] [-M | -m] contact-id ..."); +USAGE("[-a address-book-country-calling-code] [-l local-country-calling-code] " + "[-c context] [-n number] [-F | -f] [-M | -m] [-CNT] contact-id ..."); int main(int argc, char *argv[]) { + int display_ctx = 0, display_num = 0, display_type = 0; int require_mobile = -1, require_fax = -1; struct passwd *user; struct libcontacts_contact contact; struct libcontacts_number **numbers, *number; - const char *lookup_ctx = NULL; + const char *lookup_ctx = NULL, *lookup_num = NULL; + const char *cc_contacts = NULL, *cc_location = NULL; int ret = 0; size_t i; ARGBEGIN { + case 'a': + if (cc_contacts) + usage(); + cc_contacts = ARG(); + break; + case 'l': + if (cc_location) + usage(); + cc_location = ARG(); + break; case 'c': if (lookup_ctx) usage(); lookup_ctx = ARG(); break; + case 'n': + if (lookup_num) + usage(); + lookup_num = ARG(); + break; case 'F': if (require_fax >= 0) usage(); @@ -41,6 +59,15 @@ main(int argc, char *argv[]) usage(); require_mobile = 1; break; + case 'C': + display_ctx = 1; + break; + case 'N': + display_num = 1; + break; + case 'T': + display_type = 1; + break; default: usage(); } ARGEND; @@ -48,6 +75,12 @@ main(int argc, char *argv[]) if (!argc) usage(); + if (!display_ctx && !display_num && !display_type) { + display_ctx = !lookup_ctx; + display_num = !lookup_num; + display_type = (require_mobile < 0 || require_fax < 0); + } + for (i = 0; argv[i]; i++) if (!*argv[i] || strchr(argv[i], '/')) usage(); @@ -73,13 +106,20 @@ main(int argc, char *argv[]) continue; if (lookup_ctx && strcmpnul(number->context, lookup_ctx)) continue; + if (lookup_num && !libcontacts_same_number(number->number, cc_contacts, lookup_num, cc_location)) + continue; if (argc > 1) printf("%s: ", *argv); - printf("%c%c", "-m"[number->is_mobile], "-f"[number->is_facsimile]); - if (!lookup_ctx) - printf(" %s (%s)\n", number->number, number->context); - else - printf(" %s\n", number->number); + if (display_type) { + printf("%c%c", "-m"[number->is_mobile], "-f"[number->is_facsimile]); + if (display_ctx || display_num) + printf(" "); + } + if (display_ctx) + printf("%s%s", number->context, display_num ? ": " : ""); + if (display_num) + printf("%s", number->number); + printf("\n"); } } libcontacts_contact_destroy(&contact); diff --git a/get-contact-organisations.c b/get-contact-organisations.c index 70feea5..ae236db 100644 --- a/get-contact-organisations.c +++ b/get-contact-organisations.c @@ -71,7 +71,7 @@ main(int argc, char *argv[]) } if (argc > 1) printf("%s: ", *argv); - if (display_org && display_title) + if (!display_org == !display_title) printf("%s: %s\n", org->organisation, org->title); else if (display_title) printf("%s\n", org->title); diff --git a/get-contact-pgpkeys.c b/get-contact-pgpkeys.c index 7935d17..97e32c7 100644 --- a/get-contact-pgpkeys.c +++ b/get-contact-pgpkeys.c @@ -71,7 +71,7 @@ main(int argc, char *argv[]) } if (argc > 1) printf("%s: ", *argv); - if (display_ctx && display_id) + if (!display_ctx == !display_id) printf("%s: %s\n", key->context, key->id); else if (display_id) printf("%s\n", key->id); diff --git a/get-contact-sites.c b/get-contact-sites.c index dcc1d17..a46eadc 100644 --- a/get-contact-sites.c +++ b/get-contact-sites.c @@ -71,7 +71,7 @@ main(int argc, char *argv[]) } if (argc > 1) printf("%s: ", *argv); - if (display_ctx && display_addr) + if (!display_ctx == !display_addr) printf("%s: %s\n", site->context, site->address); else if (display_addr) printf("%s\n", site->address); -- cgit v1.2.3-70-g09d2