From 9b81bd9478e242795e65f2d646b8b8eb123c5c5f Mon Sep 17 00:00:00 2001 From: ache Date: Sun, 10 Feb 2019 23:52:06 +0100 Subject: Implement circular search --- contactList.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'contactList.c') diff --git a/contactList.c b/contactList.c index 728cade..b40f3d4 100644 --- a/contactList.c +++ b/contactList.c @@ -44,11 +44,22 @@ void sortContacts(void) { qsort(contactList, nbContacts, sizeof *contactList, cmpContact); } -int findContactFromName(const char* name, contact** out) { +int findContactFromName(const char* name, contact** out, contact* from) { + int I = 0; + + if( from ) + I = from - contactList; + if( !name || !out || !*name) return 1; - for(int i = 0 ; i < nbContacts ; i++) { + for(int i = I+1 ; i < nbContacts ; i++) { + if( strcasestr(contactList[i].display_name, name) ) { + *out = contactList+i; + return 0; + } + } + for(int i = 0 ; i <= I ; i++) { if( strcasestr(contactList[i].display_name, name) ) { *out = contactList+i; return 0; @@ -56,7 +67,6 @@ int findContactFromName(const char* name, contact** out) { } return 2; } - int addContact(const contact* cnct) { nbContacts++; contactList = realloc(contactList, nbContacts * sizeof *contactList); -- cgit v1.2.3