From 446e47937737980f6757134b77267bd83a69f066 Mon Sep 17 00:00:00 2001 From: ache Date: Tue, 5 Feb 2019 19:16:42 +0100 Subject: Add config file management --- readConfig.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 readConfig.c (limited to 'readConfig.c') diff --git a/readConfig.c b/readConfig.c new file mode 100644 index 0000000..94aecc7 --- /dev/null +++ b/readConfig.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include "config.h" + +config_t config = { .SMS_INBOX = "/var/spool/sms/inbox/", + .SMS_SENTBOX = "/var/spool/sms/sent/", + .SMS_OUTBOX = "/var/spool/sms/inbox/", + .MMS_DIR = "", + .CONTACT_FILENAME = "/var/spool/sms/contacts.csv"}; + +const char* search_key[]= {"SMS_INBOX", "SMS_SENTBOX", "SMS_OUTBOX", "CONTACT_FILENAME", "MMS_DIR"}; + +int searchConfigFile(char* configFile) { + // Search a config file. + // First then in the home, then in /etc and finaly in /var. + // In debug mode, this function search in ./fixtures + + strcpy(configFile, "/home/ache/.mesmsrc"); + + return 0; +} +int readConfigFile(void) { + char fileName[256] = ""; + +#ifdef DEBUG + fprintf(stderr, "ReadConfig\n"); +#endif + + if( searchConfigFile(fileName) > 0 ) { + return 1; + } + + FILE* file = fopen(fileName, "r"); + char line[300] = ""; + + if( file ) { + while(fgets(line, 300, file) != NULL) { + int elem = -1; + for( int i = 0 ; i < sizeof search_key / sizeof *search_key ; i++) { + if( strncmp(line, search_key[i], strlen(search_key[i])) == 0 ) { + elem = i; + break; + } + } + if(elem >= 0) { + strtok(line, "\""); +#ifdef DEBUG + fprintf(stderr, "%s is \"%s\"\n", search_key[elem], strtok(NULL, "\"") ); +#endif + } + } + } +#ifdef DEBUG + else { + fprintf(stderr, "Error reading config file [%s]\n", fileName); + } +#endif +} -- cgit v1.2.3