diff options
-rw-r--r-- | contactList.c | 13 | ||||
-rw-r--r-- | contactList.h | 8 | ||||
-rw-r--r-- | main.c | 26 | ||||
-rw-r--r-- | main.h | 1 |
4 files changed, 46 insertions, 2 deletions
diff --git a/contactList.c b/contactList.c index 85369a9..dd655ca 100644 --- a/contactList.c +++ b/contactList.c @@ -25,6 +25,19 @@ void selectPreviousContact(void) { clearContactListW(); } +int findContact(const char* number, contact** out) { + if( !number || !out ) + return 1; + + for(int i = 0 ; i < nbContacts ; i++) { + if( !strcmp(number, contactList[i].number) ) { + *out = contactList+i; + return 0; + } + } + return 2; +} + void clearContactListW(void) { for(int i = firstConctactShow; i < h_menuContact && i < nbContacts; i++) { move(y_menuContact+i,x_menuContact); diff --git a/contactList.h b/contactList.h index 12d69ed..5857c2f 100644 --- a/contactList.h +++ b/contactList.h @@ -12,6 +12,7 @@ typedef struct contact { int hasNewMessage; } contact ; +#define DEFAULT_CONTACT_FILENAME "/usr/share/sms/contact.csv" @@ -24,6 +25,13 @@ int fillContactList(char* cvs_file_in); // Return: 0 if success, >0 if error int writeContactList(char* cvs_file_in); +// Find a contact +// Params: A SIM Number +// Return: 0 if success, >0 otherwise +int findContact(const char*, contact**); + + + // Add a contact // Params: A contact struct // Return: 0 if success, >0 otherwise @@ -58,11 +58,12 @@ int main(int argc, char* argv[]){ static struct option optlv[] = { {"help", no_argument, 0, 'h' }, {"version", no_argument, 0, 'v' }, + {"contact", required_argument, 0, 'c' }, {NULL, 0, 0, 0 } }; - c = getopt_long(argc, argv, "hv:", optlv, &optIndex); + c = getopt_long(argc, argv, "hvc:", optlv, &optIndex); if (c == -1) break; @@ -78,6 +79,27 @@ int main(int argc, char* argv[]){ return EXIT_SUCCESS; break; + case 'c': + if( optarg ) { + int r = 0; + if( r = fillContactList(DEFAULT_CONTACT_FILENAME) ) { + fprintf(stderr, "Erreur à la lecture de la liste des contacts"); + return r; + } + contact* contact = NULL; + + if( r = findContact(optarg, &contact) ) { + fprintf(stderr, "Numéro de téléphone inconnue"); + printf("%s",optarg); + return r; + } + printf("%s", contact->display_name); + return 0; + } else { + fprintf(stderr, "Numéro de téléphone manquant"); + } + break; + case '?': default: return EXIT_FAILURE; @@ -117,7 +139,7 @@ int main(int argc, char* argv[]){ init_readline(); int r = 0; - if( r = fillContactList("contact.csv") ) { + if( r = fillContactList(DEFAULT_CONTACT_FILENAME) ) { return r; } @@ -30,6 +30,7 @@ void fail_exit(const char *msg); + // Checks errors for (most) ncurses functions. CHECK(fn, x, y, z) is a checked // version of fn(x, y, z). #define CHECK(fn, ...) \ |